← 返回

AI Agent

Agent 是能自主规划、使用工具、完成复杂任务的 AI 系统。

从 Chat 到 Agent

Chat:你问,LLM 答

用户: "北京天气?"
LLM: "抱歉,我没有实时数据..."

Agent:LLM 决定调用工具

用户: "北京天气?"
LLM: 需要调用天气API → 获取数据 → 生成回答

Agent 核心组件

1. Planning(规划)

2. Memory(记忆)

3. Tools(工具)

Agent 工作流程

1. 接收任务
   ↓
2. 规划步骤 (Plan)
   ↓
3. 选择工具 (Tool Selection)
   ↓
4. 执行工具 (Tool Execution)
   ↓
5. 观察结果 (Observation)
   ↓
6. 反思调整 (Reflection)
   ↓
7. 重复 3-6 直到完成

Agent 类型

1. ReAct Agent

2. Plan-and-Execute Agent

3. Multi-Agent

4. Autonomous Agent

Agent 框架

框架 特点 适用场景
LangChain 最流行,生态丰富 通用
CrewAI 多 Agent 协作 团队协作任务
AutoGen Microsoft 开源 多 Agent 对话
OpenAI Agents 官方支持 GPT-4o 集成
Claude Computer Use 直接操作电脑 GUI 自动化

常用工具

搜索类

代码类

文件类

API 类

简单示例 (LangChain)

from langchain.agents import create_openai_functions_agent, AgentExecutor
from langchain.tools import Tool
from langchain_openai import ChatOpenAI

# 定义工具
def search_web(query: str) -> str:
    """搜索网络"""
    # 实现搜索逻辑
    return f"搜索结果: {query}"

tools = [
    Tool(
        name="Search",
        func=search_web,
        description="搜索网络信息,输入为搜索关键词"
    ),
    Tool(
        name="Calculator",
        func=lambda x: str(eval(x)),
        description="执行数学计算,输入为数学表达式"
    )
]

# 创建 Agent
llm = ChatOpenAI(model="gpt-4o")
agent = create_openai_functions_agent(llm, tools)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 运行
result = agent_executor.invoke({
    "input": "搜索人工智能的最新进展,然后计算它的发展年数"
})

Multi-Agent 示例 (CrewAI)

from crewai import Agent, Task, Crew

# 定义 Agent
researcher = Agent(
    role="研究员",
    goal="研究给定主题",
    backstory="你是一位经验丰富的研究员",
    llm=ChatOpenAI(model="gpt-4o")
)

writer = Agent(
    role="作家",
    goal="将研究发现写成文章",
    backstory="你是一位科普作家",
    llm=ChatOpenAI(model="gpt-4o")
)

# 定义任务
research_task = Task(
    description="研究 RAG 技术的原理和应用",
    agent=researcher,
    expected_output="详细的研究报告"
)

write_task = Task(
    description="将研究报告写成科普文章",
    agent=writer,
    expected_output="通俗易懂的科普文章"
)

# 创建 Crew
crew = Crew(
    agents=[researcher, writer],
    tasks=[research_task, write_task],
    verbose=True
)

# 执行
result = crew.kickoff()

常见问题

Q: Agent 幻觉怎么办?

Q: 如何提升 Agent 可靠性?

Q: Agent 成本高怎么办?

学习资源