본문 바로가기
AI/Contents

Ollama를 활용한 VScode 로 Local GithubCopilot 만들기 - (3)

by AI미남홀란드 2024. 2. 15.
728x90

 

Code llama

 

 

Ollama를 활용한 아이폰으로 Ondevice AI 구축하기

안녕하세요 Simon 입니다. On-device AI 시대가 열리면서 삼성의 갤럭시 스마트폰은 AI 를 넣어서 출시가 되고 있고, 아마 최근에 막말로 유명한 샘알트만이 그리는 반도체 시장의 생태계 또한 모든

wiz-tech.tistory.com

 

 

Ollama를 활용한 맥북 Github Copilot 구축하기 - (2)

Ollama를 활용한 아이폰으로 Ondevice AI 구축하기 안녕하세요 Simon 입니다. On-device AI 시대가 열리면서 삼성의 갤럭시 스마트폰은 AI 를 넣어서 출시가 되고 있고, 아마 최근에 막말로 유명한 샘알트

wiz-tech.tistory.com

 

안녕하세요 이번에는 Ollama를 활용해서 2탄에 mac 의 장점을 살려서 어플리케이션 GPT를 만들었다면 이번에 개발자들을 위해서 VScode 에 IDE 를 활용해서 Copilot의 형태로 만들어보려고 합니다.

 

깃허브 코파일럿이란?

 

깃허브 코파일럿(GitHub Copilot)은 개발자들이 코드를 더 빠르고 효율적으로 작성할 수 있도록 돕는 인공지능 기반의 코드 생성 및 자동 완성 도구입니다. 이 도구는 오픈AI(OpenAI)의 강력한 인공지능 모델을 기반으로 하며, 주석이나 코드의 일부를 바탕으로 전체 코드를 예측하고 제안합니다. 코파일럿은 다양한 프로그래밍 언어를 지원하며, 개발자가 코드를 작성할 때 실시간으로 함수, 변수, 알고리즘 등을 제안하여 개발 과정을 가속화합니다.

깃허브 코파일럿은 대규모 코드베이스에서 학습되었기 때문에, 다양한 코딩 패턴과 스타일을 이해하고 있습니다. 이를 통해 개발자는 보다 적은 시간과 노력으로 코드를 작성하고, 버그를 줄이며, 생산성을 향상시킬 있습니다.

 

github Copilot

 

 

 

Code LLaMA란?

 

코드 라마(Code Llama) 메타(Meta)에서 개발한 최신 대형 언어 모델(LLM), 코드 생성에 특화되어 있습니다. 모델은 코드 자연어 프롬프트로부터 코드와 코드에 대한 자연어를 생성할 있는 능력을 갖추고 있으며, 코드 완성 디버깅에도 사용될 있습니다. 코드 라마는 파이썬(Python), C++, 자바(Java), PHP, 타입스크립트(Typescript, 자바스크립트의 종류), C#, 바시(Bash) 같이 현재 가장 널리 사용되는 여러 인기 프로그래밍 언어를 지원합니다. 코드 라마는 Llama 2를 기반으로 하여, 코드 특화 데이터셋에서 추가 학습을 통해 생성되었습니다. 이 모델은 코드 작업에 대해 현재 공개된 다른 LLM보다 우수한 성능을 보여주며, 개발자들이 보다 효율적인 워크플로우를 구축하고 코딩을 배우는 사람들에게 접근성을 낮추는 데 도움이 될 수 있는 잠재력을 가지고 있습니다.

 

 

 

 

Introducing Code Llama, a state-of-the-art large language model for coding

Code Llama is a code-specialized version of Llama 2 that was created by further training Llama 2 on its code-specific datasets, sampling more data from that same dataset for longer. Essentially, Code Llama features enhanced coding capabilities, built on to

ai.meta.com

 

 

Ollama 를 활용해서 Vscode에서 Copilot처럼 활용하기

1.  환경에 맞는 ollama 다운로드하기 (MacOS, Windows, Linux)

- 추가적으로 Docker 가상환경에서도 사용은 가능합니다. (현재 링크 Not Found)

 

Download Ollama on macOS

Download Ollama on macOS

ollama.com

 

 

 

