推荐阅读在深入了解本内容之前,建议先阅读以下内容:
在线评估为您的生产轨迹提供实时反馈。这对于持续监控应用程序性能非常有用——可以识别问题、衡量改进效果,并确保长期保持一致的品质。
代码评估器允许您直接在 LangSmith 中使用 Python 或 JavaScript 编写评估器。通常用于验证数据的结构或统计属性。
当在线评估器在轨迹中的任何运行上执行时,该轨迹将自动升级为
扩展数据保留。此升级会影响轨迹定价,但确保符合您评估标准(通常是那些对分析最有价值的轨迹)的轨迹得以保留以供调查。
查看在线评估器
前往 Tracing Projects 标签页并选择一个追踪项目。要查看该项目的现有在线评估器,请点击 Evaluators 标签页。
配置在线评估器
1. 导航至在线评估器
前往 Tracing Projects 标签页并选择一个追踪项目。点击追踪项目页面右上角的 + New,然后点击 New Evaluator。选择 code 评估器。
2. 命名您的评估器
3. 创建过滤器
例如,您可能希望基于以下条件应用特定的评估器:
- 运行中用户留下反馈表明响应不令人满意。
- 运行中调用了特定的工具调用。有关更多信息,请参阅筛选工具调用。
- 运行匹配特定的元数据片段(例如,如果您记录带有
plan_type 的轨迹,并且只想对来自企业客户的轨迹运行评估)。有关更多信息,请参阅向轨迹添加元数据。
评估器上的过滤器与您在项目中筛选轨迹时的工作方式相同。有关过滤器的更多信息,您可以参考筛选轨迹。
在创建评估器过滤器时,检查运行通常很有帮助。打开评估器配置面板后,您可以检查运行并对其应用过滤器。您对运行表应用的任何过滤器将自动反映在评估器的过滤器中。
4. (可选)配置采样率
配置采样率以控制触发自动化操作的过滤运行百分比。例如,为了控制成本,您可能希望设置过滤器,仅将评估器应用于 10% 的轨迹。为此,您需要将采样率设置为 0.1。
5. (可选)将规则应用于过去的运行
通过切换 Apply to past runs 并输入“Backfill from”日期,将规则应用于过去的运行。这仅在规则创建时可能。注意:回填作为后台作业处理,因此您不会立即看到结果。
为了跟踪回填进度,您可以查看评估器的日志,方法是前往追踪项目内的 Evaluators 标签页,并点击您创建的评估器的 Logs 按钮。在线评估器日志类似于自动化规则日志。
- 添加评估器名称
- 可选地筛选您希望应用评估器的运行,或配置采样率。
- 选择 Apply Evaluator
编写您的评估函数
代码评估器限制。允许的库:您可以导入所有标准库函数,以及以下公共包:numpy (v2.2.2): "numpy"
pandas (v1.5.2): "pandas"
jsonschema (v4.21.1): "jsonschema"
scipy (v1.14.1): "scipy"
sklearn (v1.26.4): "scikit-learn"
网络访问:您无法从代码评估器访问互联网。
代码评估器必须内联编写。我们建议在 LangSmith 中设置代码评估器之前先在本地进行测试。
在 UI 中,您将看到一个面板,允许您内联编写代码,并附带一些起始代码:
代码评估器接受一个参数:
它们返回一个值:
- 反馈字典:一个字典,其键是您想要返回的反馈类型,值是为该反馈键给出的分数。例如,
{"correctness": 1, "silliness": 0} 将在运行上创建两种类型的反馈,一种表示正确,另一种表示不愚蠢。
在下面的截图中,您可以看到一个简单函数的示例,该函数验证实验中的每个运行是否具有已知的 json 字段:
import json
def perform_eval(run):
output_to_validate = run['outputs']
is_valid_json = 0
# 断言可以序列化/反序列化为 json
try:
json.loads(json.dumps(output_to_validate))
except Exception as e:
return { "formatted": False }
# 断言输出事实存在
if "facts" not in output_to_validate:
return { "formatted": False }
# 断言必需字段存在
if "years_mentioned" not in output_to_validate["facts"]:
return { "formatted": False }
return {"formatted": True}
function perform_eval(run) {
const outputToValidate = run.outputs;
// 断言可以序列化/反序列化为 json
try {
JSON.stringify(outputToValidate);
JSON.parse(JSON.stringify(outputToValidate));
} catch (e) {
return { "formatted": false };
}
// 断言输出事实存在
if (!("facts" in outputToValidate)) {
return { "formatted": false };
}
// 断言必需字段存在
if (!outputToValidate["facts"].hasOwnProperty("years_mentioned")) {
return { "formatted": false };
}
return { "formatted": true };
}
测试并保存您的评估函数
在保存之前,您可以通过点击 Test Code 在最近的运行上测试您的评估器函数,以确保代码正确执行。
一旦您点击 Save,您的在线评估器将在新采样的运行(或如果您选择了回填选项,也包括回填的运行)上运行。
如果您更喜欢视频教程,请查看 LangSmith 入门课程中的在线评估视频。