Code Llama Prompting Guide

Meta 的 Code Llama 提供三种主要变体——Instruct、Code completion 和 Python——每种变体都需要不同的提示策略以实现效果最大化。了解这些区别可以使开发者能够将该模型用于从自然语言交互到精确代码填充等各种任务。

Code Llama Instruct: Natural Language Interaction

instruct 模型旨在为问题提供类人回答,将自然语言解释与代码块结合起来。它是最易于使用的变体,其功能类似于对话式 AI。

Code Generation and Explanation

Instruct 模型可以根据自然语言请求生成函数。例如,要求模型编写一个计算第 n 个斐波那契数的 Python 函数,结果将包含实现代码以及对所使用的递归公式的简要解释。

Code Review and Bug Detection

Code Llama Instruct 可以作为提交或拉取请求的二级审查员,以识别简单的错误。当提供一个有错误的函数时,模型可以指出具体的逻辑错误,例如未能处理特定的输入情况(例如,当 n 等于 1 时)。

Unit Test Generation

该模型通过为现有函数生成单元测试来减少样板代码开销。通过将源文件的内容传递给提示词,模型可以生成一个涵盖多个边缘情况的综合 unittest 类。

Code Completion and Infill

标准的代码补全模型专注于根据提供的提示词生成后续标记,使其成为在函数签名或注释后编写函数的理想选择。

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 标记上进行了微调。这使其专门针对 Python 开发进行了优化,包括机器学习工具和像 Django 这样的 Web 框架。

Model Availability and Ecosystem

Code Llama 提供 7B、13B 和 34B 参数版本。虽然提供的示例使用了通过 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