GitHub - ollama/ollama: Get up and running with Llama 2, Mistral, and other large language models.

Get up and running with Llama 2, Mistral, and other large language models. - ollama/ollama

github.com

 

 

ollama run codellama #코드라마 7B
ollama run codellama:34b #코드라마 34B

코드라마34B

 

저는 Test를 위해 이전에 7B로 다운로드하였고 이번엔 34B 모델로 다운로드를 시도했습니다.

 

34B 모델은 32기가 정도의 용량을 차지하니 주의해주세요.

 

위 링크에는 코드라마를 조금 더 자세하게 사용할 수 있도록 정리를 해두었습니다

 

How to prompt Code Llama · Ollama Blog

This guide walks through the different ways to structure prompts for Code Llama and its different variations and features including instructions, code completion and fill-in-the-middle (FIM).

ollama.com

 

Two weeks ago the Code Llama model was released by Meta with three variations:
- InstructCode
- completion
- Python
  • 지시(Instruct): 이 변형은 인간과 같은 답변을 출력하도록 훈련되었습니다. 가장 사용하기 쉬우며 ChatGPT와 가장 유사하게 동작합니다. 자연어와 코드를 포함한 답변을 제공합니다.
    • 프롬프트: 단순하고 간결한 코드와 설명을 작성하는 전문 프로그래머입니다. n번째 피보나치 수를 생성하는 파이썬 함수를 작성하세요.
    • 응답: n번째 피보나치 수를 생성하는 파이썬 함수 예시 코드.
  • 코드 완성(Code Completion): 이 모델 변형은 제공된 프롬프트에 기반하여 후속 토큰을 생성합니다. 함수 서명이나 주석을 본 후 모델이 함수를 작성하게 하려는 경우에 가장 잘 작동합니다.
    • 프롬프트: 문자열에서 공백을 제거하는 간단한 파이썬 함수:
    • 응답: 공백을 제거하는 함수 코드.
  • 파이썬(Python): 코드 라마의 저자들이 커뮤니티와 모델을 만드는 사용된 도구에 감사의 의미로 포함한 변형으로, 추가적인 100B 파이썬 토큰에 미세 조정되어 있어, 기계 학습 관련 도구나 다른 파이썬 코드 작업에 유용합니다.
    • 프롬프트: 템플릿 없이 현재 날짜와 시간을 렌더링하는 장고 뷰:
    • 응답: 현재 날짜와 시간을 렌더링하는 장고 뷰 함수 코드.

또한, 코드 라마는 코드 리뷰와 유닛 테스트 작성을 돕는 데에도 사용될 있으며, 특별한 프롬프트 형식인 "Fill-in-the-middle (FIM)" 지원하여 기존 함수 내에 코드를 삽입하는 효과적입니다.

 

2.  Ollama를 활용한 VScode 연결

Continue 란?

 

Continue는 VS Code와 JetBrains를 위한 오픈 소스 자동 조종 장치로, 어떤 LLM(대규모 언어 모델)과도 함께 코딩하는 가장 쉬운 방법을 제공하는 프로젝트입니다. 이 도구는 다음과 같은 기능을 제공합니다:

  • 작업, 탭 자동 완성: 코드 작성 시 자동 완성 기능을 제공하여 개발자의 작업을 용이하게 합니다.
  • 코딩 질문에 대한 답변 제공: 코드의 특정 부분을 강조 표시하고 Continue에 다른 관점을 요청함으로써, 코딩 관련 질문에 대한 답변을 얻을 수 있습니다.
  • 자연어로 코드 편집: 코드의 특정 섹션을 강조 표시하고 Continue에게 리팩토링을 지시할 수 있습니다.
  • 스크래치부터 파일 생성: 새로운 파이썬 스크립트, 리액트 컴포넌트 등을 시작할 Continue 사용하여 파일을 생성할 있습니다.
 

GitHub - continuedev/continue: ⏩ The easiest way to code with any LLM—Continue is an open-source autopilot for VS Code and J

⏩ The easiest way to code with any LLM—Continue is an open-source autopilot for VS Code and JetBrains - continuedev/continue

github.com

 

 

설치를 누르시면 됩니다.

 

Continue

 

🔑 Most important shortcuts

