Day 124 · BillSleuth(三):LangGraph 调查流程与证据链
用 LangGraph 把调查流程搭起来:先用结构化输出读懂客户在抱怨什么,用代码定位候选发票,再进入「提出假设、调工具验证」的循环,最后通过 SubmitFindings 提交结构化结论。工具结果由代码自动抽成带编号的证据链。用 DeepSeek 实跑 16 个场景,覆盖全部 12 类根因和 4 种「账没错」。
用 LangGraph 把调查流程搭起来:先用结构化输出读懂客户在抱怨什么,用代码定位候选发票,再进入「提出假设、调工具验证」的循环,最后通过 SubmitFindings 提交结构化结论。工具结果由代码自动抽成带编号的证据链。用 DeepSeek 实跑 16 个场景,覆盖全部 12 类根因和 4 种「账没错」。
Deep Research 是一类跑几分钟到几十分钟的 Agent:澄清问题、写研究提纲、并行派出子 Agent 搜索阅读、压缩成笔记、写成带引用的报告。今天对照 open_deep_research、GPT Researcher、STORM 和 Anthropic 的工程复盘,讲清架构、评测和成本,最后实现一条可替换模型和搜索的流水线,外加一个不靠模型的引用核验器。
基础篇 Day 9 手写的那 100 行循环,到了平台上要变成一个运行时:工具层、上下文管理、权限、钩子、子 Agent、状态持久化都要有扩展点。今天先读 OpenAI Agents SDK、Claude Agent SDK 和 LangGraph 三家的运行时源码,看它们各自怎么取舍,再给 AgentOps 写一个 200 行的 harness,带审批暂停和恢复。
给 SupportPilot 加上三种记忆:同一张工单里的多轮对话(状态存进 Postgres,进程重启也不丢)、跨工单的客户画像(只在历史变化时重建)、对话太长时把早期轮次压成摘要。改动集中在三个新文件和两个节点,用假 LLM 测多轮和压缩。
SupportPilot 的心脏。把 LLMClient 搬进项目并加上成本账本和结构化重试,设计工作流状态,写九个节点和条件路由:查客户、分诊、检索、调工具、起草、质检、退款审批、定稿、转人工。用假 LLM 写单测覆盖审批、转人工、质检打回,最后在终端里端到端跑 10 张工单。
前五周的工单 Agent 一直活在命令行里。今天给它套上 HTTP 接口:用 FastAPI 原生 SSE 把 token、工具调用和审批请求实时推给前端,用 LangGraph 的 Postgres checkpointer 管会话,再处理好并发、超时和用户中途关掉页面这几件事。
把 W4 拼成一个能跑的工单 Agent:分类、检索帮助中心、按类别给工具、通过 MCP 查 CloudLedger 业务库、退款前停下来等主管审批、输出带引用的回复。附一页知识地图、W4 面试题汇总(含框架原理和何时不用框架)和这一周的坑清单。
给图接上 SQLite checkpointer,让状态落盘;用 interrupt 实现 CloudLedger 的退款人工审批,Agent 起草方案后停下来等主管,进程退出也不丢;再演示时间旅行、三种流式模式和子图。这是 LangGraph 真正比手写循环值钱的地方。
把 Agent 的控制流从一个 while 循环搬到一张图上。用 LangGraph 1.x 重写 Day 9 的 Agent 循环,再写一个工单分类后分支处理的工作流,搞懂 State、reducer、节点、普通边和条件边,以及什么时候值得用图。