以编程方式使用文档

传统软件应用通过编写代码来构建,而 AI 应用通常从提示中获取其逻辑。

本指南将介绍 LangSmith 中提示工程的关键概念。

为什么选择提示工程?

提示在不改变模型底层能力的情况下引导模型的行为。通过提供指令、示例和上下文,提示塑造了模型对输入的响应方式。

提示工程很重要,因为它允许您修改模型行为。虽然存在其他方法(如微调),但提示工程通常提供最低的进入门槛,并且往往能带来最高的投资回报。

提示工程通常是一项多学科的工作。最有效的提示工程师可能是产品经理、领域专家或其他非技术团队成员,而不是构建应用程序的软件工程师。适当的工具和基础设施对于支持这种跨职能协作至关重要。

提示类型

有两种不同类型的提示格式: chat 样式提示和 completion 样式提示。

聊天提示 是消息列表,每个消息都有一个角色(例如 system, user, or assistant)。这是大多数当前模型 API 支持的提示样式,也是推荐的格式。

补全提示 是单个字符串。这是一种较旧的提示样式,主要为向后兼容而维护。

提示与提示模板

虽然 _提示_ 和 _提示模板_ 经常互换使用,但理解这种区别有助于阐明 LangSmith 如何管理和评估您的 AI 应用。

  • 提示 指的是传入语言模型的消息。
  • 提示模板 允许您创建具有动态占位符的可重用提示,这些占位符在运行时被填充。与硬编码值不同,您定义的变量会在每次运行提示时被 LangSmith 替换为不同的输入。这使得提示灵活、可测试且易于迭代。

以下是模板在实际中的工作方式:

  1. **定义模板**:创建一个带有变量(用大括号标记)的提示,这些变量将在运行时被替换:
    You are a customer support agent. This is the refund policy:

    {refund_policy}

    Please respond to the user's question:

    {question}
    
  1. **提供输入值**:为每个变量提供实际值:
    {
    "refund_policy": "no refunds under any circumstances",
    "question": "can I get a refund for this hat?"
    }
    
  1. **获取最终提示**: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 中,您可以通过切换 **差异对比** 来将提交与其之前的版本进行比较,位于 提示词详情页面.

标签

提交标签是人类可读的标签,指向提示词历史记录中的特定提交。与提交哈希不同,标签可以移动以指向不同的提交,允许您更新代码引用的版本而无需更改代码本身。

提交标签的用例包括:

  • 环境stagingproduction 标签保留用于 环境 功能,它允许你在命名部署目标之间提升提交,并在不更改代码的情况下切换版本。
  • 版本控制:标记稳定版本的提示,例如, v1, v2,它允许你在代码中引用特定版本并随时间跟踪变化。
  • 协作:标记准备好审核的版本,这使你能够与协作者共享特定版本并获取反馈。

有关创建和管理提交标签的详细信息,请参阅 管理提示.

Playground

Playground 提供了一个用于迭代和测试提示的界面。你可以从侧边栏或直接从已保存的提示访问 Playground。

在 Playground 中,你可以:

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

测试多个提示

你可以在 Playground 中添加多个提示以比较输出并评估性能:

!将提示添加到 Playground

在数据集上测试

要在数据集上测试,请从右上角选择数据集并点击开始。你可以配置是否流式传输结果以及测试的重复次数。

!在 Playground 中基于数据集测试

点击"查看实验"按钮以查看详细的测试结果。