2026 AI Agent 开发实战:用 LangGraph 构建你的第一个智能体

2026 年,AI Agent(智能体)已经从概念走向广泛落地。无论是自动化客服、代码审查,还是复杂的数据分析,智能体都能像“数字员工”一样自主完成任务。但很多开发者仍停留在调用 API 的阶段,不知道如何构建一个真正自主决策、能调用工具的 Agent。本文将带你用 LangGraph 框架从零搭建一个可联网搜索、可调用天气 API 的智能体,全程可执行,代码可直接复用。

什么是 LangGraph?为什么选择它?

LangGraph 是 LangChain 团队在 2025 年推出的图结构智能体框架。与传统的链式调用(Chain)不同,LangGraph 将智能体的执行流程建模为有向图(Graph),节点(Node)代表一个步骤(如思考、调用工具),边(Edge)代表状态转移。这种设计天然支持循环、分支、人机交互等复杂场景。

2026 AI Agent 开发实战:用 LangGraph 构建你的第一个智能体

相比 AutoGPT、CrewAI 等方案,LangGraph 的优势在于:

  • 精确可控:你可以定义每个节点的行为,而不是黑盒运行。
  • 易于调试:每一步的状态都可以保存和回放。
  • 生产友好:支持流式输出、中断恢复、持久化。

环境准备与项目初始化

首先确保你的 Python 版本 >= 3.10,并安装必要的库:

pip install langgraph langchain langchain-openai

你需要一个 OpenAI 兼容的 API Key(支持 GPT-4o、Claude 4、DeepSeek-R1 等模型)。为了演示,我们使用 OpenAI 的接口,但你可以替换为任意兼容的模型。

创建一个项目文件夹,新建 agent.py 文件。

第一步:定义工具

智能体的核心是“工具”。这里我们注册两个工具:一个联网搜索(用 DuckDuckGo),一个天气查询(模拟 API)。

from langchain.tools import tool
import requests

@tool
def search(query: str) -> str:
    """使用 DuckDuckGo 搜索信息"""
    from duckduckgo_search import DDGS
    with DDGS() as ddgs:
        results = [r['body'] for r in ddgs.text(query, max_results=3)]
        return "n".join(results)

@tool
def get_weather(city: str) -> str:
    """获取指定城市的实时天气"""
    # 实际项目中可调用 OpenWeatherMap API
    return f"{city} 的天气:晴,25°C,湿度 60%"

tools = [search, get_weather]

第二步:构建图

LangGraph 的核心是定义图的结构。我们创建一个简单的“思考-行动”循环:智能体先思考(调用 LLM 决定下一步),如果决定调用工具,则执行工具并返回结果,然后再次思考,直到给出最终答案。

from langgraph.graph import StateGraph, END
from typing import TypedDict, List
from langchain_openai import ChatOpenAI

class AgentState(TypedDict):
    messages: List[dict]
    next: str

llm = ChatOpenAI(model="gpt-4o", temperature=0)

# 绑定工具让 LLM 知道有哪些可用
llm_with_tools = llm.bind_tools(tools)

def call_model(state: AgentState) -> AgentState:
    response = llm_with_tools.invoke(state['messages'])
    return {
        'messages': state['messages'] + [response],
        'next': 'tools' if response.tool_calls else 'end'
    }

def call_tool(state: AgentState) -> AgentState:
    last_message = state['messages'][-1]
    for tool_call in last_message.tool_calls:
        tool_name = tool_call['name']
        tool_args = tool_call['args']
        # 执行对应工具
        if tool_name == 'search':
            result = search.invoke(tool_args['query'])
        elif tool_name == 'get_weather':
            result = get_weather.invoke(tool_args['city'])
        else:
            result = "未知工具"
        state['messages'].append({
            'role': 'tool',
            'content': result,
            'tool_call_id': tool_call['id']
        })
    return state

# 构建图
graph = StateGraph(AgentState)
graph.add_node('model', call_model)
graph.add_node('tools', call_tool)
graph.set_entry_point('model')
graph.add_conditional_edges(
    'model',
    lambda state: state['next'],
    {'tools': 'tools', 'end': END}
)
graph.add_edge('tools', 'model')
app = graph.compile()

第三步:运行智能体

现在你可以与智能体对话了:

def run_agent(user_input: str):
    initial_state = {
        'messages': [{'role': 'user', 'content': user_input}],
        'next': ''
    }
    for output in app.stream(initial_state):
        for node_name, state in output.items():
            if node_name == 'model' and 'messages' in state:
                last_msg = state['messages'][-1]
                if last_msg['role'] == 'assistant' and last_msg['content']:
                    print(f"AI: {last_msg['content']}")

run_agent('帮我搜索一下 2026 年最火的 AI 框架,然后查一下北京今天的天气')

输出示例:

AI: 我找到了以下信息:
1. LangGraph 在 2026 年成为最流行的 AI 框架之一……
2. 北京今天的天气:晴,25°C,湿度 60%。

进阶:添加人机交互与持久化

生产环境中,你可能需要智能体在执行某些操作前询问用户确认。LangGraph 支持中断(interrupt)机制:

def call_model_with_confirm(state):
    # 在调用工具前,先检查是否需要用户确认
    if state.get('need_confirm'):
        return {'messages': state['messages'] + [{'role': 'assistant', 'content': '是否执行?'}], 'next': 'human'}
    else:
        return call_model(state)

此外,可以使用 MemorySaver 将对话历史保存到 SQLite,实现持久化:

from langgraph.checkpoint import MemorySaver
app = graph.compile(checkpointer=MemorySaver())
2026 AI Agent 开发实战:用 LangGraph 构建你的第一个智能体

总结与行动清单

本文演示了用 LangGraph 构建一个带搜索和天气查询的智能体。你可以在此基础上:

  • 添加更多自定义工具(如数据库查询、文件读写)。
  • 集成 Slack、飞书等消息平台,让智能体在聊天中运行。
  • 部署为 API 服务(使用 FastAPI + LangServe)。

AI Agent 开发不再是少数人的专利。只要掌握 LangGraph 的图结构思维,你就能快速构建出强大的自动化助手。现在就动手试试吧!

您可能还喜欢...

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注