跳至主要內容

CodeLlama - 程式碼補全

本教學示範如何呼叫 CodeLlama(託管於 Huggingface PRO Inference Endpoints),來補全程式碼。

這是 code model 特有的專門任務。此模型經過訓練,可產生最符合既有前綴與後綴的程式碼(包含註解)。

此任務可用於 7B13B CodeLlama 模型的 base 與 instruction 變體。34B 模型或 Python 版本皆不支援。

使用方式

import os
from litellm import longer_context_model_fallback_dict, ContextWindowExceededError, completion

os.environ["HUGGINGFACE_API_KEY"] = "your-hf-token" # https://huggingface.co/docs/hub/security-tokens

## CREATE THE PROMPT
prompt_prefix = 'def remove_non_ascii(s: str) -> str:\n """ '
prompt_suffix = "\n return result"

### set <pre> <suf> to indicate the string before and after the part you want codellama to fill
prompt = f"<PRE> {prompt_prefix} <SUF>{prompt_suffix} <MID>"

messages = [{"content": prompt, "role": "user"}]
model = "huggingface/codellama/CodeLlama-34b-Instruct-hf" # specify huggingface as the provider 'huggingface/'
response = completion(model=model, messages=messages, max_tokens=500)

輸出

def remove_non_ascii(s: str) -> str:
""" Remove non-ASCII characters from a string.

Args:
s (str): The string to remove non-ASCII characters from.

Returns:
str: The string with non-ASCII characters removed.
"""
result = ""
for c in s:
if ord(c) < 128:
result += c
return result