Skip to content

第一个智能体

本指南将带你从零开始,使用 LangGraph CLI 创建、运行和测试你的第一个智能体。

🚀 快速开始

1. 初始化项目

使用 LangGraph CLI 创建一个基础智能体项目:

bash
# 创建项目
langgraph init my-first-agent --template basic

# 进入目录
cd my-first-agent

2. 安装依赖

使用 uv 安装项目依赖:

bash
# 安装所有依赖
uv sync

3. 配置环境

复制并编辑 .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 上看到每次调用的详细轨迹。
  • 调试: 使用 printlogging 在节点函数中输出调试信息。

🚀 继续前进: 探索 图结构概念 来深入理解 LangGraph 的核心机制。

Released under the MIT License.