第四章:第一个完整示例(逐行讲解)
我们来写一个最简单的"问答 Agent":接收问题 → 处理 → 返回答案。
4.1 完整代码
新建文件 first_agent.py:
python
python
from typing import TypedDict
from langgraph.graph import StateGraph, START, END
# ---------- 1. 定义状态(公共黑板) ----------
class State(TypedDict):
question: str
answer: str
# ---------- 2. 定义节点(工人) ----------
def process_question(state: State):
question = state["question"]
answer = f"收到你的问题:{question}。这是来自节点的回答。"
return {"answer": answer}
# ---------- 3. 创建图 ----------
builder = StateGraph(State)
# ---------- 4. 添加节点 ----------
builder.add_node("processor", process_question)
# ---------- 5. 连边 ----------
builder.add_edge(START, "processor")
builder.add_edge("processor", END)
# ---------- 6. 编译 ----------
graph = builder.compile()
# ---------- 7. 运行 ----------
result = graph.invoke({"question": "LangGraph 是什么?"})
print(result)
4.2 逐行解释
第 1-2 行:导入需要的工具。
TypedDict定义状态类型,StateGraph、START、END是 LangGraph 的核心组件。第 5-7 行:定义 State。这里规定黑板上有两个字段:
question和answer,都是字符串。第 10-13 行:定义节点函数
process_question。它接收state,从里面取出question,生成一个answer,然后返回{"answer": answer}。这个返回值会自动合并到 State 中。第 16 行:创建图构建器,指定用
State作为状态类型。第 19 行:把
process_question函数作为一个节点加入图,名字叫"processor"。第 22-23 行:连边。
START → processor表示从起点进入这个节点;processor → END表示节点执行完就结束。第 26 行:
compile()把图编译成可执行对象。必须编译才能运行。第 29 行:
invoke()传入初始状态运行图,返回值就是最终状态。
4.3 运行结果
python
bash
python first_agent.py
输出:
python
{'question': 'LangGraph 是什么?', 'answer': '收到你的问题:LangGraph 是什么?。这是来自节点的回答。'}