用途
langsmith-evaluator 用于在 LangSmith 中搭建评估(evaluation)流程。它围绕三个核心组件展开:创建评估器(LLM-as-Judge 与自定义代码)、区分离线与在线评估器、以及通过 CLI 管理评估器规则的生命周期。
两类评估器
- LLM-as-Judge:用大模型对智能体输出打分,适合准确性、有用性、相关性等主观质量维度,需要提供模型配置,以及提示词与 schema 文件或 Prompt Hub 引用。
- 自定义代码评估器:使用确定性逻辑,适合精确匹配、轨迹校验、格式合规等客观检查,上传后运行在受限的沙箱环境中。
离线与在线
- 离线评估器绑定数据集,函数签名为 (run, example),可同时拿到运行输出与数据集样例,用于与期望值比较,上传时用 --dataset。
- 在线评估器绑定项目,函数签名为 (run),只有运行输出、没有样例参数,用于生产运行的实时质检,上传时用 --project。二者必须明确指定其一,不支持全局评估器。
使用方式
先完成认证:可以用 langsmith auth login 保存 CLI 配置,或设置 LANGSMITH_API_KEY;并可用 LANGSMITH_ENDPOINT、LANGSMITH_PROJECT、LANGSMITH_WORKSPACE_ID 指定环境与工作区。注意 CLI 的 OAuth 配置只对 langsmith 命令生效,Python/TypeScript SDK 不会自动复用,使用 SDK 前需确认端点、密钥和工作区与 CLI 一致。
依赖安装方面,Python 可用 pip install langsmith langchain-openai python-dotenv,JavaScript 可用 npm install langsmith openai,CLI 通过安装脚本获取并支持自更新。
创建 LLM-as-Judge 规则使用 langsmith evaluator create-llm,需提供 --model-config 以及 --dataset 或 --project 之一,并提供 --prompt 与 --schema 文件或 --hub-ref。其余子命令包括:evaluator list 列出规则,evaluator get 按显示名或会话 ID 查询,evaluator delete 按显示名删除,evaluator upload 上传代码评估器。替换使用同名加 --replace,会先提示再修改匹配规则。
关键限制与注意事项
- 每个评估器只返回一个指标;需要多个指标时应创建多个评估器函数。
- 本地 evaluate() 与上传后的评估器在列名、run 类型(RunTree 对象与 dict)和返回格式上存在差异,需要分别处理。
- 上传的评估器在沙箱中运行,包访问非常有限,只应使用内置/标准库导入,且导入应放在函数体内。
- 模型配置必须来自服务端支持的可工作来源,不能凭本地构造臆造;若报反序列化不允许,说明模型配置中含被禁用的类。
- get 基于显示名,可能返回多条规则;delete 基于名��,会删除工作区内所有同名规则,因此删除前应先 get 核查全部匹配,无法安全定位目标时停止。
- 除用户明确要求外,不要使用 --yes 标志。
适用场景
适用于需要系统化衡量智能体输出质量、在生产中做实时质量监控、或对工具调用轨迹进行校验的 LangSmith 用户。资料强调:在编写任何评估或提取逻辑之前,必须先运行智能体、检查实际输出结构并查询追踪,输出结构随框架、智能体类型和配置差异很大,不能假设其形态。