为什么需要提示工程?
提示在不改变模型底层能力的情况下引导其行为。通过提供指令、示例和上下文,提示塑造了模型对输入的响应方式。 提示工程之所以重要,是因为它允许你修改模型行为。虽然存在其他方法(如微调),但提示工程通常提供最低的入门门槛,并且往往能带来最高的投资回报率。 提示工程通常是一项多学科协作的工作。最有效的提示工程师可能是产品经理、领域专家或其他非技术团队成员,而不是构建应用程序的软件工程师。适当的工具和基础设施对于支持这种跨职能协作至关重要。提示类型
有两种不同的提示格式:chat(聊天)风格提示和completion(补全)风格提示。
聊天提示是一系列消息,每条消息都有一个角色(如system、user或assistant)。这是当前大多数模型API支持的提示风格,也是推荐的格式。
补全提示是一个单一字符串。这是一种较旧的提示风格,主要为了向后兼容而保留。
除非有特定原因需要使用补全提示,否则新项目请使用聊天提示。聊天提示为多轮对话提供了更好的结构,并且受到现代LLM更好的支持。
提示与提示模板
虽然提示和提示模板经常互换使用,但理解它们的区别有助于澄清LangSmith如何管理和评估你的AI应用程序。- 提示指的是传递给语言模型的消息。
- 提示模板允许你创建带有动态占位符的可重用提示,这些占位符在运行时被填充。你无需硬编码值,而是定义变量,LangSmith在每次运行提示时用不同的输入替换这些变量。这使得提示灵活、可测试且更易于迭代。
-
定义模板:创建一个带有变量(用花括号标记)的提示,这些变量将在运行时被替换:
-
提供输入值:为每个变量提供实际值:
-
获取最终提示:LangSmith用你的输入替换变量,创建发送给模型的提示:
LangSmith中的提示
你可以在LangSmith中存储和版本化提示模板。这些模板可以在工作台中测试,通过提交和标签进行版本控制,并拉取到你的应用程序代码中。 以下部分描述了提示模板的关键方面。F-string 与 mustache
你可以使用f-string或mustache格式来格式化带有输入变量的提示模板。 有关如何在工作台中使用这些格式的详细信息,请参阅模板格式。工具
工具是LLM可用于与外部世界交互的接口。工具由名称、描述和用于调用该工具的参数的JSON模式组成。结构化输出
结构化输出是大多数最先进LLM的一项功能,其中它们不产生原始文本作为输出,而是遵循指定的模式。这可能使用也可能不使用底层的工具。结构化输出类似于工具,但在几个关键方面有所不同。使用工具时,LLM选择调用哪个工具(或可能选择不调用任何工具);使用结构化输出时,LLM总是以这种格式响应。使用工具时,LLM可能选择多个工具;使用结构化输出时,只生成一个响应。
模型
你可以选择将模型配置与提示模板一起存储。这包括模型的名称和任何其他参数(温度等)。提示版本控制
版本控制是迭代和协作处理提示的关键组成部分。提交
每次保存对提示的更新都会创建一个具有唯一提交哈希的新提交。这允许你:- 查看提示的完整更改历史记录。
- 查看早期版本。
- 如有需要,恢复到先前的状态。
- 在代码中使用提交哈希引用特定版本(例如,
client.pull_prompt("prompt_name:commit_hash"))。
标签
提交标签是指向提示历史记录中特定提交的人类可读标签。与提交哈希不同,标签可以移动以指向不同的提交,允许你更新代码引用的版本而无需更改代码本身。 提交标签的用例可以包括:- 环境:
staging和production标签保留给环境功能,该功能允许你在命名的部署目标之间提升提交,并在不更改代码的情况下切换版本。 - 版本控制:标记提示的稳定版本,例如
v1、v2,这允许你在代码中引用特定版本并随时间跟踪更改。 - 协作:标记准备审查的版本,这使你可以与协作者共享特定版本并获取反馈。
不要与资源标签混淆:提交标签引用特定的提示版本。资源标签是用于组织工作区资源的键值对。
工作台
工作台提供了一个用于迭代和测试提示的界面。你可以从侧边栏或直接从已保存的提示访问工作台。 在工作台中,你可以:- 更改正在使用的模型
- 更改正在使用的提示模板
- 更改输出模式
- 更改可用的工具
- 输入要通过提示模板运行的输入变量
- 通过模型运行提示
- 观察输出
在工作台中使用 Polly 来优化提示、生成工具并在AI辅助下创建输出模式。
测试多个提示
你可以将多个提示添加到工作台中,以比较输出并评估性能:
在数据集上测试
要在数据集上测试,请从右上角选择数据集,然后单击“开始”。你可以配置结果是否流式传输以及测试的重复次数。
连接这些文档到Claude、VSCode等,通过MCP获取实时答案。

