跳到主要内容

概念

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

为什么选择提示工程?

提示为模型搭建了舞台,就像即兴表演中的观众指导演员的下一次表演一样——它在不改变模型底层能力的情况下指导模型的行为。正如告诉演员“扮演海盗”决定了他们的表演方式一样,提示提供了指令、示例和上下文,从而塑造了模型的响应方式。

提示工程很重要,因为它允许你改变模型的行为方式。虽然还有其他方法可以改变模型的行为(例如微调),但提示工程通常是最简单的入门方法,并且通常能提供最高的投资回报率 (ROI)。

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

提示与提示模板

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

提示是指传递给语言模型的消息。

提示模板是指一种格式化信息的方式,以使提示包含你想要的信息。提示模板可以包含用于少量样本、外部上下文或提示中所需的任何其他外部数据的变量。

LangSmith 中的提示

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

聊天式与补全式

有两种不同类型的提示:聊天式提示和补全式提示。

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

补全式提示只是一串字符串。这是一种较旧的提示风格,主要出于历史原因而存在。

F-string 与 Mustache

你可以使用 f-stringMustache 格式通过输入变量来格式化提示。以下是一个使用 f-string 格式的提示示例

Hello, {name}!

这里有一个使用 Mustache 格式的示例

Hello, {{name}}!

添加条件式 Mustache 提示

{{#is_logged_in}}
Welcome back, {{name}}!
{{else}}
Please log in.
{{/is_logged_in}}
  • Playground UI 会识别 is_logged_in 变量,但任何嵌套变量你需要自行指定。将以下内容粘贴到输入框中,以确保上述条件提示有效
{
"name": "Alice"
}
Mustache 格式

LangSmith Playground 默认使用 f-string 作为模板格式,但你可以在提示设置/模板格式部分切换到 mustache 格式。mustache 在条件变量、循环和嵌套键方面提供更大的灵活性。对于条件变量,你需要在“输入”部分手动添加 JSON 变量。阅读文档

工具

工具是大型语言模型(LLM)可以用来与外部世界交互的接口。工具包含名称、描述以及用于调用工具的参数的 JSON schema。

结构化输出

结构化输出是大多数最先进大型语言模型(LLM)的一个特性,即它们不生成原始文本作为输出,而是遵循指定的 schema。这可能在底层使用或不使用工具

结构化输出与工具

结构化输出与工具相似,但在几个关键方面有所不同。使用工具时,LLM 会选择调用哪个工具(或者可能不调用任何工具);使用结构化输出时,LLM 总是以这种格式响应。使用工具时,LLM 可能会选择多个工具;而使用结构化输出时,只生成一个响应。

模型

你还可以选择将模型配置与提示模板一起存储。这包括模型的名称以及任何其他参数(例如温度)。

提示版本控制

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

提交

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

在用户界面中,你可以通过切换“提交”标签右上角的“差异”按钮来将某个提交与其以前的版本进行比较。

标签

你可能希望使用人类可读的标签来标记提示提交,以便即使添加了新的提交,你也可以引用它。常见用例包括用 devprod 标签标记提示。这使你能够追踪在何处使用了哪个版本的提示。

提示 Playground

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

在 Playground 中,你可以

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

测试多个提示

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

在数据集上测试

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

你可以点击“查看实验”按钮,深入了解测试结果。


本页有帮助吗?


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