ToolkitX
知识库工具箱

AI Agent

智能体架构、工具调用、RAG

25min·高级

01. AI Agent 概念

AI Agent 是能够感知环境、做出决策并采取行动的智能体。 Agent 的核心能力: - 感知:获取环境信息 - 推理:分析和决策 - 行动:执行操作 - 学习:从经验中改进 Agent 架构: - ReAct:推理 + 行动 - Plan-and-Execute:先规划后执行 - Multi-Agent:多智能体协作
python
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain_core.prompts import PromptTemplate
from langchain_core.tools import tool

# 定义工具
@tool
def search_web(query: str) -> str:
"""搜索互联网获取信息"""
return f"搜索结果: 关于 '{query}' 的信息..."

@tool
def calculator(expression: str) -> str:
"""计算数学表达式"""
try:
    result = eval(expression)
    return str(result)
except Exception as e:
    return f"计算错误: {e}"

# 创建提示模板
prompt = PromptTemplate.from_template("""
你是一个有用的助手。使用以下工具回答问题。

工具:
{tools}

工具名称: {tool_names}

问题: {input}

思考过程:
{agent_scratchpad}
""")

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

agent = create_react_agent(llm, tools, prompt)
executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 运行 Agent
result = executor.invoke({"input": "北京今天天气怎么样?"})
print(result["output"])

02. 工具调用(Function Calling)

Function Calling 让 LLM 能够调用外部函数和 API。 工作流程: - 定义函数 schema - 发送请求和函数定义 - LLM 决定是否调用函数 - 执行函数并返回结果 - LLM 整合结果生成回答
python
from openai import OpenAI
import json

client = OpenAI()

# 定义函数
tools = [{
"type": "function",
"function": {
    "name": "get_weather",
    "description": "获取指定城市的天气信息",
    "parameters": {
        "type": "object",
        "properties": {
            "city": {
                "type": "string",
                "description": "城市名称"
            }
        },
        "required": ["city"]
    }
}
}]

# 调用
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "北京今天天气怎么样?"}],
tools=tools,
tool_choice="auto"
)

# 处理函数调用
message = response.choices[0].message

if message.tool_calls:
for tool_call in message.tool_calls:
    function_name = tool_call.function.name
    arguments = json.loads(tool_call.function.arguments)
      print("调用函数:", function_name, "参数:", arguments)

03. Multi-Agent 协作

Multi-Agent 系统让多个 Agent 协作完成复杂任务。 协作模式: - 层级式:管理者分配任务给工人 - 辩论式:多个 Agent 讨论得出结论 - 流水线式:任务在 Agent 间传递
python
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

llm = ChatOpenAI(model="gpt-3.5-turbo")

# 定义不同角色的 Agent
researcher_prompt = ChatPromptTemplate.from_messages([
("system", "你是研究员。根据主题收集和整理相关信息。"),
("user", "{topic}")
])

writer_prompt = ChatPromptTemplate.from_messages([
("system", "你是作家。根据研究内容撰写文章。"),
("user", "{research}")
])

reviewer_prompt = ChatPromptTemplate.from_messages([
("system", "你是审稿人。审阅文章并提供改进建议。"),
("user", "{article}")
])

# 创建 Agent 链
researcher = researcher_prompt | llm | StrOutputParser()
writer = writer_prompt | llm | StrOutputParser()
reviewer = reviewer_prompt | llm | StrOutputParser()

# 协作流程
topic = "AI Agent 的发展趋势"

# 1. 研究
research = researcher.invoke({"topic": topic})
print("研究完成")

# 2. 写作
article = writer.invoke({"research": research})
print("文章完成")

# 3. 审稿
feedback = reviewer.invoke({"article": article})
print("审稿完成")

知识测验

1/4正确 0

AI Agent 的核心能力是什么?