AI Agent技术综述:LangChain、AutoGen与国产Agent框架深度对比

前言

AI Agent(智能体)是2024-2025年AI领域最火热的方向之一。与单一任务的AI助手不同,Agent能够自主规划、工具调用、多步骤推理并完成复杂任务。本文将系统介绍Agent的核心组件和主流框架。

一、AI Agent核心架构

1.1 四大核心组件

┌─────────────────────────────────────────────────┐
│                   AI Agent                       │
├─────────────────────────────────────────────────┤
│  🔍 Perception(感知层)                        │
│     - 多模态输入处理                            │
│     - 环境状态监测                              │
├─────────────────────────────────────────────────┤
│  🧠 Brain(推理层)                            │
│     - LLM大模型核心                            │
│     - 任务规划与拆解                            │
│     - 短期/长期记忆                            │
├─────────────────────────────────────────────────┤
│  🔧 Tools(工具层)                            │
│     - 搜索引擎/知识库                          │
│     - API调用/代码执行                         │
│     - 文件读写/数据处理                        │
├─────────────────────────────────────────────────┤
│  🎯 Action(执行层)                           │
│     - 任务执行与反馈                           │
│     - 自我反思与优化                           │
│     - 多Agent协作                               │
└─────────────────────────────────────────────────┘

1.2 ReAct范式

# ReAct(Reasoning + Acting)模式示例
def react_agent(query, tools, llm):
    """
    思想链推理 + 工具调用的经典范式
    """
    history = []
    
    while not is_complete(query):
        # Step 1: 推理
        thought = llm.reason(f"""
            当前任务: {query}
            历史步骤: {history}
            请分析当前状态,决定下一步行动。
        """)
        
        # Step 2: 决定是否调用工具
        if should_use_tool(thought):
            action, tool_name, tool_args = parse_action(thought)
            result = tools[tool_name](**tool_args)
            history.append({
                "thought": thought,
                "action": action,
                "observation": result
            })
        else:
            # 直接输出答案
            return format_answer(thought)
    
    return final_answer

二、主流Agent框架对比

2.1 LangChain / LangGraph

# LangGraph构建多步骤Agent
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool

@tool
def search_web(query: str) -> str:
    """搜索互联网获取最新信息"""
    # 搜索实现
    return search(query)

@tool
def calculator(expression: str) -> str:
    """执行数学计算"""
    return str(eval(expression))

# 创建Agent
model = ChatOpenAI(model="gpt-4-turbo")
tools = [search_web, calculator]

# 使用LangGraph的预建Agent
agent = create_react_agent(model, tools)

# 执行任务
result = agent.invoke({
    "messages": [{"role": "user", "content": "查询2024年诺贝尔物理学奖得主,并计算他们年龄之和"}]
})

for message in result["messages"]:
    print(f"{message.type}: {message.content}")

特点:

  • 生态最完善
  • 文档丰富
  • 学习曲线平缓

2.2 AutoGen(微软)

# AutoGen多Agent对话
from autogen import ConversableAgent, GroupChat, GroupChatManager

# 定义助手Agent
assistant = ConversableAgent(
    name="assistant",
    system_message="你是一个专业的Python程序员,帮助用户编写高质量代码。",
    llm_config={"model": "gpt-4"}
)

# 定义Critic Agent
critic = ConversableAgent(
    name="critic",
    system_message="你是一个代码审查专家,检查代码质量和潜在问题。",
    llm_config={"model": "gpt-4"}
)

# 定义用户Agent(模拟用户)
user_proxy = ConversableAgent(
    name="user",
    is_cadical_proxy=True,  # 自动代表用户回复
    system_message="用户代表,接收结果并确认需求。"
)

# 启动群聊
group_chat = GroupChat(
    agents=[assistant, critic, user_proxy],
    messages=[],
    max_round=10
)

manager = GroupChatManager(groupchat=group_chat)

# 启动对话
user_proxy.initiate_chat(
    manager,
    message="请用Python实现一个快速排序算法,并确保代码质量"
)

2.3 国产框架

2.3.1 百度AgentBuilder
# 百度千帆Agent开发
from qianfan import Qianfan