Cmd/Ctrl + M = Select code
Cmd/Ctrl + Shift + M = Select code for follow-up
Cmd/Ctrl + Shift + L = Quick edit
Cmd/Ctrl + Shift + R = Automatically debug terminal

 

  • Cmd/Ctrl + M: 코드 선택. 이 단축키는 개발자가 현재 작업 중인 코드의 특정 부분을 빠르게 선택할 수 있게 해줍니다.
  • Cmd/Ctrl + Shift + M: 후속 작업을 위한 코드 선택. 이 단축키는 선택한 코드에 대해 추가 작업이나 분석을 계획할 때 유용합니다.
  • Cmd/Ctrl + Shift + L: 빠른 편집. 이 단축키를 사용하면 개발자는 강조 표시된 코드 부분에 대해 신속하게 수정이나 리팩토링을 수행할 수 있습니다.
  • Cmd/Ctrl + Shift + R: 자동 디버그 터미널. 단축키는 개발자가 코드의 버그를 자동으로 식별하고 해결하는 도움을 줍니다.

 

아래의 톱니바퀴 버튼을 누르고

Codellama-34b

 

{
      "title": "Codellama-34b",
      "provider": "ollama",
      "model": "codellama:34b"
    }

 

위코드를 그대로 입력을 해줍니다. 현재 Free-trial 은 일정기간 동안 무료로 쓸 수 있다고 하는데 아마도 API key 를 따로 추가해줘야 할 듯 합니다. 써보시고 알려주세요!

 

api

문서를 조금 찾아보니 역시 API 를 입력해야합니다 몽땅 삭제해버립니다.! 우린코드라마를 쓸 생각입니다.

 

3. Continue 로 코드 작성하기

피보나치 수열 작성하기 (vs Copilot)

 

Continue(무료)

Continue 예제

 

Copilot(유료)

Copilot 예제

 

둘다 코드를 잘 짜주었습니다. 아무래도 Copilot은 매월 구독해서 쓰는만큼 UI 가 깔끔해보이는건 사실입니다. 속도 또한 더 빠르기도 합니다. 그러나 코드라마를 써도 충분히 잘 나오는 모습입니다.

 

Ardunio Ethernet 통신코드 작성 (vs Copilot)

 

Continue(무료)

 

 

Copilot(유료)

 

코드자체는 github Copilot 이 조금더 Detail 있게 생성해주는 듯 합니다. 혹시나 하고 마이크로파이썬에서 쓴다고하니깐.. 위즈네트가 나왔습니다 신기하네요. 그러나 무료인걸 감안하면 Code LLaMA 도 훌륭하게 범용적인 코드를 생성해줍니다. 70B 모델이 지원이 된다면 또 모르겠습니다. 말그대로 GPT vs LLaMA를 보는 느낌이네요.

 

다른 명령어 활용하기 

Command (Ctrl ) + Shift + L (드래그 후 지정해서 코드블럭 수정)

 

수정이 되는 모습입니다.

 

Ask Continue,  Quick Fix

 

 

 

이렇게 코드블락에 빨간줄이라던지 노란줄 이 그어져있는건 문제가 있는건데 마우스를 가져다대고 Cmd + . 을 누르면 버튼이 뜹니다. 그럼 Ask Continue 라는 창이 뜨고 누르면 코드가 수정이 됩니다.

 

Select Code Add Highlighted Code to Context

 

말 그대로 코드 블락을 선택하고 오른쪽마우스를 누르면 창이뜨고 저렇게 Context 대화창으로 코드블락이 이동되서 이 코드블락에 대한 질의를 할 수 있게 됩니다.

 

이렇게 코드라마를 활용한 코드 생성 및 디버깅이 가능합니다. 사실 저는 코파일럿이 너무 익숙해져서 코파일럿을 쓰려고 합니다. 근데 70B가 나온다면 또 모를것 같습니다. 성능 또한 좋다하고 길게 추론이 가능하다는점이 70B의 장점인데 Ollama 에서는 비교적 ChatGPT 의 형태가 아니기 때문에 길게 output 이 나온다는 느낌이 들었습니다. 이것으로 Ollama 를 활용해서 코파일럿 구축하기를 마치겠습니다

 

728x90