Skip to main content
Evaluator SDK 在您自己的基础设施上运行评估。您的 Worker 向 Failproof AI 注册评估项,在 Session 完成后认领它们、打分,并通过出站 HTTPS 提交结果——无需任何入站连接。它适用于托管 Python 无法完成的场景——LLM 裁判、模型调用、第三方包、密钥和网络访问。其结果会与托管评估结果一并显示在评估页面上,并标记为 customer。 它包含在 failproofai-sdk 中,位于 failproofai_sdk.evaluator 下;导入 Tracing SDK 不会加载它。

编写评估

  • @app.eval(key, version=...) 注册一个评估项。key 是其结果的显示名称;每次逻辑变更时更新版本号,每条结果都会保留生成它的版本信息。单个 Worker 最多可持有 100 个评估项。
  • result_kind 默认为 "score",除非您另行指定。对于 "metric" 或 "assertion" 类型的评估,请在 metrics 或 assertions 中以与 key 相同的名称命名对应条目,该条目即为其结果。
  • when 决定一个 Session 是否适用。返回 ConditionResult(False, "<reason>") 可跳过该 Session,原因会被记录。
  • 评估函数可以是普通函数或 async 函数,timeout_seconds 限制其执行时间。
  • Payload 键——上面的 tool_name、response 和 content——由您的 Agent 发送的内容决定,请从真实 Session 中读取它们。

运行 Worker

在 Administration → Keys 下创建一个具有 evaluations:run 权限的密钥,将其放入 FAILPROOFAI_EVALUATOR_TOKEN 环境变量——请从您的密钥存储中设置,而不是直接在命令中输入——然后启动 Worker:
如果没有 __main__ 代码块,python -m failproofai_sdk.evaluator evaluator:app 效果相同。
FAILPROOFAI_EVALUATOR_ALLOW_INSECURE_HTTP 会以明文传输所有数据。Worker 在每个请求中都会携带 FAILPROOFAI_EVALUATOR_TOKEN 作为 Authorization: Bearer 请求头,其获取的会话记录即为 Session 本身——因此,链路上的任何人都可以读取两者,而他们读取到的 Token 在您轮换之前都可用于运行评估。请仅在隔离的开发网络中使用此选项。其他所有场景下,URL 必须使用 HTTPS;回环地址无需此标志。

结果类型

一个 EvalResult 至少包含一个 Score、Metric 或 Assertion,最多 25 个,每个都位于唯一的键下。

Session 对象

每个事件包含 id、ts、event_type 和 payload。

旧版 Evaluator

早期的 Evaluator SDK——由 Failproof AI 在 EVALUATOR_ENDPOINT 调用的 HTTP 服务,响应 /evaluate 并通过 JobPending 轮询——已停止支持。请基于此 Worker 构建新的评估器;自托管实例的运营者若仍在使用旧版服务,可在过渡期内继续使用。