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 的核心能力是什么?