实操审校说明

本文属于可实操教程,但比普通脚本更依赖模型能力和框架版本。AI Agent 的核心思路“目标 → 规划 → 工具调用 → 观察结果 → 继续执行”是真实可落地的,LangChain、OpenAI Agents SDK、CrewAI 等框架都能实现类似流程。

建议测试环境

项目建议版本 / 条件
操作系统Windows 10/11、macOS 或 Linux
PythonPython 3.10+
Agent 框架LangChain 或 OpenAI Agents SDK
模型条件需要支持工具调用或函数调用的模型
推荐任务搜索资料、整理报告、读取文件、调用 API

实操前置条件

  1. 已会基本 Python。
  2. 理解 LLM API Key、模型名、系统提示词和工具调用的概念。
  3. 能安装 langchainopenai-agents 或同类框架。
  4. 第一个 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 会自动:

  1. 分析任务:需要搜索 + 整理 + 保存
  2. 调用 search_web 搜索相关新闻
  3. 整理搜索结果
  4. 调用 save_to_file 保存报告
  5. 告诉你任务完成了

五、进阶:带记忆的多轮对话 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)*