为什么选择提示工程?
提示为模型设定了场景,就像即兴表演的观众指导演员的下一场表演一样——它在不改变模型底层能力的情况下引导模型的行为。就像告诉演员“扮演海盗”决定了他们的表演方式一样,提示提供了指令、示例和上下文,从而塑造了模型的响应方式。 提示工程很重要,因为它允许您改变模型的行为方式。虽然还有其他方法可以改变模型的行为(例如微调),但提示工程通常是最简单的入门方法,并且通常提供最高的投资回报率。 我们经常看到提示工程是多学科的。有时,最好的提示工程师不是构建应用程序的软件工程师,而是产品经理或其他领域专家。拥有适当的工具和基础设施来支持这种跨学科构建非常重要。提示与提示模板
尽管我们经常互换使用这些术语,但理解“提示”和“提示模板”之间的区别很重要。 提示是指传递给语言模型的消息。 提示模板是指一种格式化信息的方式,以使该提示包含您想要的信息。提示模板可以包含少量示例、外部上下文或提示中所需的任何其他外部数据的变量。
LangSmith 中的提示
您可以在 LangSmith 中存储和版本控制提示模板。提示模板有几个关键方面需要理解。聊天与完成
有两种不同类型的提示:聊天风格提示和完成风格提示。 聊天风格提示是消息列表。这是目前大多数模型 API 支持的提示风格,因此通常应首选此风格。 完成风格提示只是一个字符串。这是一种较旧的提示风格,因此主要出于遗留原因而存在。F-string 与 mustache
您可以使用 f-string 或 mustache 格式来格式化包含输入变量的提示。这是一个 f-string 格式的提示示例- 游乐场 UI 将识别 `is_logged_in` 变量,但任何嵌套变量都需要您自己指定。将以下内容粘贴到输入中以确保上述条件提示有效
LangSmith Playground 使用 `f-string` 作为默认模板格式,但您可以在提示设置/模板格式部分切换到 `mustache` 格式。`mustache` 在条件变量、循环和嵌套键方面为您提供了更大的灵活性。对于条件变量,您需要手动在“输入”部分添加 json 变量。阅读 文档
工具
工具是 LLM 可以用来与外部世界交互的接口。工具包含名称、描述和用于调用工具的参数的 JSON 模式。结构化输出
结构化输出是大多数最先进的 LLM 的一个特性,它们不是以原始文本作为输出,而是遵循指定的模式。这可能会或可能不会在底层使用 工具。结构化输出与工具类似,但在几个关键方面有所不同。使用工具时,LLM 选择要调用的工具(或者可能选择不调用任何工具);使用结构化输出时,LLM 总是以此格式响应。使用工具时,LLM 可以选择多个工具;使用结构化输出时,只生成一个响应。
模型
(可选)您可以将模型配置与提示模板一起存储。这包括模型的名称和任何其他参数(温度等)。提示版本控制
版本控制是迭代和协作处理不同提示的关键部分。提交
每次保存的提示更新都会创建一个新的提交。您可以查看以前的提交,从而轻松查看早期提示版本或在需要时恢复到以前的状态。在 SDK 中,您可以通过指定提交哈希和提示名称(例如prompt_name:commit_hash)来访问提示的特定提交。 在 UI 中,您可以通过切换“提交”选项卡右上角的“差异”按钮来将提交与其以前的版本进行比较。 
标签
您可能希望使用易于理解的标签标记提示提交,以便即使添加了新提交,您也可以引用它。常见的用例包括使用 `dev` 或 `prod` 标签标记提示。这允许您跟踪在何处使用哪个版本的提示。提示游乐场
提示游乐场使迭代和测试您的提示过程无缝衔接。您可以从侧边栏或直接从已保存的提示进入游乐场。 在游乐场中,您可以:- 更改正在使用的模型
- 更改正在使用的提示模板
- 更改输出模式
- 更改可用工具
- 输入输入变量以运行提示模板
- 通过模型运行提示
- 观察输出
测试多个提示
您可以在游乐场中添加更多提示,以便轻松比较输出并决定哪个版本更好:
在数据集上进行测试
要在数据集上进行测试,只需从右上角选择数据集并按“开始”。您可以修改结果是否流回以及测试中的重复次数。
视频指南
以编程方式连接这些文档到 Claude、VSCode 等,通过 MCP 获取实时答案。