第一个智能体
本指南将带你从零开始,使用 LangGraph CLI 创建、运行和测试你的第一个智能体。
🚀 快速开始
1. 初始化项目
使用 LangGraph CLI 创建一个基础智能体项目:
bash
# 创建项目
langgraph init my-first-agent --template basic
# 进入目录
cd my-first-agent2. 安装依赖
使用 uv 安装项目依赖:
bash
# 安装所有依赖
uv sync3. 配置环境
复制并编辑 .env 文件:
bash
# 复制模板
cp .env.example .env
# 编辑 .env 文件
# .env
OPENAI_API_KEY=your_openai_api_key
LANGCHAIN_TRACING_V2=true
LANGCHAIN_PROJECT=my-first-agent🤖 智能体逻辑
src/my_first_agent/agent.py
这是智能体的核心逻辑文件:
python
from langchain_openai import ChatOpenAI
from langgraph.graph import StateGraph, END
from typing import TypedDict
# 1. 定义状态
class AgentState(TypedDict):
input: str
output: str
# 2. 定义节点函数
def agent_node(state: AgentState) -> AgentState:
"""
智能体节点,接收输入并调用 LLM 生成响应。
"""
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
response = llm.invoke(state["input"])
return {"output": response.content}
# 3. 构建图
def create_graph():
"""
创建并配置 StateGraph。
"""
workflow = StateGraph(AgentState)
# 添加节点
workflow.add_node("agent", agent_node)
# 设置入口点
workflow.set_entry_point("agent")
# 添加边
workflow.add_edge("agent", END)
# 编译图
return workflow.compile()
# 4. 导出应用
app = create_graph()🛠️ 运行和测试
启动开发服务器
bash
# 启动服务器
langgraph dev服务器启动后,你可以在 http://127.0.0.1:8000 访问 API 文档。
使用 cURL 测试
bash
curl -X POST http://127.0.0.1:8000/invoke \
-H "Content-Type: application/json" \
-d '{
"input": {
"input": "你好,LangGraph!"
}
}'运行单元测试
bash
# 运行所有测试
langgraph test
# 或者使用 uv
uv run pytest🔍 代码解析
1. AgentState
- 状态定义:
TypedDict用于定义图的状态结构,确保类型安全。 input: 接收用户输入。output: 存储 LLM 的输出。
2. agent_node
- 节点函数: 每个节点都是一个 Python 函数,接收
state并返回更新后的state。 - LLM 调用: 使用
ChatOpenAI与大语言模型交互。 - 状态更新: 返回一个字典,更新
output字段。
3. create_graph
- 图实例化:
StateGraph(AgentState)创建一个状态图。 add_node: 将节点函数添加到图中。set_entry_point: 定义图的起始节点。add_edge: 定义节点间的流程,END表示结束。compile: 将图编译成可执行的应用。
🎯 下一步
恭喜你完成了第一个智能体!接下来你可以:
- 📖 修改提示: 尝试修改
agent_node中的提示,让智能体执行不同任务。 - 🔧 添加工具: 学习 工具集成,让智能体调用外部工具。
- 📊 增加节点: 尝试添加更多节点,构建更复杂的流程。
- 🚀 探索多智能体: 学习 多智能体协作,构建协作系统。
💡 提示
- 热重载:
langgraph dev支持热重载,修改代码后服务器会自动重启。 - LangSmith: 如果配置了
LANGCHAIN_TRACING_V2=true,你可以在 LangSmith 上看到每次调用的详细轨迹。 - 调试: 使用
print或logging在节点函数中输出调试信息。
🚀 继续前进: 探索 图结构概念 来深入理解 LangGraph 的核心机制。
