当前位置: 首页 > news >正文

从Demo到生产:用LangSmith+DeepEval打通Agent评估最后一公里

LangSmith

LangSmith 为LLM 应用提供了完整的工具链,包括:

  • 调试与追踪:实时追踪每个 LLM 调用、工具使用和 Agent 决策过程,帮助快速定位问题。
  • 性能监控:监控响应时间、Token 使用量、成本等关键指标,优化应用性能。
  • 测试与评估:创建测试数据集,评估模型输出质量(实质是关键词匹配),持续改进应用效果。
  • 数据分析:分析用户查询模式、错误率、成功率等,为产品优化提供数据支持。

使用步骤

Step1,在 LangSmith网站 获取 API 密钥:

Step2,设置环境变量:
LANGSMITH_API_KEY=your-api-key-here
LANGCHAIN_TRACING_V2=true
LANGCHAIN_PROJECT=“wealth-advisor-hybrid-agent” # 可选,用于组织追踪记录

Step3,自动追踪配置
RunnableConfig,标记与追踪(LangSmith 核心用途):
通过 tags 和 metadata 为每次运行打上标签(如用户ID、业务类型),方便在 LangSmith 后台进行筛选、分组和故障排查。

在 run_wealth_advisor 函数中,添加 LangSmith 配置:

fromlangchain_core.runnablesimportRunnableConfig# 添加 LangSmith 配置:标签和元数据config=RunnableConfig(tags=["wealth-advisor","hybrid-agent",f"customer-{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_name=f"wealth-advisor-{customer_id}-{datetime.now().strftime('%Y%m%d-%H%M%S')}")# 运行智能体(自动追踪)result=agent.invoke(initial_state,config=config)

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自动化测试

  1. 检查环境:设置LANGSMITH_API_KEY;
  2. 准备测试数据集(人工采集几条种子数据,然后让AI生成,几十条、上百条,甚至几百条测试数据);
  3. 执行评估(调用 LangSmith的evaluate()函数,自动运行所有测试用例和评估器);
  4. 结果展示(显示评估完成信息,提供 LangSmith 界面链接查看详细结果);

创建评估器:

ProcessingModeEvaluator 和 ResponseCompletenessEvaluator根据项目特定需求进行自定义实现。

ProcessingModeEvaluator(处理模式评估器),评估 Agent 是否正确选择了处理模式(反应式 vs 深思熟虑)。

# 返回结果{"key":"processing_mode","score":0.01.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 上过滤、对比。

