2026/10/10 6:20:49

Datawhale Easy Data × AI:构建知识与记忆驱动的 Agent笔记2 已重做

Datawhale Easy Data × AI:构建知识与记忆驱动的 Agent笔记2 已重做 Easy Data × AI构建知识与记忆驱动的 Agent笔记2 D1 演进速览从能调用模型到能自主做事六个文件一步步走完 Agent 能力进阶d1_1 基础调用 LangChain init_chat_model 一问一答 d1_2 多轮对话 手动维护消息历史 记住上下文 d1_3 流式输出 stream() 用户体验 d1_4 Tool Use Mock tool 手动编排 tool_calls 流程 模型会调用工具 d1_5 Tool Use Real TF-IDF 真实向量检索 接入真实数据 d1_6 Agent 循环 create_agentLangGraph 感知→推理→行动→观察d1_6 亮点模型面对Agentic RAG 和传统 RAG 有什么区别“时自主换了 3 次关键词、调了 4 次检索——第一轮结果不够自己判断换个关键词再查”这是 chatbot 做不到的。 pyseekdb 在 Windows 上的适配问题pyseekdb.Client()embedded 模式依赖pylibseekdb原生库官方只支持 Linux macOS arm64。方案创建轻量适配层code/D1/d1_vecdb.py用TF-IDF 余弦相似度numpy scipy替代接口完全对齐dbVectorDB(db_path./kb)db.create_or_get_collection(my_kb)db.add_docs(documents[...],ids[...])resultsdb.query(query_texts[用户问题],n_results3)三个后端自动 fallbackpyseekdb原生可用→ ChromaDB → TF-IDF兜底秒开零下载。 D1 核心代码摘录摘录 1Tool Use 从 0 到 1d1_4 —— tool bind_tools 手动编排为什么值得记这是 Agent 能力树的第一个分叉点——从模型自己答到模型会调工具核心就是下面这四步fromlangchain_core.toolsimporttool# ---------- Step 1: 定义工具 ----------# 函数名 工具名docstring 工具描述参数类型注解 工具 Schematooldefquery_knowledge_base(query:str)-str:从知识库中检索与用户问题相关的内容。当用户的问题涉及产品功能、技术文档时使用。# ... 这里是工具的实际逻辑可以是 mock 数据d1_4也可以是真实向量检索d1_5return检索到的相关文档内容# ---------- Step 2: 把工具绑定到模型 ----------llm_with_toolsllm.bind_tools([query_knowledge_base])# ---------- Step 3: 模型返回 tool_calls手动执行 ----------responsellm_with_tools.invoke(messages)ifresponse.tool_calls:# ← 关键判断模型决定要不要调工具tool_callresponse.tool_calls[0]resultquery_knowledge_base.invoke(tool_call[args])# ← 执行工具messages.append((user,f知识库结果{result}))# ← 把结果传回模型# ---------- Step 4: 第二次调用模型基于工具结果生成最终回答 ----------finalllm.invoke(messages)四步走的本质模型判断 → 模型返回 tool_calls → 人/程序执行工具 → 把观察结果喂回模型 → 模型再推理。这就是 F2 讲的感知→推理→行动→观察循环——只不过 d1_4 是手动写的循环体。关键变化手动版d1_4create_agentd1_6自己写if tool_calls分支LangGraph 自动处理循环只能查一次就完模型可以自主换关键词、查多次工具写死在循环里可以挂多个工具模型自主选d1_6 的亮点输出模型被问Agentic RAG 和传统 RAG 有什么区别“时自主换了 3 次关键词、调了 4 次检索——第一轮结果不够自己判断换个关键词再查”。这是 chatbot 永远做不到的。 P1 产品篇 · 学习笔记核心金句“90% 的 AI 功能失败不是模型不行而是立项时没人问’数据在哪’。”哪些场景不需要Agent场景更好方案判断依据固定答案的 FAQFAQ 页面 / 搜索框答案固定、无推理结构化数据查询BI 看板精确意图、SQL 搞定精确计算公式 / 程序实现大模型不是计算器三维度可行性评估立项 Checklist优先级数据可得性 → 任务可定义性 → 流程编排选择维度一数据可得性最关键最容易被低估立项会列 10 个典型问题找答案数据在哪6/10 找不到 →先建数据别做 AI维度二任务可定义性LLM 引入新挑战输出是概率生成的同一事实多种表述有事实锚点可验证 vs无事实锚点主观评估难定义的任务先用 10 个人工 baseline 建立评估标准维度三流程编排Agent vs Workflow光谱模型完全自主 Agent ←→ 人机协作 Workflow ←→ 传统软件首次做 AI 项目优先 Workflow不要直接 AgentWorkflow 更可控、对数据要求更低、错误容易定位Agent 的三个甜区适合做的场景语义理解用户意图模糊“去美国出差需要办什么”外部工具调用需要调用 API / 数据库 / 外部系统持续交互多轮对话逐步澄清需求同时命中 2-3 个 → 值得考虑 Agent 进步之前以为现在理解AI 项目瓶颈在模型选型瓶颈在数据层论坛小助手答非所问不是 GPT-4o 不够强是知识库过时Agent ChatGPT 记忆Agent 数据 模型 工具 循环 记忆先做 Agent 再想流程先 Workflow 验证价值再逐步增加自主性幻觉 LLM 天生不靠谱80% 源于知识库缺内容或检索不准