Skip to main content

概念

提示工程是 LangSmith 的核心支柱之一。 与传统软件应用通过编写代码构建不同,AI 应用通常涉及大量提示词的编写。 我们致力于通过提供一套专为支持和促进提示工程而设计的工具,使这一过程尽可能简单易行。

为何需要提示工程?

提示词为模型设定场景,就像即兴表演中的一位观众指导演员的下一次演出——它引导模型的行为,但不会改变其底层能力。正如告诉一位演员“扮演一名海盗”会决定其表演方式一样,提示词通过提供指令、示例和上下文,来塑造模型的响应方式。

提示工程之所以重要,是因为它能让你改变模型的行为方式。 尽管还有其他方法可以改变模型的行为(例如微调),但提示工程通常是入门最简单的方式, 并且往往能带来最高的投资回报率(ROI)。

我们常常看到,提示工程是一门跨学科的领域。 有时,最优秀的提示工程师并非构建应用程序的软件工程师,而是产品经理 或其他领域的专家。 因此,拥有合适的工具和基础设施来支持这种跨学科的构建工作至关重要。

提示词 vs 提示词模板

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

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

提示模板(Prompt Templates)指的是一种对信息进行格式化的方法,以确保提示词能够包含您所需的信息。提示模板可以包含变量,用于示例(few-shot examples)、外部上下文,或提示词中所需的任何其他外部数据。

LangSmith 中的提示词

您可以在 LangSmith 中存储和管理提示模板的版本。 理解提示模板时,有几个关键方面需要注意。

聊天 vs 补全

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

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

补全式提示(Completion style prompts)仅是一个字符串。这是一种较早的提示方式,因此主要出于向后兼容的原因而存在。

F字符串 vs 模板语法

您可以使用f-stringmustache格式,通过输入变量来格式化提示词。以下是一个采用f-string格式的提示词示例:

Hello, {name}!

而这里有一个带胡须的:

Hello, {{name}}!
Mustache 格式

Mustache 模板格式为您提供了更灵活的条件变量、循环和嵌套键支持。 请阅读 相关文档

工具

工具是大语言模型(LLM)用于与外部世界交互的接口。工具由名称、描述以及用于调用该工具的参数的 JSON 模式组成。

结构化输出

结构化输出是当前大多数先进大语言模型(LLM)的一项功能,即模型不再生成原始文本作为输出,而是严格遵循指定的模式(schema)。该功能在底层可能使用也可能不使用工具

结构化输出 vs 工具

结构化输出与工具类似,但在几个关键方面有所不同。使用工具时,大语言模型(LLM)自行决定调用哪个工具(也可能选择不调用任何工具);而使用结构化输出时,大语言模型始终以该格式进行响应。使用工具时,大语言模型可选择调用多个工具;而使用结构化输出时,仅生成一个响应。

模型

可选地,您可以在提示模板旁存储模型配置。这包括模型名称及任何其他参数(例如温度值等)。

提示词版本管理

版本控制是迭代和协作开发各类提示词的关键环节。

提交记录

每次保存对提示词的修改都会创建一个新的提交。您可以查看之前的提交记录,以便轻松审查早期的提示词版本,或在需要时回退到先前的状态。在 SDK 中,您可以通过指定提交哈希值和提示词名称(例如 prompt_name:commit_hash)来访问提示词的特定提交版本。

在用户界面中,您可以通过点击“提交”标签页右上角的“差异”按钮,将某次提交与其前一版本进行对比。

标签

您可能希望为提示词提交(prompt commits)添加人类可读的标签,以便即使在新增提交后,仍能方便地引用它们。常见的使用场景包括为提示词打上 devprod 等标签。这有助于追踪不同版本的提示词在哪些地方被使用。

提示词游乐场

提示词游乐场让提示词的迭代与测试过程变得无缝顺畅。您可以通过侧边栏进入游乐场,也可以直接从已保存的提示词中进入。

在 Playground 中,您可以:

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

测试多个提示词

您可以在 Playground 中添加更多提示词,以便轻松比较不同输出结果,并决定哪个版本更优:

在数据集上进行测试

要对数据集进行测试,您只需从右上角选择该数据集,然后点击“开始”即可。您可以修改测试结果是否以流式方式返回,以及测试的重复次数。

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


这个页面对你有帮助吗?


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