实战工单 Agent 04:提供 API、评测并灰度上线

先理解:API 和评测让 Agent 从脚本变成服务

前几篇完成了流程、工具、护栏。本篇把它封装成 API,并增加评测集。只有能被其他系统调用、能持续评测,才算接近可上线成品。

评测什么

工单 Agent 不只评答案文字,还要评分类是否正确、优先级是否合理、是否错误自动执行高风险动作、证据链是否完整。

灰度上线

建议先只给 Agent 建议权,不给执行权。人工客服采纳率达到目标后,再逐步开放低风险自动动作。高风险动作长期保留人工审核。

本篇把工单 Agent 封装成 API,并用测试集评估分类、转人工和草稿生成效果。

API

src/app.py

python
from fastapi import FastAPI
from src.schema import Ticket
from src.agent import handle_ticket

app = FastAPI(title="Ticket Agent")

@app.post("/tickets/handle")
def handle(ticket: Ticket):
    return handle_ticket(ticket)

启动:

bash
uvicorn src.app:app --reload

测试:

bash
curl -X POST http://127.0.0.1:8000/tickets/handle \
  -H 'Content-Type: application/json' \
  -d '{"ticket_id":"T001","title":"付款后一直没发货","body":"等了 5 天","customer_level":"vip"}'

评测集

data/eval.jsonl

json
{"ticket_id":"E001","title":"付款后一直没发货","body":"等了 5 天","expected_category":"shipping","expected_handoff":false}
{"ticket_id":"E002","title":"想开发票","body":"电子发票在哪里","expected_category":"invoice","expected_handoff":false}
{"ticket_id":"E003","title":"要求赔偿","body":"客户要求赔偿 500 元","expected_category":"complaint","expected_handoff":true}

评测脚本

src/evaluate.py

python
import json
from pathlib import Path
from src.schema import Ticket
from src.agent import handle_ticket

def main():
    total = ok = 0
    for line in Path("data/eval.jsonl").read_text(encoding="utf-8").splitlines():
        total += 1
        case = json.loads(line)
        result = handle_ticket(Ticket(
            ticket_id=case["ticket_id"],
            title=case["title"],
            body=case["body"],
        ))
        category_ok = result["triage"]["category"] == case["expected_category"]
        handoff_ok = result["handoff"] == case["expected_handoff"]
        if category_ok and handoff_ok:
            ok += 1
        else:
            print("FAIL", case, result)
    print(f"passed {ok}/{total}")

if __name__ == "__main__":
    main()

执行:

bash
python -m src.evaluate

灰度指标

上线时至少跟踪:

  • 分类准确率。
  • 高风险转人工召回率。
  • 草稿采纳率。
  • 平均处理时间。
  • 人工修改比例。
  • 审核队列积压量。

成品标准

  • 能接收结构化工单。
  • 能分类和判断优先级。
  • 能调用工具和知识库。
  • 能生成草稿。
  • 高风险工单进入审核队列。
  • 有 API 和评测脚本。
实战后台 MCP 01:封装订单查询和报表工具
实战工单 Agent 03:加入护栏、人工审核和证据链