results=evaluate(test_function,data=dataset_name,evaluators=evaluators,experiment_prefix="prompt-v2-processing-mode",# 实验/版本名max_concurrency=1,)

用 experiment_name / LANGCHAIN_PROJECT / tags 标记 Prompt 版本,这样在 LangSmith 控制台里就能通过 tags /metadata.prompt_version / 实验名区分 v1、v2 等不同 Prompt。

不同 Prompt 模板用不同 run_name / tag

config=RunnableConfig(run_name="coordination-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)。
  • 控制台上:看评估和生产数据,找到问题和改进点,再回到代码继续下一轮。

OpenEvals

OpenEvals 是一个独立的开源评估器库,由 LangChain 团队开发和维护,实质是通过LLM进行评估。

pip install openevals

openevals不是 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格式返回:
score:0 - 100分
reseaon:如果扣分了,有个扣分的理由(需要时,和reference有明显的冲突)

非LangChain家族的Agent工具

DeepEval

DeepEval,一个开源的 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 Agent

Qwen-Agent是通义千问的AI Agent框架,基于阿里云大模型进行开源,支持多模态交互与工具调用。

Qwen-Agent与LangChain/LangGraph在Agent搭建上的区别:

  • 架构理念
    LangChain/LangGraph:显式状态管理 + 图式工作流,需要明确定义每个节点和状态流转;
    qwen-agent:隐式状态管理 + 声明式设计,通过 system_message 描述行为,框架自动处理;
  • 代码量
    LangChain/LangGraph:703 行(需要定义状态、节点、边等);
    qwen-agent:375 行(减少约 47%);
  • 适用场景
    LangChain/LangGraph 适合复杂业务流程(多阶段、多分支),企业级应用(需要追踪和监控),需要与 LangChain 生态集成;
    qwen-agent 适合快速原型开发,中文场景应用,简单对话式应用,需要快速交付的项目。
特性LangChainqwen-agent
学习曲线陡峭(2-3周)平缓(3-5天)
可控性高(精确控制)中(框架控制)
可视化调试LangSmith-
Web UI需自建内置
工具注册手动管理装饰器
中文支持一般很好

LangFuse

LangFuse 是一个开源的 LLM(大语言模型)工程平台,定位是“可观测性 + 调试 + 评估”三合一的 LLMOps 工具

LangFuse:全开源,专注“可观测 + 提示管理 + 轻量评估”,任何框架/模型都能接入 。
LangSmith:LangChain 官方商业产品,主打“企业级测试-评估-监控”闭环,深度耦合 LangChain 生态。

在qwen-agent基础上增加LangFuse进行使用:

  1. 注册LangFuse
  2. 需要配置环境变量:
    LANGFUSE_SECRET_KEY = “sk-XX”
    LANGFUSE_PUBLIC_KEY = “pk-XX”
    LANGFUSE_BASE_URL = “https://us.cloud.langfuse.com”
  3. 集成LangFuse

http://www.gsyq.cn/news/1583708.html

相关文章:

  • ATAES132安全芯片实战:MAC生成与AES加密引擎应用详解
  • 端到端加密项目 KaleidoTalk:你的聊天记录,只有你能看见
  • AI生成歌曲后还能继续编辑的软件有哪些
  • 能源转型背景下风光储充技术解析
  • AI写歌软件怎么选?从灵感生成到成品发行的工具实测
  • AI写期刊论文用什么工具?5款主流AI论文写作实测对比期刊论文写作的痛点
  • 布局谷歌GEO前,出海企业可以了解的几个关键环节
  • 2026 年行业招聘数据与薪酬报告
  • AT90PWM2/3 ADC实战:从配置到精度优化的嵌入式电机控制指南
  • 万能去水印神器,免费get!
  • 基于ATA6844-DK开发板的BLDC电机六步换相控制实战指南
  • AI外呼系统技术演进对比:主流厂商AI外呼自主决策能力深度横评
  • 国内外住宿平台数据合规技术差异:从个保法落地实践到GDPR全域管控对比
  • AVR XMEGA A3U嵌入式开发实战:从GPIO、AES加密到ADC高精度采集
  • DMA技术如何优化嵌入式系统性能:ADC到USART数据传输实战
  • “无主权路由”的奇袭:Sakana AI 如何在地缘政治夹缝中完成技术突围?
  • 单细胞NMF非负矩阵分解降维及亚群分析应用
  • MPLAB Harmony加密库实战:从ECC/RSA到3DES/SHA的嵌入式安全开发指南
  • AT24MAC芯片实战:硬件唯一ID在嵌入式设备身份认证与量产中的应用
  • 你的agent简历上缺的不是技术栈,缺的是Know-how
  • Atmel ATA820x UHF接收器:ASK/FSK双模、低功耗与高灵敏度设计实战
  • Article A (EN)
  • 嵌入式系统硬件安全实践:TPM开发套件I2C/SPI集成与TSS软件栈应用
  • ATmega164P/324P/644P ADC配置与低功耗设计实战指南
  • 分布式数据库原理及技术
  • ATtiny1634 ADC精度优化与热敏电阻温度测量实战
  • 易元智创APP:账号数据智能复盘,海南易元现实科技有限公司精准优化流量短板
  • AVR单片机JTAG与边界扫描技术:从原理到硬件调试实战
  • 什么云手机适合普通人?实测两款不掉线卡顿的好用云手机
  • FPGA硬件加速DDS通信:原理、架构与软硬协同实现