GitHub 详细介绍了构建 Copilot 所使用的关键提示工程实践

Prompt Engineering的重要性及实践

GitHub工程师Albert Ziegler和John Berryman指出,Prompt Engineering(提示词工程)是创建基于大型语言模型(LLM)应用的关键,且无需用户具备机器学习或生成式AI的博士学位。他们分享了在开发GitHub Copilot过程中学到的经验教训。

Prompt Engineering的兴起

随着LLM的发展,Prompt Engineering成为了一个新兴领域,专注于如何通过指令让LLM生成其预训练之外的输出。Prompt Engineering的核心在于设计包含足够上下文的提示词,以引导LLM生成最佳结果。

用户领域与文档领域的映射

有效的提示词需要结合用户领域的相关上下文信息,以及文档领域的任务描述。用户领域包含具体的上下文信息,而文档领域则较为通用,LLM在此领域主要作为“下一个词预测器”。如果两个领域之间没有适当的映射,如未在提示词中指定“以IT专家的身份回答”,生成的响应可能会过于泛化。

在GitHub Copilot的案例中,有用的上下文信息可能包括编程语言、文件路径、光标上下文的文本、其他文件中的文本等。

Prompt Engineering的步骤

Ziegler和Berryman建议的Prompt Engineering方法包括以下步骤:

  1. 上下文收集:收集所有相关的上下文信息,可能包括整个源文件。
  2. 片段化:当上下文信息超出LLM的处理窗口时,将其分割成较小的、不重叠的片段。
  3. 上下文注入:以自然的方式将上下文信息注入LLM的文档中,如在Copilot中使用代码注释。
  4. 优先级排序:根据相关性对片段进行优先级排序。
  5. 模型选择:在多个LLM模型中选择最适合的模型进行推理。
  6. 停止条件:定义停止条件,以告知LLM何时完成生成任务,例如当输出换行符时。

Prompt Engineering的工具与技术

目前有多种Prompt Engineering方法。微软最近开源了其LMOps工具包,其中包括用于文本到图像生成的Promptist工具,以及用于文本生成的结构化提示技术。

Prompt Engineering的未来

尽管可以推测LLM未来可能会发展到不再需要Prompt Engineering的阶段,但OpenAI的技术专家Sherwin Wu在QCon纽约的“LLM in Production”小组讨论中表示,至少在五年内,Prompt Engineering仍然会是必要的。

总结

Prompt Engineering是有效利用LLM的关键技术,尤其适用于生成式AI应用。通过合理的上下文收集、片段化、上下文注入和优先级排序,开发者可以显著提升LLM的输出质量。尽管未来LLM可能会进一步进化,但短期内Prompt Engineering仍将是不可或缺的工具。

阅读 113
0 条评论