评估与上线
做一份评估集,用模型当评委并校准它,记录每一步的日志,省钱提速,加上输入输出护栏,最后把 RepoBot 做成网页服务部署上线。
各课
- 01做一份评估集
为 RepoBot 准备 36 道题,覆盖文档题、源码题、该拒答的题、没有答案的题和注入。存成 JSONL,一条命令跑完,按类别统计步数、耗时和花费,再用规则粗查一遍。
40 分钟 · 进阶 - 02用模型当评委
给 36 个回答写评分标准,让模型当评委,再和人工标注逐条对比。吸取 04 模块的教训后,评委和人工 36 题全部一致,还抓出了藏在解释里的错误。
45 分钟 · 进阶 - 03日志和可观测性
写一个几十行的追踪器,把智能体每一次模型调用、每一次工具调用都记成一行 JSON。事后只读日志,就能算出每个问题花了多少钱和时间、最慢的是哪一步、哪个工具在出错。
40 分钟 · 进阶 - 04省钱和提速
五个小实验:把固定资料放在前面省了 64% 的钱,要求简短让输出少了 92%,简单问题关掉思考,自己做结果缓存,并发把 10 个请求从 9.5 秒压到 2.3 秒。
35 分钟 · 进阶 - 05护栏:挡住不该进来和不该出去的东西
输入护栏用一次便宜的调用给问题分类,42 道题判对 41 道,补一条规则后全对;输出护栏用正则遮住回答里的密钥和手机号,并处理流式输出时秘密被拆成两半的问题。
40 分钟 · 进阶 - 06项目:把答疑助手部署上线
把 RepoBot 做成一个网页服务:FastAPI 流式接口、流式的智能体循环、输入输出护栏、追踪日志、输入校验,再讲怎么部署到一台服务器上。第一部分的贯穿项目在这里完成。
90 分钟 · 进阶
一个 AI 应用能在你的电脑上跑起来,离能交给别人用还差很远。你需要知道它答得好不好、改了之后有没有变差、出了问题能不能查到原因、每个月要花多少钱、会不会被人滥用。
这个模块回答这些问题。前两课做评估:准备题目、让模型当评委,并且用人工标注检查评委靠不靠谱。第 3 课做日志,第 4 课省钱提速,第 5 课加护栏。最后一课把所有东西装进 RepoBot,做成一个网页服务。
为什么是这个顺序
评估放在最前面,因为后面的每一项改动(优化成本、加护栏、改成网页服务),都要用它来确认效果没有变差。日志放在优化之前,因为要先知道钱花在哪里、时间花在哪里,才知道该优化什么。护栏在最后,因为它会拦截请求,需要评估集来确认它没有误伤正常的问题。
学完的标准
- 能为自己的应用准备一份覆盖正常、边界、拒答、注入各类情况的评估集,并一条命令跑完。
- 能写出模型评委的提示词,并用几十条人工标注检查它和人的判断有多一致。
- 能给智能体加上追踪日志,并从日志里算出每个请求的步数、耗时和花费。
- 能说出至少三种省钱或提速的办法,并在自己的应用上量出效果。
- 能实现输入分类护栏和输出脱敏护栏,知道它们各自防不住什么。
- RepoBot v4 在你的电脑上以网页服务的形式运行,并能说出上线前还缺哪些东西。
本模块的代码
- code/06-production/answers.jsonl
- code/06-production/cost_latency.py
- code/06-production/evalset.jsonl
- code/06-production/guardrails.py
- code/06-production/human_labels.json
- code/06-production/judge.py
- code/06-production/judged.jsonl
- code/06-production/run_eval.py
- code/06-production/traced_agent.py
- code/06-production/traces.jsonl
- code/06-production/tracing.py
- projects/repobot/v4/agent.py
- projects/repobot/v4/Dockerfile
- projects/repobot/v4/guard.py
- projects/repobot/v4/llm.py
- projects/repobot/v4/logs/traces.jsonl
- projects/repobot/v4/README.md
- projects/repobot/v4/requirements.txt
- projects/repobot/v4/retrieval.py
- projects/repobot/v4/server.py
- projects/repobot/v4/static/index.html
- projects/repobot/v4/tools.py
- projects/repobot/v4/tracing.py