2026/4/3 3:42:51
网站建设
项目流程
公众号开发网站,北京网站建设公司 蓝纤科技,查企业法人电话大全,原平新闻头条最新消息讲座题目#xff1a;深入 Prompt Versioning#xff1a;如何利用 LangSmith 追踪提示词迭代对 Agent 成功率的影响曲线各位同仁#xff0c;各位对大模型与 Agent 技术充满热情的开发者们#xff0c;大家好#xff01;今天#xff0c;我们将深入探讨一个在构建和维护高性能…讲座题目深入 Prompt Versioning如何利用 LangSmith 追踪提示词迭代对 Agent 成功率的影响曲线各位同仁各位对大模型与 Agent 技术充满热情的开发者们大家好今天我们将深入探讨一个在构建和维护高性能 AI Agent 过程中至关重要的主题提示词版本控制Prompt Versioning以及如何借助 LangSmith 这一强大的平台系统地追踪提示词迭代对 Agent 成功率的影响曲线。在当今大模型驱动的应用开发中提示词Prompt已成为连接人类意图与模型能力的“代码”其重要性不言而喻。对于多步骤、复杂推理的 Agent 系统而言提示词的设计与优化更是决定其能否稳定、高效运行的关键。引言提示词工程的精髓与 Agent 系统的挑战在人工智能领域特别是大型语言模型LLM的兴起提示词工程Prompt Engineering已从一门艺术逐渐演变为一门科学。它不再仅仅是编写几个关键词或句子而是精心构造输入以引导模型产生期望的输出。对于简单的问答系统一个好的提示词足以显著提升用户体验。然而当我们谈论 AI Agent 时复杂性便会指数级增长。AI Agent通常被设计为能够感知环境、进行规划、执行动作并反思结果的自主实体。它们往往需要多步骤推理将复杂任务分解为一系列子任务。工具使用调用外部 API、数据库或自定义函数来扩展自身能力。记忆与上下文管理在长时间交互中保持连贯性。鲁棒性在面对不确定性或模糊指令时仍能保持稳定表现。在这样的复杂系统中提示词不再是单一的它可能包括系统指令System Prompt、用户指令User Prompt、工具描述Tool Descriptions、少量示例Few-shot Examples以及如何进行自我反思的指令等等。每一个组件的微小改动都可能像蝴蝶效应般对 Agent 的行为、性能乃至最终的成功率产生巨大影响。因此对提示词进行版本控制并能够系统地追踪每一次迭代的效果不仅是最佳实践更是构建可信赖、高性能 Agent 系统的核心基石。第一章传统提示词管理之困境在没有专门工具和方法论支持的情况下提示词的迭代往往会陷入一系列困境黑盒迭代难以追溯、结果模糊开发者可能在代码中直接修改提示词字符串但没有记录历史版本久而久之就不知道当前版本与之前版本相比有哪些改动以及这些改动是何时、为何引入的。当 Agent 表现出现波动时难以定位是哪个提示词改动导致了性能提升或下降。复现性危机无法精确复现特定行为如果无法准确回溯到某个特定的提示词版本那么当 Agent 在某个历史时间点表现良好或者出现特定问题时就无法精确复现当时的运行环境和提示词配置这使得问题诊断和性能优化变得极其困难。评估盲区缺乏系统性方法量化影响手动测试或少量样本测试难以全面反映提示词改动的影响。缺乏标准化的评估基准和自动化评估机制使得性能指标如成功率、准确率、延迟的量化变得主观且低效。团队协作障碍混乱与冲突在团队开发中多名成员可能同时修改提示词。如果没有统一的版本管理和协作机制容易出现覆盖、冲突甚至丢失有效改动的情况。新人加入项目时难以快速理解当前提示词的演变历史和设计理念。这些问题共同构成了 Agent 开发中的“提示词迷宫”使得迭代过程充满不确定性阻碍了 Agent 系统的快速发展和稳定部署。第二章LangSmith 简介与核心能力为了解决上述挑战我们需要一个强大的平台来管理、追踪和评估 Agent 的行为。LangSmith 正是为此而生它是 LangChain 生态系统中的关键组件旨在帮助开发者理解、调试、测试、评估和监控任何基于 LLM 的应用程序。LangSmith 的核心能力可以概括为以下几点Tracing (追踪)LangSmith 能够自动记录 LangChain 应用程序中的每一次 LLM 调用、Agent 步骤、工具使用以及链Chain的执行过程。它以可视化的方式展示整个执行路径Trace包括输入、输出、中间步骤、延迟和错误信息帮助开发者深入理解 Agent 的决策过程。Evaluation (评估)LangSmith 提供了一套灵活的评估框架支持自动化评估、人工评估和 LLM 辅助评估。开发者可以定义自己的评估指标和逻辑针对 Agent 在特定数据集上的表现进行量化分析从而衡量提示词改动、模型选择等因素对性能的影响。Dataset (数据集)数据集是评估的基础。LangSmith 允许用户创建和管理测试用例Examples这些用例包含输入、预期的参考输出甚至是人工标注的反馈。通过标准化的数据集可以确保不同提示词版本、不同模型或不同 Agent 配置的评估结果具有可比性。Prompt Management (提示词管理)虽然 LangSmith 本身不是一个提示词编辑器但它通过追踪和评估功能间接实现了对提示词的有效管理。每一次使用不同提示词运行的 Agent其性能数据都会被记录下来开发者可以清晰地对比不同提示词版本的表现从而“版本化”并比较提示词的效果。通过将这些能力结合起来LangSmith 为我们提供了一个全面的解决方案能够系统地管理提示词迭代并量化其对 Agent 成功率的影响。第三章构建 LangSmith 驱动的提示词版本控制体系接下来我们将通过实际的代码示例一步步构建一个利用 LangSmith 追踪提示词迭代的 Agent 系统。我们的目标是定义一个简单的 Agent。创建不同版本的提示词。构建一个评估数据集。运行评估并比较不同提示词版本在数据集上的表现。在 LangSmith UI 中分析结果理解提示词迭代如何影响 Agent 成功率。3.1 环境准备与 LangSmith 配置首先我们需要安装必要的库并配置 LangSmith 环境变量。# 安装必要的库 # pip install langchain langchain-openai langsmith import os from datetime import datetime from uuid import uuid4 # 导入 LangChain 和 LangSmith 相关的库 from langchain_openai import ChatOpenAI from langchain.agents import AgentExecutor, create_openai_tools_agent, tool from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder from langchain_core.messages import HumanMessage, AIMessage, SystemMessage from langsmith import Client, traceable from langsmith.schemas import RunType, Example, Dataset # 设置 LangSmith 环境变量 # 请确保你的 LANGCHAIN_API_KEY 已经设置 # export LANGCHAIN_API_KEYyour-langsmith-api-key # export LANGCHAIN_TRACING_V2true # export LANGCHAIN_PROJECTPrompt_Versioning_Lecture # 为你的项目命名 # 如果没有设置环境变量可以在代码中设置 # os.environ[LANGCHAIN_API_KEY] your-langsmith-api-key # os.environ[LANGCHAIN_TRACING_V2] true # os.environ[LANGCHAIN_PROJECT] Prompt_Versioning_Lecture # 初始化 LangSmith 客户端 client Client() print(LangSmith 客户端初始化完成。请确保 LANGCHAIN_API_KEY, LANGCHAIN_TRACING_V2, LANGCHAIN_PROJECT 已正确设置。)3.2 初始 Agent 的构建与提示词设计我们将构建一个简单的数学计算 Agent。这个 Agent 能够使用一个工具来执行加法运算。我们将从一个基础的系统提示词开始。# 定义一个简单的工具 tool def add(a: int, b: int) - int: Adds two integers together. return a b tools [add] # 定义一个函数来创建 Agent def create_math_agent(prompt_template: ChatPromptTemplate, llm_model_name: str gpt-4o-mini) - AgentExecutor: 创建一个基于 OpenAI 工具的数学计算 Agent。 llm ChatOpenAI(modelllm_model_name, temperature0) agent create_openai_tools_agent(llm, tools, prompt_template) agent_executor AgentExecutor(agentagent, toolstools, verboseFalse) # verboseFalse 避免控制台输出过多日志 return agent_executor # 初始提示词 (Version 1) # 这是一个非常基础的系统提示词可能不够鲁棒 prompt_v1_template ChatPromptTemplate.from_messages( [ SystemMessage(你是一个有用的数学助手可以执行算术运算。), MessagesPlaceholder(variable_namechat_history), HumanMessage(content{input}), MessagesPlaceholder(variable_nameagent_scratchpad), ] ) print(初始 Agent 和提示词 v1 定义完成。)3.3 提示词版本化与 LangSmith 追踪为了追踪不同提示词版本的表现我们需要定义多个版本的提示词字符串或ChatPromptTemplate。在运行 Agent 时确保 LangSmith 能够识别当前使用的是哪个版本的提示词。我们可以通过在Client.run_on_dataset的description或tags参数中明确指定提示词版本来实现。# 定义不同版本的提示词 # 提示词 v1 (基础版) # 仅仅告诉 Agent 它是一个数学助手 prompt_v1 ChatPromptTemplate.from_messages( [ SystemMessage(你是一个有用的数学助手可以执行算术运算。), MessagesPlaceholder(variable_namechat_history), HumanMessage(content{input}), MessagesPlaceholder(variable_nameagent_scratchpad), ] ) # 提示词 v2 (增强指令版) # 增加了一些关于如何使用工具、如何思考的明确指令并强调输出格式 prompt_v2 ChatPromptTemplate.from_messages( [ SystemMessage( 你是一个高度精确的数学助手专门用于执行算术运算。 当用户需要进行计算时你必须使用提供的工具来完成。 在提供最终答案之前请仔细思考并验证你的步骤。 最终答案必须清晰明了且只包含计算结果。 ), MessagesPlaceholder(variable_namechat_history), HumanMessage(content{input}), MessagesPlaceholder(variable_nameagent_scratchpad), ] ) # 提示词 v3 (添加 Few-shot 示例版) # 在 v2 的基础上添加了一个 Few-shot 示例以进一步指导 Agent 的行为 prompt_v3 ChatPromptTemplate.from_messages( [ SystemMessage( 你是一个高度精确的数学助手专门用于执行算术运算。 当用户需要进行计算时你必须使用提供的工具来完成。 在提供最终答案之前请仔细思考并验证你的步骤。 最终答案必须清晰明了且只包含计算结果。nn 这是一个示例n 用户计算 5 加 3n 助手Thought: 用户想计算 5 加 3。我可以使用 add 工具。n Action: addn Action Input: {a: 5, b: 3}n Observation: 8n Final Answer: 8 ), MessagesPlaceholder(variable_namechat_history), HumanMessage(content{input}), MessagesPlaceholder(variable_nameagent_scratchpad), ] ) # 提示词 v4 (精简指令强调效率版) # 尝试精简指令看是否能提高效率或降低复杂性但可能牺牲部分鲁棒性 prompt_v4 ChatPromptTemplate.from_messages( [ SystemMessage( 你是一个擅长使用工具进行数学计算的助手。 请快速准确地回答用户的数学问题直接给出最终结果。 ), MessagesPlaceholder(variable_namechat_history), HumanMessage(content{input}), MessagesPlaceholder(variable_nameagent_scratchpad), ] ) # 将所有提示词版本存储在一个字典中方便管理 prompt_versions { v1_basic: prompt_v1, v2_enhanced_instructions: prompt_v2, v3_few_shot_example: prompt_v3, v4_concise_efficient: prompt_v4, } print(f已定义 {len(prompt_versions)} 个提示词版本。) # 运行 Agent 并观察 LangSmith 追踪结果 # 虽然我们最终会使用 run_on_dataset 进行批量评估 # 但这里可以先演示单个运行的追踪效果。 print(n演示单个 Agent 运行的 LangSmith 追踪) agent_v1 create_math_agent(prompt_v1) # 在 LangSmith 中可以通过设置 LANGCHAIN_PROJECT 和 tags 来组织追踪 # 或者在调用时使用 langsmith.run_helpers.traceable 装饰器或上下文管理器 # 这里我们演示通过 langsmith.traceable 来显式命名和标记 traceable(nameAgent_Run_v1_Example, tags[prompt:v1_basic, example_run]) def run_agent_with_prompt(agent_executor: AgentExecutor, input_text: str): return agent_executor.invoke({input: input_text, chat_history: []}) # result run_agent_with_prompt(agent_v1, 计算 123 加上 456) # print(fAgent v1 示例运行结果: {result[output]}) # 此时你可以在 LangSmith UI 中看到名为 Agent_Run_v1_Example 的 Trace # 并带有 prompt:v1_basic 和 example_run 标签。在 LangSmith UI 中你将看到每次agent_executor.invoke调用都会生成一个 Trace。这个 Trace 会详细记录 Agent 的思考过程、工具调用、LLM 调用等。虽然我们还没有正式进行版本比较但通过traceable装饰器或在后续的run_on_dataset中使用tags我们已经为每个运行打上了“提示词版本”的标记。3.4 构建评估数据集 (Dataset)一个高质量的评估数据集是量化提示词效果的基础。它应该包含各种输入场景并附带预期的参考输出。# 定义数据集名称 dataset_name fMath Agent Evaluation - {datetime.now().strftime(%Y%m%d%H%M%S)} # 准备数据集的输入和预期输出 # 这里的 output 是 Agent 期望的最终答案 dataset_examples [ {input: 计算 5 加 3, output: 8}, {input: 请帮我计算 100 加上 200, output: 300}, {input: What is 7 plus 13?, output: 20}, {input: 求和 99 和 1, output: 100}, {input: 计算 12345 加上 67890, output: 80235}, {input: 3加4等于几?, output: 7}, {input: 请计算 -5 和 8 的和。, output: 3}, {input: 计算 0 和 0 的和。, output: 0}, {input: 求出 123 和 45 的和。, output: 168}, {input: 请告诉我 999 加上 111 等于多少, output: 1110}, ] # 在 LangSmith 中创建数据集 def create_or_get_dataset(dataset_name: str, examples: list) - Dataset: 检查 LangSmith 中是否存在同名数据集如果不存在则创建。 existing_datasets client.list_datasets(dataset_namedataset_name) if existing_datasets: print(f数据集 {dataset_name} 已存在。将使用现有数据集。) dataset existing_datasets[0] else: print(f创建新数据集: {dataset_name}...) dataset client.create_dataset( namedataset_name, description用于评估数学 Agent 不同提示词版本的性能。, ) for example_data in examples: client.create_example( dataset_iddataset.id, inputs{input: example_data[input]}, outputs{output: example_data[output]}, # 参考输出 ) print(f数据集 {dataset_name} 创建成功包含 {len(examples)} 个示例。) return dataset evaluation_dataset create_or_get_dataset(dataset_name, dataset_examples) print(f数据集 ID: {evaluation_dataset.id})3.5 运行自动化评估 (Evaluation Run)现在我们将使用 LangSmith 的run_on_dataset功能针对每个提示词版本运行 Agent并使用自定义评估器来判断 Agent 的成功率。评估器 (Evaluators)我们将定义一个简单的自定义评估器它检查 Agent 的最终输出是否与数据集中的参考输出完全匹配。# 定义一个自定义评估器函数 # 这个函数会接收一个 LangChain Trace (Run) 作为输入并返回一个评估结果字典 def custom_exact_match_evaluator(run: dict, example: Example) - dict: 自定义评估器检查 Agent 的最终输出是否与参考输出完全匹配。 # run[output] 对应 AgentExecutor 的最终输出 # example.outputs[output] 对应数据集中的参考输出 agent_output str(run.outputs.get(output, )).strip() if run.outputs else reference_output str(example.outputs.get(output, )).strip() if example.outputs else is_correct agent_output reference_output score 1 if is_correct else 0 feedback Correct if is_correct else fIncorrect. Expected: {reference_output}, Got: {agent_output} return { score: score, key: exact_match, # 评估指标的唯一键 comment: feedback, value: Correct if is_correct else Incorrect, # 用于分类的值 } # 将自定义评估器包装成 LangSmith 期望的格式 # 注意LangSmith 的 run_on_dataset 默认支持几种内置评估器 (如 cot_qa, qa) # 对于自定义 Python 函数我们可以直接传入函数对象 # 或者使用 langsmith.evaluation.run_evaluator 装饰器这里直接传入函数。 # 如果需要更复杂的 LLM 辅助评估可以参考 LangSmith 文档使用 evaluate.run_evaluator 和 LLM Evaluator。 # 运行评估流程 evaluation_results {} print(n开始对不同提示词版本进行评估...) for version_name, prompt_template in prompt_versions.items(): print(fn--- 评估提示词版本: {version_name} ---) agent_executor create_math_agent(prompt_template) # 使用 client.run_on_dataset 运行评估 # description 参数非常重要用于在 LangSmith UI 中区分不同的运行批次 # tags 参数可以进一步细化分类例如 prompt_version:v1 run_config { configurable: { llm: gpt-4o-mini, # 可以指定 Agent 内部使用的 LLM 模型 } } # 确保 agent_executor 是一个可调用的对象run_on_dataset 可以直接执行 # 或者封装在一个函数中 def _run_agent_for_eval(inputs: dict) - dict: return agent_executor.invoke(inputs) # LangSmith 的 run_on_dataset 会为每个 example 调用 _run_agent_for_eval # 并将结果记录为 Trace然后由评估器进行评估 test_run client.run_on_dataset( dataset_nameevaluation_dataset.name, llm_or_chain_factory_run_agent_for_eval, # 传入 Agent 的执行函数 evaluation_config{ evaluators: [custom_exact_match_evaluator], # 传入自定义评估器 }, project_nameos.environ.get(LANGCHAIN_PROJECT), descriptionf评估 Agent 提示词版本: {version_name}, tags[fprompt_version:{version_name}, agent_eval], # 添加标签以便在 UI 中筛选 # concurrency_level5, # 可以根据需要调整并发数 # max_iterations50 # 限制评估的 example 数量适合快速测试 ) evaluation_results[version_name] test_run print(f提示词版本 {version_name} 评估完成。可在 LangSmith UI 中查看。) print(n所有提示词版本的评估已提交到 LangSmith。)3.6 LangSmith UI 中的结果分析与曲线追踪完成上述代码运行后所有的评估结果都已上传到 LangSmith 平台。现在我们切换到 LangSmith 的 Web UI (app.langsmith.com) 进行分析。导航至 Project在左侧导航栏选择你的项目Prompt_Versioning_Lecture。查看 Runs在项目概览页面你会看到一系列的 Runs每个 Run 对应一次client.run_on_dataset的调用。通过description或tags(例如prompt_version:v1_basic) 可以很容易地识别出不同提示词版本的评估批次。对比不同 Run选中你想要对比的多个 Run (例如评估 Agent 提示词版本: v1_basic,v2_enhanced_instructions等)。点击“Compare”按钮。LangSmith 会生成一个对比视图展示这些 Run 的关键指标如平均得分、总耗时、错误率等。重点关注exact_match评估器的平均score。这个分数直接反映了 Agent 在数据集上的成功率。深入单个 Trace在对比视图或单个 Run 详情中可以点击任何一个 Example 的 Trace。这将打开一个详细的 Trace 视图展示 Agent 在处理该特定输入时的完整决策路径、LLM 调用、工具使用以及每个步骤的输入输出。对于评估失败的 Example (即exact_match评分为 0 的 Trace)仔细分析其内部步骤可以帮助你理解 Agent 为何出错是理解错误、规划失误、工具使用不当还是输出格式不符合要求。这对于迭代提示词至关重要。“影响曲线”的解读虽然 LangSmith 不会直接绘制一条“提示词影响曲线”图表但通过对比不同提示词版本的评估结果我们可以清晰地观察到成功率的变化趋势。例如你可以通过以下表格形式整理和解读数据表格不同提示词版本在评估数据集上的表现对比提示词版本LangSmith Run ID (部分)成功率 (%) (Exact Match Score)平均延迟 (s)错误类型分布 (通过人工分析 Trace 汇总)备注v1_basicrun_XXXX_v1702.5格式错误 (10%), 逻辑理解错误 (20%)初始基线指令模糊v2_enhanced_instructionsrun_XXXX_v2852.8格式错误 (5%), 逻辑理解错误 (10%)增强了指令明显减少格式错误v3_few_shot_examplerun_XXXX_v3923.5逻辑理解错误 (3%)添加 Few-shot 示例鲁棒性大幅提升但延迟略增v4_concise_efficientrun_XXXX_v4802.0格式错误 (8%), 逻辑理解错误 (12%)追求效率但指令精简导致性能下降从这个表格中我们可以直观地看到v1_basic作为基线成功率较低说明模糊的指令不足以指导 Agent 良好工作。v2_enhanced_instructions通过更清晰的指令显著提升了成功率表明指令的明确性至关重要。v3_few_shot_example在v2的基础上加入了 Few-shot 示例成功率达到最高。这印证了 Few-shot Learning 在引导 LLM 行为方面的强大作用尤其是在遵循特定输出格式或复杂逻辑时。需要注意的是Few-shot 可能会增加提示词的长度从而略微增加延迟和成本。v4_concise_efficient尝试精简指令以提高效率但结果是成功率有所下降。这表明在当前场景下指令的详细程度和鲁棒性比单纯的简洁更重要。这种“影响曲线”的分析使我们能够数据驱动地理解每次提示词迭代的价值避免凭空猜测并指导我们找到最优的提示词策略。第四章高级应用与最佳实践掌握了基础的提示词版本控制和评估流程后我们可以进一步探讨其高级应用和最佳实践以构建更健壮、更智能的 Agent 系统。4.1 动态提示词管理与 A/B 测试在生产环境中我们可能需要更灵活地管理提示词。动态加载将提示词存储在外部配置服务如数据库、环境变量、配置管理系统中而不是硬编码在代码里。这样可以在不修改和部署代码的情况下更新提示词。结合 LangSmith 进行 A/B 测试当有两个或更多表现良好的提示词版本时可以在生产环境中对少量用户进行 A/B 测试。随机分配用户到使用不同提示词版本的 Agent。将每个用户会话的 Trace 和结果包括用户反馈、后续行为等记录到 LangSmith。通过 LangSmith 的评估和聚合统计功能比较哪个提示词版本在真实用户场景中表现更好。这能帮助我们做出数据驱动的生产决策。4.2 结构化提示词与多组件管理复杂的 Agent 往往包含多个提示词组件System Prompt定义 Agent 的角色、目标和总体行为准则。Tool Descriptions对 Agent 可用工具的详细说明。User Prompt用户的实际输入。Few-shot Examples用于演示期望行为的示例。Reflection Prompt引导 Agent 自我反思和纠正错误的指令。对这些组件进行独立版本管理是最佳实践。例如你可以维护system_prompt_v1,system_prompt_v2以及tool_instructions_vA,tool_instructions_vB。在使用 LangChain 构建 Agent 时可以通过ChatPromptTemplate结合MessagesPlaceholder来灵活组合这些组件。# 示例组合不同版本的组件 system_prompt_component_v_alpha SystemMessage(你是一个专业的金融分析师。) system_prompt_component_v_beta SystemMessage(你是一个谨慎且擅长使用工具的金融分析师会验证所有数据。) # 工具指令可能也存在多个版本 # tool_instructions_v_x ... # tool_instructions_v_y ... # 最终的 Agent 提示词模板可以根据需要组合 final_prompt_template_v_combined_1 ChatPromptTemplate.from_messages([ system_prompt_component_v_alpha, MessagesPlaceholder(variable_namechat_history), HumanMessage(content{input}), MessagesPlaceholder(variable_nameagent_scratchpad), ]) final_prompt_template_v_combined_2 ChatPromptTemplate.from_messages([ system_prompt_component_v_beta, # 换用不同的 System Prompt 版本 MessagesPlaceholder(variable_namechat_history), HumanMessage(content{input}), MessagesPlaceholder(variable_nameagent_scratchpad), ]) # 评估时分别运行这两个组合并记录其为不同的“提示词版本”这种模块化的管理方式使得我们可以独立优化某个组件并清晰地看到其对整体性能的影响。4.3 持续集成与自动化评估将 LangSmith 评估集成到 CI/CD (Continuous Integration/Continuous Deployment) 流程中是实现自动化、高质量 Agent 开发的关键。每次提示词更新或代码提交自动触发 LangSmith 评估运行。设定性能阈值如果新的提示词版本导致 Agent 在关键指标如成功率上低于预设阈值则阻止合并或部署。自动化报告将评估结果摘要发布到团队协作工具如 Slack、Teams让团队成员及时了解 Agent 性能变化。这相当于为你的提示词建立了一套“单元测试”和“集成测试”框架确保每一次改动都是经过验证的。4.4 人工反馈与迭代闭环自动化评估虽然高效但有时无法捕捉所有细微的质量问题。人工反馈是不可或缺的。LangSmith 的人工标注LangSmith 允许用户在 Trace 视图中添加人工反馈和标签。例如可以标注某个失败是因为“理解错误”、“格式不符”或“工具选择错误”。整合反馈到数据集将高质量的人工反馈转换为新的评估 Example加入到数据集中不断丰富和优化评估基准。形成迭代闭环人工反馈 - 分析问题 - 优化提示词/Agent 逻辑 - 自动化评估 - 新一轮人工反馈。这个闭环是 Agent 持续进步的动力。4.5 团队协作与知识共享LangSmith 平台天然支持团队协作项目共享团队成员可以在同一个 LangSmith 项目下工作共享数据集、评估结果和 Trace。统一规范制定统一的提示词命名约定、标签使用规范确保团队内部对提示词版本和评估结果有共同的理解。知识沉淀LangSmith 的历史 Trace 和评估报告成为了宝贵的知识资产新成员可以快速学习和理解 Agent 的演变过程和设计原理。结语构建可信赖、高性能的 Agent 系统今天我们深入探讨了提示词版本控制在 AI Agent 开发中的核心地位并详细演示了如何利用 LangSmith 这一强大工具系统地追踪提示词迭代对 Agent 成功率的影响曲线。从最初的提示词黑盒迭代到如今 LangSmith 提供的透明化、数据驱动的评估流程我们已经能够清晰地追溯每一次提示词改动知道它们何时发生为何引入。量化每一次迭代的效果通过成功率、延迟等指标客观评估其价值。深入分析失败原因通过详细的 Trace 视图定位 Agent 行为的症结所在。构建一个持续优化、可信赖的 Agent 开发流程将提示词工程从艺术提升为科学。构建高性能、鲁棒的 AI Agent 是一项复杂且持续的工作。系统化的提示词版本控制和数据驱动的评估是成功的关键。LangSmith 为我们提供了一套完整的工具链助力开发者追踪、评估和优化 Agent 性能从而在不断变化的 AI 应用场景中构建出真正有价值的智能系统。持续迭代、数据驱动这将是你通往成功的必由之路。感谢大家的聆听