Skip to content
LangSmith 文档版本 跟随上游 源快照 4ff7ff15 更新于 2026-10-18

提示工程概念

传统软件应用是通过编写代码构建的,而 AI 应用的逻辑往往源于提示。

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

为什么要做提示工程?

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

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

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

提示类型

有两种不同的提示格式:chat 风格提示和 completion 风格提示。

Chat prompts(聊天提示) 是一个消息列表,每条都带一个角色(例如 system、user 或 assistant)。这是当前大多数模型 API 所支持的提示风格,也是推荐的格式。

Completion prompts(补全提示) 是单个字符串。这是一种较旧的提示风格,主要为了向后兼容而保留。

NOTE

除非你有使用补全提示的具体理由,否则新项目请使用聊天提示。聊天提示为多轮对话提供更好的结构,也得到现代 LLM 更好的支持。

提示与提示模板

虽然 prompt(提示)和 prompt template(提示模板)常可互换使用,但理解二者的区别有助于澄清 LangSmith 如何管理和评估你的 AI 应用。

  • Prompts(提示) 指的是被传入语言模型的消息。
  • Prompt templates(提示模板) 让你能够用动态占位符创建可复用的提示,这些占位符在运行时被填入。与其硬编码值,你定义一些变量,LangSmith 会在你每次运行提示时用不同的输入替换它们。这使得提示灵活、可测试,也更易于迭代。

以下是模板在实践中如何运作:

  1. 定义模板:创建一个带变量的提示(用花括号标记),它们将在运行时被替换:

    You are a customer support agent. This is the refund policy:
    
    {refund_policy}
    
    Please respond to the user's question:
    
    {question}
  2. 提供输入值:为每个变量提供实际值:

    json
    {
    "refund_policy": "no refunds under any circumstances",
    "question": "can I get a refund for this hat?"
    }
  3. 得到最终提示: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?

TIP

关于模板变量语法和格式化选项的更多信息,参阅提示模板格式指南。

LangSmith 中的提示

你可以在 LangSmith 中存储并版本化提示模板。这些模板可以在 Playground 中测试,用提交和标签进行版本管理,并被拉入你的应用代码。

INFO

打开 Playground 以创建并测试你的第一个提示模板。有关分步说明,参阅创建提示。

接下来的章节描述提示模板的关键方面。

F-string 与 mustache

你可以使用 f-string 或 mustache 格式来用输入变量格式化你的提示模板。

有关如何在 Playground 中使用这些格式的详情,参阅模板格式。

TIP

Playground 使用 f-string 作为默认模板格式,但你可以在提示设置/模板格式部分切换到 mustache 格式。mustache 在条件变量、循环和嵌套键方面给你更多灵活性。对于条件变量,你需要在 'inputs' 部分手动添加 json 变量。阅读该文档

工具

工具是 LLM 可用来与外部世界交互的接口。工具由一个名称、一个描述,以及用于调用工具的参数 JSON schema 组成。

结构化输出

结构化输出是大多数最先进 LLM 的一项特性,即它们不产出原始文本作为输出,而是遵循一个指定的 schema。这可能在底层使用或不使用 工具。

TIP

结构化输出类似于工具,但在几个关键方面不同。对于工具,LLM 选择调用哪个工具(也可能选择不调用任何);对于结构化输出,LLM 总是以此格式响应。对于工具,LLM 可能选择多个工具;对于结构化输出,只生成一个响应。

模型

可选地,你可以将一个模型配置连同提示模板一起存储。这包括模型名称和任何其他参数(temperature 等)。

提示版本控制

版本控制是对提示进行迭代以及与提示协作的关键组成部分。

提交

每次对提示的保存更新都会创建一个带唯一提交哈希的新提交。这让你能够:

  • 查看对某个提示更改的完整历史。
  • 审阅较早的版本。
  • 在需要时回退到先前的状态。
  • 在你的代码中使用提交哈希引用特定版本(例如 client.pull_prompt("prompt_name:commit_hash"))。

在 UI 中,你可以通过在提示详情页右上角切换 Diff,将一个提交与其先前版本进行比较。

标签

提交标签是可读的标签,指向你提示历史中的特定提交。与提交哈希不同,标签可以被移动以指向不同的提交,让你能够更新你的代码引用哪个版本而无需更改代码本身。

提交标签的用例可以包括:

  • 环境:staging 和 production 标签为 Environments 功能保留,它让你在命名的部署目标之间提升提交,并在不更改代码的情况下切换版本。
  • 版本控制:标记你提示的稳定版本,例如 v1、v2,这让你能在代码中引用特定版本并随时间跟踪更改。
  • 协作:标记准备好供审阅的版本,使你能够与协作者分享特定版本并获得反馈。

NOTE

不要与资源标签混淆:提交标签引用特定的提示版本。资源标签 是用于组织工作区资源的键值对。

有关创建和管理提交标签的详细步骤,参阅管理提示。

Playground

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

在 Playground 中你可以:

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

INFO

使用 Playground 中的 Chat,借助 AI 辅助来优化提示、生成工具并创建输出 schema。

测试多个提示

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

在数据集上测试

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

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


BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。