实操审校说明
本文属于可实操教程,但比普通脚本更依赖模型能力和框架版本。AI Agent 的核心思路“目标 → 规划 → 工具调用 → 观察结果 → 继续执行”是真实可落地的,LangChain、OpenAI Agents SDK、CrewAI 等框架都能实现类似流程。
建议测试环境
| 项目 | 建议版本 / 条件 |
| 操作系统 | Windows 10/11、macOS 或 Linux |
| Python | Python 3.10+ |
| Agent 框架 | LangChain 或 OpenAI Agents SDK |
| 模型条件 | 需要支持工具调用或函数调用的模型 |
| 推荐任务 | 搜索资料、整理报告、读取文件、调用 API |
实操前置条件
- 已会基本 Python。
- 理解 LLM API Key、模型名、系统提示词和工具调用的概念。
- 能安装
langchain、openai-agents或同类框架。 - 第一个 Agent 建议只给 1-2 个工具,避免行为不可控。
可验证结果
完成教程后,至少应该能验证以下结果:
- Agent 能接收一个目标。
- Agent 能决定是否调用工具。
- 工具函数能收到参数并返回结果。
- Agent 能基于工具返回结果继续生成回答。
- 失败时能看到日志或中间步骤,方便调试。
版本风险提示
Agent 框架更新快,工具调用 API、包名和示例代码可能变化。真实项目里一定要加入权限控制、超时限制、日志记录和人工确认,不能让 Agent 无限制执行命令或访问敏感数据。
官方参考:
- LangChain Agents:https://python.langchain.com/docs/concepts/agents/
- OpenAI Agents SDK Quickstart:https://openai.github.io/openai-agents-python/quickstart/
- OpenAI SDKs and CLI:https://developers.openai.com/api/docs/libraries
AI Agent 开发教程:从零构建你的第一个智能体
📅 更新时间:2026 年 6 月
👤 适合人群:有 Python 基础、了解 LLM API 调用的开发者
⏱ 预计阅读时间:45 分钟
一、AI Agent 是什么?
🤔 大模型 vs AI Agent
┌─────────────────────────────────────────────────────────┐
│ 两者的核心区别 │
│ │
│ 大模型(LLM) AI Agent │
│ ┌────────────┐ ┌────────────────────────────┐ │
│ │ 被动响应 │ │ 主动规划 + 自主执行 │ │
│ │ 单次问答 │ │ 多步骤任务完成 │ │
│ │ 无法行动 │ │ 调用工具、访问外部资源 │ │
│ │ 无记忆 │ │ 有记忆和上下文管理 │ │
│ └────────────┘ └────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
💡 一句话理解
LLM = 一个博学的人,你问他,他答你。
AI Agent = 一个会自主工作的员工,你给他目标,他自己想办法完成。
🌟 典型案例
需求:帮我分析竞争对手的最新动态,写一份报告。
- 用普通 LLM:你需要自己搜索、复制内容、粘贴给 AI 让它写
- 用 AI Agent:
1. Agent 自动搜索"竞争对手"最新新闻
2. 爬取相关网页内容
3. 分析数据
4. 自动写成报告
5. 保存到你指定的位置
二、AI Agent 核心架构
┌─────────────────────┐
│ 用户目标 │
└──────────┬──────────┘
│
┌──────────▼──────────┐
│ 规划模块 │
│ (LLM 做决策/推理) │
└──────────┬──────────┘
│
┌────────────────┼────────────────┐
│ │ │
┌─────────▼───┐ ┌─────────▼───┐ ┌────────▼────┐
│ 工具调用 │ │ 记忆模块 │ │ 执行结果反馈 │
│ (搜索/代码/ │ │ (短期/长期) │ │ (成功/失败) │
│ 文件/API) │ └─────────────┘ └─────────────┘
└─────────────┘
四个核心组件
| 组件 | 作用 | 类比 |
| 规划(Planning) | 把大任务拆成小步骤 | 大脑思考 |
| 工具(Tools) | 执行具体操作 | 手和工具 |
| 记忆(Memory) | 记住上下文和历史 | 记忆力 |
| 行动(Action) | 实际执行、反馈结果 | 做事情 |
三、环境准备
pip install langchain langchain-openai
pip install langchain-community
pip install duckduckgo-search # 搜索工具
pip install python-dotenv
四、最简单的 Agent:一个会搜索的 AI
4.1 核心代码
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain.tools import tool
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
from duckduckgo_search import DDGS
load_dotenv()
# ====== 第一步:定义工具 ======
@tool
def search_web(query: str) -> str:
"""搜索互联网,获取最新信息。当用户问及最新事件、新闻、数据时使用。"""
with DDGS() as ddgs:
results = list(ddgs.text(query, max_results=5, region="cn-zh"))
if not results:
return "没有找到相关搜索结果。"
formatted = ""
for i, r in enumerate(results, 1):
formatted += f"\n[{i}] {r['title']}\n{r['body']}\nURL: {r['href']}\n"
return formatted
@tool
def save_to_file(content: str, filename: str = "output.txt") -> str:
"""将内容保存到文件。当需要保存报告、结果时使用。"""
with open(filename, "w", encoding="utf-8") as f:
f.write(content)
return f"✅ 内容已保存到 {filename}"
@tool
def calculate(expression: str) -> str:
"""执行数学计算。当需要计算数值时使用。支持基本四则运算和 Python 数学表达式。"""
try:
result = eval(expression, {"__builtins__": {}}, {})
return f"计算结果:{expression} = {result}"
except Exception as e:
return f"计算失败:{str(e)}"
# ====== 第二步:创建 LLM ======
llm = ChatOpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com/v1",
model="deepseek-v4-flash",
temperature=0
)
# ====== 第三步:设置 Prompt ======
prompt = ChatPromptTemplate.from_messages([
("system", """你是一个聪明能干的 AI 助手,可以使用工具来帮助用户完成任务。
你的工作原则:
1. 仔细理解用户的需求
2. 制定合理的计划
3. 按步骤使用工具
4. 把结果整理清楚地呈现给用户
如果需要搜索信息,请使用 search_web 工具。
如果需要保存结果,请使用 save_to_file 工具。
如果需要计算,请使用 calculate 工具。"""),
MessagesPlaceholder("chat_history", optional=True),
("human", "{input}"),
MessagesPlaceholder("agent_scratchpad"), # Agent 的思考过程
])
# ====== 第四步:组装 Agent ======
tools = [search_web, save_to_file, calculate]
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True, # 打印思考过程
max_iterations=10 # 最多执行 10 步
)
# ====== 第五步:运行!======
if __name__ == "__main__":
print("🤖 AI Agent 已启动!")
print("示例任务:搜索 2026 年 AI 行业最新趋势,写成报告保存到文件\n")
result = agent_executor.invoke({
"input": "搜索 2026 年 6 月最新的 AI 工具动态,整理成一份简短的报告,保存到 ai_report.txt"
})
print(f"\n✅ 最终结果:\n{result['output']}")
4.2 运行效果
Agent 会自动:
- 分析任务:需要搜索 + 整理 + 保存
- 调用
search_web搜索相关新闻 - 整理搜索结果
- 调用
save_to_file保存报告 - 告诉你任务完成了
五、进阶:带记忆的多轮对话 Agent
from langchain.memory import ConversationBufferWindowMemory
# 记住最近 10 轮对话
memory = ConversationBufferWindowMemory(
k=10,
return_messages=True,
memory_key="chat_history"
)
agent_executor_with_memory = AgentExecutor(
agent=agent,
tools=tools,
memory=memory,
verbose=True,
max_iterations=10
)
# 多轮对话
conversations = [
"帮我搜索一下最新的 MCP 协议相关新闻",
"根据你搜索到的内容,帮我总结一下 MCP 最大的优势是什么",
"把这份总结保存成 mcp_summary.txt"
]
for turn, user_input in enumerate(conversations, 1):
print(f"\n{'='*50}")
print(f"[第 {turn} 轮] 用户:{user_input}")
print('='*50)
result = agent_executor_with_memory.invoke({"input": user_input})
print(f"Agent:{result['output']}")
六、进阶:自定义工具——让 Agent 能做更多
import requests
@tool
def get_weather(city: str) -> str:
"""获取城市天气信息。"""
try:
response = requests.get(
f"https://wttr.in/{city}?format=3&lang=zh",
timeout=10
)
return f"🌤️ {city} 天气:{response.text}"
except Exception as e:
return f"获取天气失败:{str(e)}"
@tool
def read_file(filename: str) -> str:
"""读取文件内容。当用户要求查看某个文件时使用。"""
try:
with open(filename, "r", encoding="utf-8") as f:
content = f.read()
return f"文件 {filename} 的内容:\n{content}"
except FileNotFoundError:
return f"文件 {filename} 不存在"
except Exception as e:
return f"读取失败:{str(e)}"
@tool
def run_python_code(code: str) -> str:
"""执行 Python 代码并返回结果。用于数据处理、计算等任务。
注意:只能运行安全的代码,不要运行危险操作。"""
import io
import sys
old_stdout = sys.stdout
sys.stdout = io.StringIO()
try:
exec(code, {})
output = sys.stdout.getvalue()
except Exception as e:
output = f"执行错误:{str(e)}"
finally:
sys.stdout = old_stdout
return output if output else "代码执行完毕(无输出)"
七、实战:做一个数据分析 Agent
"""
数据分析 Agent 示例
任务:给定一个 CSV 文件,自动分析并生成报告
"""
@tool
def analyze_csv_data(filename: str, question: str) -> str:
"""分析 CSV 文件中的数据,回答关于数据的问题。"""
import pandas as pd
try:
df = pd.read_csv(filename)
data_info = f"""
CSV 文件信息:
- 文件:{filename}
- 行数:{len(df)},列数:{len(df.columns)}
- 列名:{list(df.columns)}
- 数值统计:
{df.describe().to_string()}
- 前5行:
{df.head().to_string()}
"""
# 让 LLM 基于数据回答问题
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[{
"role": "user",
"content": f"基于以下数据信息,回答问题:{question}\n\n{data_info}"
}]
)
return response.choices[0].message.content
except Exception as e:
return f"分析失败:{str(e)}"
# Agent 任务示例
result = agent_executor.invoke({
"input": """
请帮我完成以下任务:
1. 搜索 2026 年 Python 就业薪资行情
2. 用 calculate 工具计算:如果初级 Python 程序员月薪 15000,一年能赚多少?
3. 把这些信息整理成一份"Python学习回报分析",保存到 python_salary.txt
"""
})
八、主流 AI Agent 框架对比
| 框架 | 特点 | 适合场景 |
| LangChain | 生态最全,文档好 | 通用场景,入门首选 |
| AutoGen | 多 Agent 协作,微软出品 | 多 Agent 系统 |
| CrewAI | 团队化 Agent,角色扮演 | 模拟企业团队工作 |
| Dify | 可视化拖拽,无需代码 | 非技术人员 |
| Coze | 字节出品,中文好用 | 国内场景,快速上线 |
九、常见问题
Q:Agent 陷入死循环怎么办?
设置 max_iterations(最多执行步数):
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
max_iterations=10, # 最多 10 步
max_execution_time=60, # 最多执行 60 秒
early_stopping_method="generate" # 超时时生成最终答案
)
Q:工具调用失败怎么处理?
在工具函数中加 try/except,并返回有意义的错误信息,AI 会自动重试或换方案。
Q:怎么让 Agent 更"听话"?
在 System Prompt 中加入明确的约束:
你必须按以下顺序完成任务:
1. 先搜索信息
2. 再整理分析
3. 最后保存结果
不要跳过任何步骤。
总结
| 概念 | 关键点 |
| Agent = LLM + 工具 | LLM 负责思考,工具负责执行 |
| 定义好工具描述 | 描述越清晰,AI 越懂得何时调用 |
| verbose=True | 开发调试时必开,看清楚 Agent 思考过程 |
| 记忆管理 | 用 ConversationBufferWindowMemory 控制记忆长度 |
| 迭代上限 | 一定要设 max_iterations,防止死循环 |
🎯 下一步:尝试给你的 Agent 加上更多工具,比如邮件发送、日历管理、数据库查询!
*参考:CSDN AI Agent 从零搭建全流程(2026.1)| ofox.ai Python AI Agent 开发指南(2026.3)| 百度开发者中心 AI Agent 全攻略(2026.5)*