Code Llama 提示詞指南

Meta 的 Code Llama 提供三種主要變體——Instruct、Code completion 和 Python——每種都需要不同的提示詞策略以發揮最大效能。了解這些區別可以讓開發者將模型用於從自然語言互動到精確代碼填補等各種任務。

Code Llama Instruct: 自然語言互動

instruct 模型旨在針對問題提供類似人類的回答,將自然語言解釋與代碼塊結合起來。它是最容易使用的變體,其功能與對話式 AI 類似。

代碼生成與解釋

Instruct 模型可以根據自然語言請求生成函數。例如,要求模型編寫一個計算第 n 個 Fibonacci 數的 Python 函數,會得到實作方式以及對所使用的遞迴公式的簡短解釋。

代碼審查與錯誤檢測

Code Llama Instruct 可以作為提交(commit)或拉取請求(pull request)的次級審查者,以識別簡單的錯誤。當提供一個有錯誤的函數時,模型可以精確指出特定的邏輯錯誤,例如未能處理特定的輸入情況(例如,當 n 等於 1 時)。

單元測試生成

該模型透過為現有函數生成單元測試來減少樣板代碼的開銷。透過將源文件內容傳遞給提示詞,模型可以生成一個涵蓋多個邊緣情況的全面 unittest 類別。

Code Completion and Infill

標準的代碼補全模型專注於根據提供的提示詞生成後續的 token,這使其成為在函數簽名或註釋之後編寫函數的理想選擇。

Standard Completion

當提供描述函數用途的註釋(例如,從字串中移除空白字元)時,補全模型會生成對應的 Python 代碼以滿足該需求。

Fill-in-the-Middle (FIM) / Infill

Infill 是一種特殊的提示詞格式,允許模型在兩個現有的代碼塊之間完成代碼。這對於將邏輯插入到現有函數的中間部分至關重要。要使用此功能,模型需要特定的標籤格式:

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

在此結構中,prefix 是插入點之前的代碼,suffix 是其後的代碼。模型可能會返回一個 <EOT> (End of Token) 標籤來表示回應的完成。

Code Llama Python

Python 變體在額外的 1000 億個 Python token 上進行了微調。這使其特別針對 Python 開發進行了優化,包括機器學習工具和像 Django 這樣的 Web 框架。

Model Availability and Ecosystem

Code Llama 提供 7 billion、13 billion 和 34 billion 參數版本。雖然提供的範例是透過 Ollama 使用 7B 模型的 4-bit 量化版本,但提示詞與不同的模型提供商和運行時環境是相容的。

已有多種工具整合了 Code Llama,包括:

  • Cody: 提供具有 infill 支持的實驗性版本。
  • Continue: 支持 Code Llama 作為 GPT-4 的替代方案。
  • Open Interpreter: 使用該模型生成用於本地終端機執行的函數。
  • Fine-tuned variants: Phind 和 WizardLM 等團隊已發發布了專門的變體版本。

Sources

相關

  • Dispatch
  • Dispatch
  • Dispatch
  • 專案
  • Dispatch