跳到主要内容

概念

提示词工程是 LangSmith 的核心支柱之一。传统的软件应用程序是通过编写代码构建的,而 AI 应用程序通常涉及大量的编写提示词。我们的目标是通过提供一套旨在启用和促进提示词工程的工具,使之尽可能容易。

为什么进行提示词工程?

提示词为模型设定了舞台,就像即兴表演中的观众指导演员的下一次表演一样 - 它引导模型的行为,而无需更改其底层能力。正如告诉演员“扮演海盗”会决定他们的行为方式一样,提示词提供了指导、示例和上下文,从而塑造了模型的响应方式。

提示词工程非常重要,因为它允许您更改模型的行为方式。虽然还有其他方法可以更改模型的行为(例如微调),但提示词工程通常是最容易入门的方法,并且通常提供最高的投资回报率。

我们经常看到提示词工程是多学科的。有时,最好的提示词工程师不是构建应用程序的软件工程师,而是产品经理或其他领域专家。拥有适当的工具和基础设施来支持这种跨学科的构建非常重要。

提示词 vs 提示词模板

尽管我们经常互换使用这些术语,但了解“提示词”和“提示词模板”之间的区别非常重要。

提示词指的是传递到语言模型中的消息。

提示词模板指的是格式化信息的方式,以使提示词包含您想要的信息。提示词模板可以包含少量示例、外部上下文或提示词中需要的任何其他外部数据的变量。

LangSmith 中的提示词

您可以在 LangSmith 中存储和版本控制提示词模板。提示词模板有几个关键方面需要理解。

聊天 vs 完成

有两种不同类型的提示词:chat 风格的提示词和 completion 风格的提示词。

聊天风格的提示词是消息列表。这是目前大多数模型 API 支持的提示风格,因此通常应优先选择这种风格。

完成风格的提示词只是一个字符串。这是一种较旧的提示风格,因此主要因历史原因而存在。

F-string vs mustache

您可以使用 f-stringmustache 格式,使用输入变量格式化您的提示词。这是一个使用 f-string 格式的示例提示词

Hello, {name}!

这是一个使用 mustache 格式的示例

Hello, {{name}}!
Mustache 格式

Mustache 格式为您提供更大的灵活性,可以处理条件变量、循环和嵌套键。阅读文档

工具

工具是 LLM 可以用来与外部世界交互的接口。工具包括名称、描述和用于调用工具的参数的 JSON 模式。

结构化输出

结构化输出是大多数最先进的 LLM 的一项功能,其中它们不是生成原始文本作为输出,而是坚持指定的模式。这可能使用也可能不使用底层的工具

结构化输出 vs 工具

结构化输出类似于工具,但在几个关键方面有所不同。使用工具,LLM 选择调用哪个工具(或者可能选择不调用任何工具);使用结构化输出,LLM 始终以这种格式响应。使用工具,LLM 可以选择多个工具;使用结构化输出,仅生成一个响应。

模型

可选地,您可以将模型配置与提示词模板一起存储。这包括模型的名称和任何其他参数(温度等)。

提示词版本控制

版本控制是迭代和协作处理不同提示词的关键部分。

提交

每次保存对提示词的更新都会创建一个新的提交。您可以查看以前的提交,从而轻松查看早期的提示词版本,或在需要时恢复到以前的状态。在 SDK 中,您可以通过指定提交哈希以及提示词名称(例如 prompt_name:commit_hash)来访问提示词的特定提交。

在 UI 中,您可以通过切换“提交”选项卡右上角的“diff”按钮,将提交与其以前的版本进行比较。

标签

您可能想要使用人类可读的标签标记提示词提交,以便即使在添加新提交时也可以引用它。常见的用例包括使用 devprod 标签标记提示词。这允许您跟踪提示词的哪些版本在何处使用。

提示词 Playground

提示词 playground 使迭代和测试提示词的过程变得无缝。您可以从侧边栏或直接从已保存的提示词进入 playground。

在 playground 中,您可以

  • 更改正在使用的模型
  • 更改正在使用的提示词模板
  • 更改输出模式
  • 更改可用的工具
  • 输入输入变量以运行提示词模板
  • 通过模型运行提示词
  • 观察输出

测试多个提示词

您可以向 playground 添加更多提示词,以轻松比较输出并决定哪个版本更好

通过数据集进行测试

要通过数据集进行测试,您只需从右上角选择数据集,然后按“开始”即可。您可以修改结果是否流式传输,以及测试中的重复次数。

您可以单击“查看实验”按钮,以更深入地了解测试结果。


此页面是否对您有帮助?


您可以留下详细的反馈 在 GitHub 上.