LangSmithLangSmith 为LLM 应用提供了完整的工具链包括调试与追踪实时追踪每个 LLM 调用、工具使用和 Agent 决策过程帮助快速定位问题。性能监控监控响应时间、Token 使用量、成本等关键指标优化应用性能。测试与评估创建测试数据集评估模型输出质量实质是关键词匹配持续改进应用效果。数据分析分析用户查询模式、错误率、成功率等为产品优化提供数据支持。使用步骤Step1在 LangSmith网站 获取 API 密钥Step2设置环境变量LANGSMITH_API_KEYyour-api-key-hereLANGCHAIN_TRACING_V2trueLANGCHAIN_PROJECT“wealth-advisor-hybrid-agent” # 可选用于组织追踪记录Step3自动追踪配置RunnableConfig标记与追踪LangSmith 核心用途通过 tags 和 metadata 为每次运行打上标签如用户ID、业务类型方便在 LangSmith 后台进行筛选、分组和故障排查。在 run_wealth_advisor 函数中添加 LangSmith 配置fromlangchain_core.runnablesimportRunnableConfig# 添加 LangSmith 配置标签和元数据configRunnableConfig(tags[wealth-advisor,hybrid-agent,fcustomer-{customer_id},customer_profile.get(risk_tolerance,unknown)],metadata{customer_id:customer_id,risk_tolerance:customer_profile.get(risk_tolerance,unknown),investment_horizon:customer_profile.get(investment_horizon,unknown),portfolio_value:customer_profile.get(portfolio_value,0),user_query:user_query[:100],# 只记录前100个字符timestamp:datetime.now().isoformat()},run_namefwealth-advisor-{customer_id}-{datetime.now().strftime(%Y%m%d-%H%M%S)})# 运行智能体自动追踪resultagent.invoke(initial_state,configconfig)Waterfall 瀑布式可视化每一步的耗时找出“卡点”区分哪些步骤是串行、哪些可以并行提供优化依据LangSmith网页展示Add Example to dataset当前这条 Trace一次完整调用 保存为 带输入/输出参考答案的样本并挂到选定的 Dataset 里。之后这条样本就能被用来做批量回归测试在 LangSmith 的 “Tests”里跑新版 prompt/模型看指标变化。一键生成Few-shot 示例在Playground 里直接把它插到 prompt 上下文。人工持续迭代把线上真实 bad-case或 good-case 收进来完善这个 Dataset养成“黄金测试集”。当 Agent 执行出现问题时可以在 LangSmith 中查看每个节点的输入和输出LLM 的完整 Prompt 和响应工具调用的参数和结果状态转换的详细过程LangSmith自动化测试检查环境设置LANGSMITH_API_KEY准备测试数据集人工采集几条种子数据然后让AI生成几十条、上百条甚至几百条测试数据执行评估调用 LangSmith的evaluate()函数自动运行所有测试用例和评估器结果展示显示评估完成信息提供 LangSmith 界面链接查看详细结果创建评估器ProcessingModeEvaluator 和 ResponseCompletenessEvaluator根据项目特定需求进行自定义实现。ProcessingModeEvaluator处理模式评估器评估 Agent 是否正确选择了处理模式反应式 vs 深思熟虑。# 返回结果{key:processing_mode,score:0.0或1.0,comment:处理模式正确/不匹配}ResponseCompletenessEvaluator响应完整性评估器评估响应是否包含期望的关键信息。# 返回结果{key:response_completeness,score:0.0-1.0,comment:找到 X/Y 个期望关键词}评估执行流程图执行结果展示Prompt Ops提示工程运维prompt 单独放到一个 .yaml文件中用于提示词的管理。原因AI有时候生成提示词会污染了之前的提示词有可能多维护了一个prompt有时候人工介入手动维护提示词更方便安全。Prompt Ops提示工程运维是一种工程化方法用于系统地管理、测试、优化和监控 LLM 应用中的提示Prompt确保提示的质量和一致性实现持续改进。Prompt 版本管理代码侧LangChain——负责“产生日志 标记版本”核心思路Prompt 的真正“版本控制”一般还是在 代码 / Git 里不同 Prompt 模板、不同分支。LangSmith 负责的是区分这些版本的运行记录方便你之后在 Web 上过滤、对比。resultsevaluate(test_function,datadataset_name,evaluatorsevaluators,experiment_prefixprompt-v2-processing-mode,# 实验/版本名max_concurrency1,)用 experiment_name / LANGCHAIN_PROJECT / tags 标记 Prompt 版本,这样在 LangSmith 控制台里就能通过 tags /metadata.prompt_version / 实验名区分 v1、v2 等不同 Prompt。不同 Prompt 模板用不同 run_name / tagconfigRunnableConfig(run_namecoordination-prompt-v3,tags[prompt-v3],)LangSmith 控制台smith.langchain.com——负责“浏览 对比 管理实验”在 Runs / Experiments 页面按 experiment_prefix/tag/metadata.prompt_version 过滤看到「v1 vs v2」的所有调用。对比不同版本的成功率、完整性得分、响应长度、延迟、token/cost 等。在 Datasets / Evaluations 页面对同一个测试数据集运行多次评估不同 Prompt 版本、不同代码分支在UI 上对比多个实验结果。Prompt 版本管理代码里给不同 Prompt 加版本标签experiment_name / tag / metadata把调用都打到 LangSmith。控制台上按版本过滤和对比运行结果决定保留哪个版本。Prompt 持续优化代码里改 Prompt 跑评估脚本比如这里的 langsmith_testing_evaluation.py。控制台上看评估和生产数据找到问题和改进点再回到代码继续下一轮。OpenEvalsOpenEvals 是一个独立的开源评估器库由 LangChain 团队开发和维护实质是通过LLM进行评估。pip install openevalsopenevals不是 LangSmith 的一部分但与 LangSmith 深度集成两者配合使用但不是包含关系。openevals安装依赖langchain - LangChain 核心库;langchain-openai - OpenAI 集成;langsmith - LangSmith 客户端;rich - 终端美化OpenEvals 提供评估器的实现LangSmith 提供评估的平台和基础设施OpenEvals 的评估器可以在 LangSmith 中使用LangSmith可以通过OpenEvals调用多种内置评估器可以直接使用。评估器功能使用场景Correctness正确性评估评估答案是否正确Relevance相关性评估评估回答是否相关Conciseness简洁性评估评估回答是否简洁………Helpfulness帮助性评估评估回答是否有帮助Harmfulness有害性评估检测是否有害内容OpenEvals 内置 Prompt 总结Prompt 名称功能使用场景CORRECTNESS_PROMPT正确性评估验证答案正确性CONCISENESS_PROMPT简洁性评估评估回答简洁度ANSWER_RELEVANCE_PROMPT相关性评估评估回答相关性RAG_HELPFULNESS_PROMPTRAG 帮助性RAG 系统评估RAG_GROUNDEDNESS_PROMPTRAG 基础性验证基于检索内容RAG_RETRIEVAL_RELEVANCE_PROMPTRAG 检索相关性评估检索质量TOXICITY_PROMPT毒性/有害性内容安全检测HALLUCINATION_PROMPT幻觉检测检测无根据声明CODE_CORRECTNESS_PROMPT代码正确性代码评估CODE_CORRECTNESS_PROMPT_WITH_REFERENCE_OUTPUTS带参考的代码评估有标准答案的代码评估PLAN_ADHERENCE_PROMPT计划遵循度Agent 计划执行评估案例你现在是一个大模型的评估器用于评估答案的正确性。用户的问题{query}参考答案{reference}AI作为智能客服给到的答案{AI_answer}标准如果AI的答案与reference没有明显冲突则为满分如果有明显reference提到的禁止事项但是AI_answer允许的需要扣分。JSON格式返回score0 - 100分reseaon如果扣分了有个扣分的理由需要时和reference有明显的冲突非LangChain家族的Agent工具DeepEvalDeepEval一个开源的 LLM 评估框架专注于对大语言模型应用进行系统化的质量测试和评估。它就像传统软件开发中的 Pytest/JUnit为 LLM 应用提供了标准化的测试能力。DeepEval的特点内置40评估指标提供丰富的评估指标覆盖 RAG、Agent、对话等多种场景包括幻觉检测、相关性、忠实度等。Hallucination 幻觉检测Faithfulness 忠实度Answer Relevancy 答案相关性Contextual Relevancy 上下文相关性Toxicity 有害内容检测Bias 偏见检测Summarization 摘要质量G-Eval 通用评估DeepEval 质检员类似软件开发里的单元测试负责在上线前给模型打分确保质量不下降。LangSmith监控室像显微镜或黑匣子负责在线上追踪 Agent 思考过程、定位错误、分析成本。工具传统软件类比核心作用场景关键词DeepEvalPytest / JUnit跑分测试离线、CI/CD流水线、回归测试、指标打分LangSmithDatadog / Sentry调试观测在线、链路追踪、Debug、成本分析、Prompt管理DeepEval 和 LangSmith可以协同工作DeepEval 负责上线前的质量把关LangSmith 负责上线后的监控和调试。OpenEvals与DeepEva的关系DeepEval 与 OpenEvals 的作用高度重叠同类竞品都是开源的 LLM 输出评估器库指标丰富度DeepEval 胜出它把 RAGAS、Helm、MT-bench 等论文里的指标都实现了一遍OpenEvals 目前以“忠实度、相关性、工具正确性”等核心指标为主。自定义体验DeepEval 提供 G-Eval 语法糖写起来最短OpenEvals 也支持自定义但需要继承 Evaluator 基类稍微多几行模板代码。运行位置两者都支持本地运行LLM-as-a-judge 或 NLP 小模型DeepEval 默认完全离线OpenEvals 本地/云端皆可取决于你在 LangSmith 里是否打开上传开关。LangChain / LangSmith 用户OpenEvals 是亲儿子一条命令就能在实验里调用DeepEval 也能接入但要在代码里手动把 trace 喂给 DeepEval 的 testcase再把分数写回 LangSmith多两步封装。Qwen AgentQwen-Agent是通义千问的AI Agent框架基于阿里云大模型进行开源支持多模态交互与工具调用。Qwen-Agent与LangChain/LangGraph在Agent搭建上的区别架构理念LangChain/LangGraph显式状态管理 图式工作流需要明确定义每个节点和状态流转qwen-agent隐式状态管理 声明式设计通过 system_message 描述行为框架自动处理代码量LangChain/LangGraph703 行需要定义状态、节点、边等qwen-agent375 行减少约 47%适用场景LangChain/LangGraph 适合复杂业务流程多阶段、多分支企业级应用需要追踪和监控需要与 LangChain 生态集成qwen-agent 适合快速原型开发中文场景应用简单对话式应用需要快速交付的项目。特性LangChainqwen-agent学习曲线陡峭2-3周平缓3-5天可控性高精确控制中框架控制可视化调试LangSmith-Web UI需自建内置工具注册手动管理装饰器中文支持一般很好LangFuseLangFuse 是一个开源的 LLM大语言模型工程平台定位是“可观测性 调试 评估”三合一的 LLMOps 工具LangFuse全开源专注“可观测 提示管理 轻量评估”任何框架/模型都能接入 。LangSmithLangChain 官方商业产品主打“企业级测试-评估-监控”闭环深度耦合 LangChain 生态。在qwen-agent基础上增加LangFuse进行使用注册LangFuse需要配置环境变量LANGFUSE_SECRET_KEY “sk-XX”LANGFUSE_PUBLIC_KEY “pk-XX”LANGFUSE_BASE_URL “https://us.cloud.langfuse.com”集成LangFuse
从Demo到生产:用LangSmith+DeepEval打通Agent评估最后一公里
LangSmithLangSmith 为LLM 应用提供了完整的工具链包括调试与追踪实时追踪每个 LLM 调用、工具使用和 Agent 决策过程帮助快速定位问题。性能监控监控响应时间、Token 使用量、成本等关键指标优化应用性能。测试与评估创建测试数据集评估模型输出质量实质是关键词匹配持续改进应用效果。数据分析分析用户查询模式、错误率、成功率等为产品优化提供数据支持。使用步骤Step1在 LangSmith网站 获取 API 密钥Step2设置环境变量LANGSMITH_API_KEYyour-api-key-hereLANGCHAIN_TRACING_V2trueLANGCHAIN_PROJECT“wealth-advisor-hybrid-agent” # 可选用于组织追踪记录Step3自动追踪配置RunnableConfig标记与追踪LangSmith 核心用途通过 tags 和 metadata 为每次运行打上标签如用户ID、业务类型方便在 LangSmith 后台进行筛选、分组和故障排查。在 run_wealth_advisor 函数中添加 LangSmith 配置fromlangchain_core.runnablesimportRunnableConfig# 添加 LangSmith 配置标签和元数据configRunnableConfig(tags[wealth-advisor,hybrid-agent,fcustomer-{customer_id},customer_profile.get(risk_tolerance,unknown)],metadata{customer_id:customer_id,risk_tolerance:customer_profile.get(risk_tolerance,unknown),investment_horizon:customer_profile.get(investment_horizon,unknown),portfolio_value:customer_profile.get(portfolio_value,0),user_query:user_query[:100],# 只记录前100个字符timestamp:datetime.now().isoformat()},run_namefwealth-advisor-{customer_id}-{datetime.now().strftime(%Y%m%d-%H%M%S)})# 运行智能体自动追踪resultagent.invoke(initial_state,configconfig)Waterfall 瀑布式可视化每一步的耗时找出“卡点”区分哪些步骤是串行、哪些可以并行提供优化依据LangSmith网页展示Add Example to dataset当前这条 Trace一次完整调用 保存为 带输入/输出参考答案的样本并挂到选定的 Dataset 里。之后这条样本就能被用来做批量回归测试在 LangSmith 的 “Tests”里跑新版 prompt/模型看指标变化。一键生成Few-shot 示例在Playground 里直接把它插到 prompt 上下文。人工持续迭代把线上真实 bad-case或 good-case 收进来完善这个 Dataset养成“黄金测试集”。当 Agent 执行出现问题时可以在 LangSmith 中查看每个节点的输入和输出LLM 的完整 Prompt 和响应工具调用的参数和结果状态转换的详细过程LangSmith自动化测试检查环境设置LANGSMITH_API_KEY准备测试数据集人工采集几条种子数据然后让AI生成几十条、上百条甚至几百条测试数据执行评估调用 LangSmith的evaluate()函数自动运行所有测试用例和评估器结果展示显示评估完成信息提供 LangSmith 界面链接查看详细结果创建评估器ProcessingModeEvaluator 和 ResponseCompletenessEvaluator根据项目特定需求进行自定义实现。ProcessingModeEvaluator处理模式评估器评估 Agent 是否正确选择了处理模式反应式 vs 深思熟虑。# 返回结果{key:processing_mode,score:0.0或1.0,comment:处理模式正确/不匹配}ResponseCompletenessEvaluator响应完整性评估器评估响应是否包含期望的关键信息。# 返回结果{key:response_completeness,score:0.0-1.0,comment:找到 X/Y 个期望关键词}评估执行流程图执行结果展示Prompt Ops提示工程运维prompt 单独放到一个 .yaml文件中用于提示词的管理。原因AI有时候生成提示词会污染了之前的提示词有可能多维护了一个prompt有时候人工介入手动维护提示词更方便安全。Prompt Ops提示工程运维是一种工程化方法用于系统地管理、测试、优化和监控 LLM 应用中的提示Prompt确保提示的质量和一致性实现持续改进。Prompt 版本管理代码侧LangChain——负责“产生日志 标记版本”核心思路Prompt 的真正“版本控制”一般还是在 代码 / Git 里不同 Prompt 模板、不同分支。LangSmith 负责的是区分这些版本的运行记录方便你之后在 Web 上过滤、对比。resultsevaluate(test_function,datadataset_name,evaluatorsevaluators,experiment_prefixprompt-v2-processing-mode,# 实验/版本名max_concurrency1,)用 experiment_name / LANGCHAIN_PROJECT / tags 标记 Prompt 版本,这样在 LangSmith 控制台里就能通过 tags /metadata.prompt_version / 实验名区分 v1、v2 等不同 Prompt。不同 Prompt 模板用不同 run_name / tagconfigRunnableConfig(run_namecoordination-prompt-v3,tags[prompt-v3],)LangSmith 控制台smith.langchain.com——负责“浏览 对比 管理实验”在 Runs / Experiments 页面按 experiment_prefix/tag/metadata.prompt_version 过滤看到「v1 vs v2」的所有调用。对比不同版本的成功率、完整性得分、响应长度、延迟、token/cost 等。在 Datasets / Evaluations 页面对同一个测试数据集运行多次评估不同 Prompt 版本、不同代码分支在UI 上对比多个实验结果。Prompt 版本管理代码里给不同 Prompt 加版本标签experiment_name / tag / metadata把调用都打到 LangSmith。控制台上按版本过滤和对比运行结果决定保留哪个版本。Prompt 持续优化代码里改 Prompt 跑评估脚本比如这里的 langsmith_testing_evaluation.py。控制台上看评估和生产数据找到问题和改进点再回到代码继续下一轮。OpenEvalsOpenEvals 是一个独立的开源评估器库由 LangChain 团队开发和维护实质是通过LLM进行评估。pip install openevalsopenevals不是 LangSmith 的一部分但与 LangSmith 深度集成两者配合使用但不是包含关系。openevals安装依赖langchain - LangChain 核心库;langchain-openai - OpenAI 集成;langsmith - LangSmith 客户端;rich - 终端美化OpenEvals 提供评估器的实现LangSmith 提供评估的平台和基础设施OpenEvals 的评估器可以在 LangSmith 中使用LangSmith可以通过OpenEvals调用多种内置评估器可以直接使用。评估器功能使用场景Correctness正确性评估评估答案是否正确Relevance相关性评估评估回答是否相关Conciseness简洁性评估评估回答是否简洁………Helpfulness帮助性评估评估回答是否有帮助Harmfulness有害性评估检测是否有害内容OpenEvals 内置 Prompt 总结Prompt 名称功能使用场景CORRECTNESS_PROMPT正确性评估验证答案正确性CONCISENESS_PROMPT简洁性评估评估回答简洁度ANSWER_RELEVANCE_PROMPT相关性评估评估回答相关性RAG_HELPFULNESS_PROMPTRAG 帮助性RAG 系统评估RAG_GROUNDEDNESS_PROMPTRAG 基础性验证基于检索内容RAG_RETRIEVAL_RELEVANCE_PROMPTRAG 检索相关性评估检索质量TOXICITY_PROMPT毒性/有害性内容安全检测HALLUCINATION_PROMPT幻觉检测检测无根据声明CODE_CORRECTNESS_PROMPT代码正确性代码评估CODE_CORRECTNESS_PROMPT_WITH_REFERENCE_OUTPUTS带参考的代码评估有标准答案的代码评估PLAN_ADHERENCE_PROMPT计划遵循度Agent 计划执行评估案例你现在是一个大模型的评估器用于评估答案的正确性。用户的问题{query}参考答案{reference}AI作为智能客服给到的答案{AI_answer}标准如果AI的答案与reference没有明显冲突则为满分如果有明显reference提到的禁止事项但是AI_answer允许的需要扣分。JSON格式返回score0 - 100分reseaon如果扣分了有个扣分的理由需要时和reference有明显的冲突非LangChain家族的Agent工具DeepEvalDeepEval一个开源的 LLM 评估框架专注于对大语言模型应用进行系统化的质量测试和评估。它就像传统软件开发中的 Pytest/JUnit为 LLM 应用提供了标准化的测试能力。DeepEval的特点内置40评估指标提供丰富的评估指标覆盖 RAG、Agent、对话等多种场景包括幻觉检测、相关性、忠实度等。Hallucination 幻觉检测Faithfulness 忠实度Answer Relevancy 答案相关性Contextual Relevancy 上下文相关性Toxicity 有害内容检测Bias 偏见检测Summarization 摘要质量G-Eval 通用评估DeepEval 质检员类似软件开发里的单元测试负责在上线前给模型打分确保质量不下降。LangSmith监控室像显微镜或黑匣子负责在线上追踪 Agent 思考过程、定位错误、分析成本。工具传统软件类比核心作用场景关键词DeepEvalPytest / JUnit跑分测试离线、CI/CD流水线、回归测试、指标打分LangSmithDatadog / Sentry调试观测在线、链路追踪、Debug、成本分析、Prompt管理DeepEval 和 LangSmith可以协同工作DeepEval 负责上线前的质量把关LangSmith 负责上线后的监控和调试。OpenEvals与DeepEva的关系DeepEval 与 OpenEvals 的作用高度重叠同类竞品都是开源的 LLM 输出评估器库指标丰富度DeepEval 胜出它把 RAGAS、Helm、MT-bench 等论文里的指标都实现了一遍OpenEvals 目前以“忠实度、相关性、工具正确性”等核心指标为主。自定义体验DeepEval 提供 G-Eval 语法糖写起来最短OpenEvals 也支持自定义但需要继承 Evaluator 基类稍微多几行模板代码。运行位置两者都支持本地运行LLM-as-a-judge 或 NLP 小模型DeepEval 默认完全离线OpenEvals 本地/云端皆可取决于你在 LangSmith 里是否打开上传开关。LangChain / LangSmith 用户OpenEvals 是亲儿子一条命令就能在实验里调用DeepEval 也能接入但要在代码里手动把 trace 喂给 DeepEval 的 testcase再把分数写回 LangSmith多两步封装。Qwen AgentQwen-Agent是通义千问的AI Agent框架基于阿里云大模型进行开源支持多模态交互与工具调用。Qwen-Agent与LangChain/LangGraph在Agent搭建上的区别架构理念LangChain/LangGraph显式状态管理 图式工作流需要明确定义每个节点和状态流转qwen-agent隐式状态管理 声明式设计通过 system_message 描述行为框架自动处理代码量LangChain/LangGraph703 行需要定义状态、节点、边等qwen-agent375 行减少约 47%适用场景LangChain/LangGraph 适合复杂业务流程多阶段、多分支企业级应用需要追踪和监控需要与 LangChain 生态集成qwen-agent 适合快速原型开发中文场景应用简单对话式应用需要快速交付的项目。特性LangChainqwen-agent学习曲线陡峭2-3周平缓3-5天可控性高精确控制中框架控制可视化调试LangSmith-Web UI需自建内置工具注册手动管理装饰器中文支持一般很好LangFuseLangFuse 是一个开源的 LLM大语言模型工程平台定位是“可观测性 调试 评估”三合一的 LLMOps 工具LangFuse全开源专注“可观测 提示管理 轻量评估”任何框架/模型都能接入 。LangSmithLangChain 官方商业产品主打“企业级测试-评估-监控”闭环深度耦合 LangChain 生态。在qwen-agent基础上增加LangFuse进行使用注册LangFuse需要配置环境变量LANGFUSE_SECRET_KEY “sk-XX”LANGFUSE_PUBLIC_KEY “pk-XX”LANGFUSE_BASE_URL “https://us.cloud.langfuse.com”集成LangFuse