跳到正文
Elaine Blog
返回

Tool 与 Agent 评测:不只看最终回答

Agent Evaluation

Tool Eval 评一次动作,Agent Eval 评一系列动作是否安全完成目标。最终文字正确不代表真实操作正确,因此需要结构化 Trace 和权威业务断言。

一次 Tool Call 的六层检查

  1. Necessity:是否需要调用工具。
  2. Selection:是否选对工具。
  3. Arguments:参数类型和业务实体是否正确。
  4. Authorization:主体是否有权执行。
  5. Execution:是否成功、幂等且没有重复副作用。
  6. Result use:Agent 是否正确理解返回结果。

JSON 通过 Schema 只证明形状正确,不证明订单号、金额或租户正确。

可观察 Trace

{
  "task_id": "order-status-A1042",
  "steps": [
    {
      "kind": "tool",
      "name": "orders_get_by_id",
      "args": { "order_id": "A1042" }
    },
    { "kind": "answer", "value": "paid" }
  ],
  "final_state": "completed"
}

Trace 记录动作,不记录隐藏思维过程。敏感参数可以保存 hash 或脱敏字段。

Python 离线评测

def evaluate(example):
    result = agent.invoke({"order_id": example.order_id, "tools": [], "answer": ""})
    return {
        "answer_correct": result["answer"] == example.expected_answer,
        "tool_correct": result["tools"] == [example.expected_tool],
    }

完整 LangGraph 示例见 offline_eval.py下载

Java AgentScope 示例

Java 工程使用 @Tool 注册只读订单工具,再运行三个 Golden Case。它不调用模型,因此能稳定验证 Tool 实现和契约: ToolEvalDemo.java下载

Agent 还要测什么

下一步

阅读 LLM-as-Judge,处理清晰度、完整性等代码难以判断的标准。


分享这篇文章:

上一篇
RAG 评测:分别检查检索、证据和回答
下一篇
LLM-as-Judge:让模型评模型,但不让它裁决安全