传统软件应用通过编写代码来构建,而 AI 应用通常从提示中获取其逻辑。
本指南将介绍 LangSmith 中提示工程的关键概念。
为什么选择提示工程?
提示在不改变模型底层能力的情况下引导模型的行为。通过提供指令、示例和上下文,提示塑造了模型对输入的响应方式。
提示工程很重要,因为它允许您修改模型行为。虽然存在其他方法(如微调),但提示工程通常提供最低的进入门槛,并且往往能带来最高的投资回报。
提示工程通常是一项多学科的工作。最有效的提示工程师可能是产品经理、领域专家或其他非技术团队成员,而不是构建应用程序的软件工程师。适当的工具和基础设施对于支持这种跨职能协作至关重要。
提示类型
有两种不同类型的提示格式: chat 样式提示和 completion 样式提示。
聊天提示 是消息列表,每个消息都有一个角色(例如 system, user, or assistant)。这是大多数当前模型 API 支持的提示样式,也是推荐的格式。
补全提示 是单个字符串。这是一种较旧的提示样式,主要为向后兼容而维护。
提示与提示模板
虽然 _提示_ 和 _提示模板_ 经常互换使用,但理解这种区别有助于阐明 LangSmith 如何管理和评估您的 AI 应用。
- 提示 指的是传入语言模型的消息。
- 提示模板 允许您创建具有动态占位符的可重用提示,这些占位符在运行时被填充。与硬编码值不同,您定义的变量会在每次运行提示时被 LangSmith 替换为不同的输入。这使得提示灵活、可测试且易于迭代。
以下是模板在实际中的工作方式:
- **定义模板**:创建一个带有变量(用大括号标记)的提示,这些变量将在运行时被替换:
You are a customer support agent. This is the refund policy:
{refund_policy}
Please respond to the user's question:
{question}
- **提供输入值**:为每个变量提供实际值:
{
"refund_policy": "no refunds under any circumstances",
"question": "can I get a refund for this hat?"
}
- **获取最终提示**:LangSmith 用您的输入替换变量,以创建发送到模型的提示:
You are a customer support agent. This is the refund policy:
no refunds under any circumstances
Please respond to the user's question:
Can I get a refund for this hat?
了解有关模板变量语法和格式选项的更多信息
您可以在 LangSmith 中存储和版本控制提示模板。这些模板可以在 Playground 中测试,使用提交和标签进行版本控制,并可拉取到您的应用代码中。
以下部分描述了提示词模板的关键方面。
F-string 与 Mustache
您可以使用以下任一方式用输入变量格式化提示词模板 f-string or mustache format.
有关在游乐场中使用这些格式的详细信息,请参阅 模板格式.
工具
工具 是 LLM 用于与外部世界交互的接口。工具由名称、描述和用于调用工具的参数 JSON 架构组成。
结构化输出
结构化输出是大多数先进 LLM 的功能,它们不是生成原始文本,而是遵循指定的架构输出。这可能使用也可能不使用 工具 作为底层实现。
模型
(可选)您可以随提示词模板一起存储模型配置。这包括模型名称和任何其他参数(温度等)。
提示词版本控制
版本控制是迭代和协作处理提示词的关键组件。
提交
对提示词的每次保存更新都会创建一个带有唯一提交哈希的新提交。这允许您:
- - 查看提示词更改的完整历史记录。
- - 审查早期版本。
- - 如需要可回滚到之前的状态。
- - 使用提交哈希在代码中引用特定版本(例如,
client.pull_prompt("prompt_name:commit_hash")).
在 UI 中,您可以通过切换 **差异对比** 来将提交与其之前的版本进行比较,位于 提示词详情页面.
标签
提交标签是人类可读的标签,指向提示词历史记录中的特定提交。与提交哈希不同,标签可以移动以指向不同的提交,允许您更新代码引用的版本而无需更改代码本身。
提交标签的用例包括:
- 环境:
staging和production标签保留用于 环境 功能,它允许你在命名部署目标之间提升提交,并在不更改代码的情况下切换版本。 - 版本控制:标记稳定版本的提示,例如,
v1,v2,它允许你在代码中引用特定版本并随时间跟踪变化。 - 协作:标记准备好审核的版本,这使你能够与协作者共享特定版本并获取反馈。
有关创建和管理提交标签的详细信息,请参阅 管理提示.
Playground
Playground 提供了一个用于迭代和测试提示的界面。你可以从侧边栏或直接从已保存的提示访问 Playground。
在 Playground 中,你可以:
- * 更改使用的模型
- * 更改使用的提示模板
- * 更改输出 schema
- * 更改可用的工具
- * 输入要通过提示模板运行的变量
- * 通过模型运行提示
- * 观察输出
测试多个提示
你可以在 Playground 中添加多个提示以比较输出并评估性能:
在数据集上测试
要在数据集上测试,请从右上角选择数据集并点击开始。你可以配置是否流式传输结果以及测试的重复次数。
点击"查看实验"按钮以查看详细的测试结果。