Agent 开发名词手册
把 Agent 开发的核心名词按类别理清,附易混概念对比。每个名词一句话定义 + 关键点。配合各专题笔记阅读。
一、LLM 层(模型本身的能力与参数)
| 名词 |
含义 |
关键点 |
| Tool Calling(曾用名 Function Calling) |
LLM 能输出结构化的工具调用请求(name+args) |
LLM 只声明调用,不执行;执行在代码侧。OpenAI 已将 Function Calling 改名为 Tool Calling |
| temperature |
调整生成概率分布的尖锐度 |
低=确定保守,高=随机多样,0=贪心 |
| top-k(生成) |
采样时只考虑概率最高的 k 个词 |
固定数量;可与 top-p 同时设,取交集 |
| top-p(nucleus) |
采样时只考虑累积概率达 p 的词集合 |
动态数量,比 top-k 自适应;可与 top-k 同时设,取交集 |
| Structured Output |
让 LLM 输出结构化对象(如 Pydantic 模型) |
with_structured_output(Model) |
| Streaming |
流式输出,逐 token 返回 |
Agent 场景默认只流 LLM 最终回答;看中间 ReAct 循环需 stream_mode="updates"/"debug";SSE 推前端 |
二、消息层(对话的基本单元)
| 名词 |
含义 |
| SystemMessage |
系统提示,设定 AI 人设/规则 |
| HumanMessage |
用户说的话 |
| AIMessage |
LLM 的回复(可含 tool_calls) |
| ToolMessage |
工具执行结果返回给 LLM |
| AIMessageChunk |
流式输出时的增量消息块 |
一段对话就是 messages 列表:[System, Human, AIMessage(tool_calls), ToolMessage, AIMessage(最终)]。
三、工具层(Agent 的手脚)
| 名词 |
含义 |
关键点 |
| Tool / @tool |
工具,把函数变成 LLM 可调用的 |
必须是框架的 Tool 类型(如 BaseTool) |
| docstring |
工具描述,给 LLM 看的"说明书" |
不是注释,运行时存 __doc__,转成 description |
| tool_calls |
LLM 输出的工具调用请求 |
含工具名 + 参数,LLM 自己写参数 |
| ToolMessage |
工具执行结果的消息 |
在 ReAct 循环里回传给 LLM |
| MCP |
工具连接协议(Model Context Protocol) |
工具独立部署、跨框架复用,与 function calling 正交 |
| BaseTool |
框架的工具基类 |
@tool / 继承 / MCP 加载 都最终变成它 |
四、编排框架层(怎么组织 Agent)
| 名词 |
含义 |
关键点 |
| LangChain |
高层框架(create_agent、tools、messages) |
底层基于 LangGraph |
| LangGraph |
底层图引擎(StateGraph) |
已从 LangChain 独立(langchain-ai/langgraph),不强制依赖 LangChain |
| LCEL |
LangChain 表达式语言(| 管道链) |
核心编排语法,支持流水线/路由/分支/fallback,不限于固定流程 |
| create_agent / create_react_agent |
高层 agent 工厂函数 |
内部用 LangGraph 搭 ReAct 图,返回 CompiledStateGraph;create_react_agent 在 langgraph.prebuilt |
| StateGraph |
LangGraph 的状态图 |
底层手搓,定义节点+边+状态 |
| Node / Edge |
图的节点 / 边 |
节点=处理函数,边=流转,条件边=分支 |
| State |
图的状态(TypedDict) |
在节点间传递的数据,如 {input, plan, past_steps, response} |
五、Agent 范式层(Agent 怎么运行)
| 名词 |
含义 |
关键点 |
| ReAct |
思考→调工具→观察→再思考的循环 |
create_agent 造的就是 ReAct agent |
| Plan-Execute-Replan |
规划→执行→重规划 |
LangGraph 手搓状态图实现,比 ReAct 更可控 |
| Agent |
LLM 自主决策(用工具、循环) |
对比 Workflow(固定流程) |
| Workflow |
固定流程,LLM 不自主决策 |
对比 Agent |
六、记忆层(会话历史)
| 名词 |
含义 |
关键点 |
| Checkpointer |
会话记忆存储 |
保存 State 全部(channel_values 所有字段,含完整 messages 和 tool_calls 历史),按 thread_id 存取 |
| MemorySaver |
内存记忆(重启丢失) |
同时实现 sync+async |
| SqliteSaver / AsyncSqliteSaver |
SQLite 持久化记忆 |
同步版不能用于 async agent,必须用 async 版 |
| thread_id |
会话标识(记忆钥匙) |
同一 id=同一会话有记忆,换 id=全新对话 |
| Short-term memory |
短期记忆(对话历史) |
checkpointer 存的就是这个 |
七、RAG 层(检索增强)
| 名词 |
含义 |
关键点 |
| RAG |
检索增强生成 |
检索文档喂给 LLM 回答 |
| Embedding |
文本转定长向量 |
bi-encoder,语义相近向量相近 |
| Vector Store |
存文档向量,支持相似度检索 |
Milvus/Faiss/Chroma |
| Retriever |
检索器 |
as_retriever(),输入 query 返回文档 |
| Chunking |
文档切片 |
chunk_size + overlap |
| top-k(检索) |
取最相似 k 个文档 |
检索参数,和生成的 top-k 无关 |
| Bi-encoder |
双编码器,分别编码比向量 |
快,初筛,向量检索用 |
| Cross-encoder |
交叉编码器,query+doc 一起出分数 |
慢但准,rerank 用 |
| Rerank |
对检索结果重新排序,通常用 Cross-Encoder 精排 |
提升相关性;也可用 LLM-based/规则排序,cross-encoder 是主流非唯一 |
| Query 改写 |
LLM 把问题改成更好的检索词 |
多 query 各自检索合并文档 |
| HyDE |
假设文档检索(Hypothetical Document Embeddings) |
生成"假设答案"文档去检索(答案与答案语义更接近) |
| Naive RAG |
经典 RAG,每次必检索 |
固定流程,不用 ReAct |
| Agentic RAG |
检索作为工具,LLM 决定调不调 |
= ReAct + RAG |
| Advanced RAG |
query改写+多路检索+rerank |
优化检索质量,可叠加 Agentic |
八、易混概念对比(重点)
1. ReAct vs RAG(正交,不冲突)
ReAct: Agent 运行范式(思考-行动循环) —— 怎么运行
RAG: 检索增强方式 —— 怎么检索
Agentic RAG = ReAct + RAG(检索作为 ReAct 里的工具)
2. top-k 三兄弟
|
阶段 |
选什么 |
数量 |
| 检索 top-k |
检索 |
文档 |
固定 k |
| 生成 top-k |
生成 |
词 |
固定 k |
| 生成 top-p |
生成 |
词 |
动态(累积概率) |
3. Function Calling vs MCP
|
层次 |
解决什么 |
| Function Calling |
LLM 能力 |
LLM 怎么决定调工具 |
| MCP |
连接协议 |
工具怎么连进来、跨框架复用 |
4. LangChain vs LangGraph
LangChain(高层:create_agent、tools)
↓ 底层基于
LangGraph(图引擎:StateGraph)
5. create_agent vs StateGraph
|
层级 |
代码量 |
灵活度 |
| create_agent |
高层封装 |
少 |
低 |
| StateGraph |
底层手搓 |
多 |
高 |
|
位置 |
作用 |
工具级 @tool(response_format=...) |
@tool 参数 |
拆工具返回的 content/artifact |
LLM 级 with_structured_output(Model) |
LLM 调用 |
单次 LLM 输出结构化 |
agent 级 create_agent(response_format=Model) |
create_agent 参数 |
agent 最终输出结构化 |
7. Checkpointer vs thread_id vs 记忆
Checkpointer: 记忆存储(存哪)
thread_id: 会话标识(怎么区分不同会话)
记忆: checkpointer 按 thread_id 存取的对话历史
8. docstring vs 注释
|
运行时存在 |
谁看 |
# 注释 |
否 |
只有人 |
"""docstring""" |
是(存__doc__) |
程序/LLM |
9. Agent vs Workflow
|
LLM 决策 |
流程 |
| Agent |
自主 |
灵活(ReAct 循环) |
| Workflow |
固定 |
流水线(LCEL chain) |
边界不一定泾渭分明:实际系统常混合——Workflow 某节点跑 Agent,或 Agent 某工具走固定 Workflow。
10. Naive vs Agentic vs Advanced RAG(两个正交方向)
Naive: 基础
Agentic: 解决"何时检索"(智能判断) ← 一个方向
Advanced:解决"检索多准"(质量优化) ← 另一个方向
两者正交,可组合(Agentic + Advanced)
评论区