# 创建自定义工具
tools = [
    {
        "name": "weather_query",
        "description": "查询城市天气",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "城市名称"}
            }
        }
    }
]

# 构建Agent
agent = Qianfan.build_agent(
    model="ernie-4.0",
    tools=tools,
    system_prompt="你是天气助手,可以查询各城市天气情况。"
)

response = agent.run("北京今天天气怎么样?")
2.3.2 字节Coze

字节的Coze平台提供低代码Agent开发,支持快速构建和部署。

三、Tool工具开发实战

3.1 定义自定义工具

from langchain_core.tools import tool
import requests
from pydantic import BaseModel

class WeatherInput(BaseModel):
    city: str

@tool(parse_docstring=True, args_schema=WeatherInput)
def get_weather(city: str) -> str:
    """
    查询指定城市的当前天气情况。
    
    Args:
        city: 城市名称,如"北京"、"上海"
    
    Returns:
        天气情况描述
    """
    api_key = "your_api_key"  # 实际使用时请使用环境变量
    url = f"https://api.weather.com/v3/wx/conditions/current"
    
    try:
        response = requests.get(url, params={"city": city, "key": api_key}, timeout=5)
        data = response.json()
        
        return f"{city}当前天气:{data['temp']}°C,{data['condition']},湿度{data['humidity']}%"
    except Exception as e:
        return f"查询失败:{str(e)}"

# 将工具注册到Agent
tools = [get_weather]

3.2 RAG工具集成

from langchain_community.retrievers import TavilySearchAPIRetriever
from langchain.tools.retriever_tool import create_retriever_tool

# 创建知识库检索工具
retriever = vectorstore.as_retriever(search_kwargs={"k": 5})

retriever_tool = create_retriever_tool(
    retriever,
    name="knowledge_base",
    description="检索企业内部知识库,回答关于公司政策、流程等问题"
)

# 添加工具到Agent
agent = create_react_agent(model, [search_tool, retriever_tool, calculator])

四、Multi-Agent协作模式

4.1 平行竞争模式

用户任务
    ↓
┌─────────┐  ┌─────────┐  ┌─────────┐
│ Agent A │  │ Agent B │  │ Agent C │
│ (方案1) │  │ (方案2) │  │ (方案3) │
└────┬────┘  └────┬────┘  └────┬────┘
     ↓            ↓            ↓
  方案A         方案B         方案C
     ↓            ↓            ↓
     └────────────┼────────────┘
                  ↓
             Judge Agent
                  ↓
              最佳方案

4.2 串行协作模式

# 串行协作:规划→执行→验证
planning_agent = ConversableAgent(name="planner", ...)
execution_agent = ConversableAgent(name="executor", ...)
verification_agent = ConversableAgent(name="verifier", ...)

# 规划Agent输出任务清单
tasks = planning_agent.generate_reply([
    "用户需求:自动化部署Django应用到AWS"
])

# 执行Agent逐个完成任务
for task in tasks:
    result = execution_agent.execute(task)

# 验证Agent检查结果
verification_agent.verify(result)

五、Memory记忆机制

5.1 记忆类型

类型 容量 用途 实现方式
短期记忆 单次对话 当前任务上下文 Message History
长期记忆 全会话 跨任务学习 Vector Store
情景记忆 关键事件 经验总结 Summary + Embedding

5.2 实现示例

from langchain.memory import ConversationSummaryMemory
from langchain_core.messages import HumanMessage, AIMessage

# 创建总结记忆
memory = ConversationSummaryMemory(
    llm=model,
    memory_key="chat_history",
    return_messages=True
)

# 在Agent中使用记忆
agent = create_react_agent(
    model,
    tools,
    memory=memory
)

# Agent自动管理和使用记忆
result = agent.invoke({"messages": [HumanMessage(content="用户请求")]})

六、总结与展望

AI Agent代表了从"工具"到"助手"的跃迁。主流框架LangChain和AutoGen各有优势,国产框架也在快速发展。未来Agent将向自主学习、长期记忆、多模态交互方向持续进化,逐渐成为数字世界的真正参与者。


推荐资源:

  • LangChain文档:python.langchain.com
  • AutoGen:microsoft.github.io/autogen
  • 斯坦福AI Agent论文:Standing on the Shoulders of Giant Agents
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