Code Llama 프롬프트 가이드

Meta의 Code Llama는 세 가지 주요 변형—Instruct, 코드 완성, Python—으로 제공되며, 각각은 효과를 극대화하기 위해 다른 프롬프트 전략을 필요로 합니다. 이러한 차이점을 이해하면 개발자들은 자연어 상호작용에서부터 정밀한 코드 보완에 이르기까지 다양한 작업에 모델을 활용할 수 있습니다.

Code Llama Instruct: 자연어 상호작용

instruct 모델은 질문에 인간처럼 답변할 수 있도록 설계되었으며, 자연어 설명과 코드 블록을 결합합니다. 이는 가장 접근성이 높은 변형으로, 대화형 AI와 유사하게 작동합니다.

코드 생성 및 설명

Instruct 모델은 자연어 요청에 기반해 함수를 생성할 수 있습니다. 예를 들어, n번째 피보나치 수를 계산하는 파이썬 함수를 요청하면, 모델은 구현 코드와 함께 사용된 재귀 공식에 대한 간단한 설명을 제공합니다.

코드 리뷰 및 버그 탐지

Code Llama Instruct는 커밋이나 풀 리퀘스트에 대한 보조 리뷰어 역할을 할 수 있으며, 간단한 버그를 식별할 수 있습니다. 오류가 있는 함수를 제공하면, 모델은 특정 입력 사례(예: n이 1인 경우)를 처리하지 못하는 등의 논리적 오류를 정확히 지적할 수 있습니다.

단위 테스트 생성

모델은 기존 함수에 대한 단위 테스트를 생성함으로써 반복적인 코드 작성 부담을 줄입니다. 소스 파일의 내용을 프롬프트에 전달하면, 모델은 여러 경계 사례를 커버하는 포괄적인 unittest 클래스를 생성할 수 있습니다.

코드 완성 및 인필

기본 코드 완성 모델은 제공된 프롬프트를 기반으로 다음 토큰을 생성하는 데 집중하며, 함수 서명이나 주석 뒤에 함수를 작성할 때 이상적입니다.

표준 완성

함수의 목적을 설명하는 주석(예: 문자열에서 공백을 제거하는 것)을 제공하면, 완성 모델은 해당 요구 사항을 충족하는 대응하는 파이썬 코드를 생성합니다.

중간 채우기(FIM) / 인필

인필은 모델이 두 개의 기존 코드 블록 사이에 코드를 완성할 수 있도록 하는 특수한 프롬프트 형식입니다. 기존 함수의 중간에 논리를 삽입할 때 이 기능이 매우 중요합니다. 이 기능을 사용하려면 모델이 특정 태그 기반 형식을 요구합니다:

<PRE> {prefix} <SUF>{suffix} <MID>

이 구조에서 prefix는 삽입 지점 이전의 코드이고, suffix는 이후의 코드입니다. 모델은 응답 완료를 알리기 위해 <EOT>(토큰 종료) 태그를 반환할 수 있습니다.

Code Llama Python

Python 변형은 추가로 1000억 개의 파이썬 토큰으로 미세 조정되었습니다. 이로 인해 파이썬 개발, 특히 머신러닝 도구 및 Django와 같은 웹 프레임워크에 특화되어 있습니다.

모델 가용성 및 생태계

Code Llama는 70억, 130억, 340억 파라미터 버전으로 제공됩니다. 제공된 예제는 Ollama를 통해 7B 모델의 4비트 양자화를 사용하지만, 프롬프트는 다양한 모델 공급자와 런타임 간 호환 가능합니다.

다음과 같은 도구들이 이미 Code Llama를 통합했습니다:

  • Cody: 인필 지원이 포함된 실험적 버전 제공
  • Continue: GPT-4 대체로 Code Llama 지원
  • Open Interpreter: 로컬 터미널 실행을 위한 함수 생성에 모델 사용
  • 미세 조정된 변형: Phind 및 WizardLM 팀과 같은 팀들이 특화된 버전 출시

Sources

관련

  • Dispatch
  • Dispatch
  • Dispatch
  • 프로젝트
  • Dispatch