1. 引言

2025 年以来,AI Agent(智能体)成为大模型应用领域最热门的方向之一。与传统的单轮问答不同,AI Agent 能够自主规划任务、调用工具、与环境交互,并最终完成复杂目标。本文将从零开始,带你完整走一遍 AI Agent 的开发流程,涵盖概念、架构、技术选型、代码实现到部署上线的全过程。

2. 什么是 AI Agent

AI Agent 是一种以大语言模型(LLM)为核心决策引擎的智能系统。它不仅仅是"聊天机器人",而是具备以下核心能力的自主系统:

  • 感知(Perception):接收用户指令、环境反馈或外部数据
  • 规划(Planning):将复杂任务拆解为可执行的子步骤
  • 决策(Decision Making):根据当前状态选择下一步动作
  • 行动(Action):调用工具、执行代码或访问外部 API
  • 反思(Reflection):根据执行结果调整策略,迭代优化

一个典型的 AI Agent 工作流程如下:

是

否

是

用户输入任务

LLM 理解与规划

是否需要调用工具

调用外部工具/API

获取执行结果

LLM 评估结果

任务是否完成

输出最终答案

3. 技术选型与架构设计

3.1 核心组件选型

组件可选方案推荐场景
大模型GPT-4o、Claude、Qwen、DeepSeek按成本与效果权衡
Agent 框架LangChain、LlamaIndex、AutoGen、自研快速原型选 LangChain
工具调用Function Calling、MCP标准化工具接入
记忆存储Redis、向量数据库(Milvus/Pinecone)短期与长期记忆
运行环境Python 3.10+、Docker服务化部署

3.2 系统架构

一个生产级的 AI Agent 系统通常包含以下层次:

工具层

搜索/数据库/API

模型层

LLM 推理服务

Agent 核心层

任务规划器

工具调度器

记忆管理器

接入层

Web/IM/API 入口

4. 环境准备

4.1 安装依赖

# 创建虚拟环境
python -m venv agent_env
source agent_env/bin/activate  # Windows 使用 agent_env\Scripts\activate

# 安装核心依赖
pip install openai langchain langchain-openai python-dotenv

4.2 配置 API Key

创建 .env 文件:

OPENAI_API_KEY=sk-your-key-here
OPENAI_BASE_URL=https://api.openai.com/v1

5. 从零实现一个最小 Agent

5.1 定义工具函数

首先定义一个简单的工具——获取天气信息:

import json
from datetime import datetime

def get_weather(city: str) -> str:
    """获取指定城市的天气信息(模拟数据)"""
    weather_data = {
        "北京": {"温度": "25°C", "天气": "晴", "湿度": "40%"},
        "上海": {"温度": "28°C", "天气": "多云", "湿度": "65%"},
        "广州": {"温度": "30°C", "天气": "小雨", "湿度": "80%"},
    }
    data = weather_data.get(city, {"温度": "未知", "天气": "未知", "湿度": "未知"})
    return json.dumps({"城市": city, **data}, ensure_ascii=False)

5.2 构建 Agent 核心逻辑

from openai import OpenAI
from dotenv import load_dotenv
import os

load_dotenv()

client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),
    base_url=os.getenv("OPENAI_BASE_URL"),
)

# 工具定义(Function Calling 格式)
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "获取指定城市的实时天气信息",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {
                        "type": "string",
                        "description": "城市名称,如:北京"
                    }
                },
                "required": ["city"]
            }
        }
    }
]

def run_agent(user_query: str, max_iterations: int = 5):
    """运行 Agent 主循环"""
    messages = [{"role": "user", "content": user_query}]
    
    for _ in range(max_iterations):
        # 调用 LLM
        response = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=messages,
            tools=tools,
        )
        
        message = response.choices[0].message
        
        # 如果没有工具调用,直接返回结果
        if not message.tool_calls:
            return message.content
        
        # 执行工具调用
        messages.append(message)
        for tool_call in message.tool_calls:
            if tool_call.function.name == "get_weather":
                args = json.loads(tool_call.function.arguments)
                result = get_weather(args["city"])
                messages.append({
                    "role": "tool",
                    "tool_call_id": tool_call.id,
                    "content": result
                })
    
    return "达到最大迭代次数,任务未完成"

# 测试运行
if __name__ == "__main__":
    result = run_agent("北京今天天气怎么样?适合出门吗?")
    print(result)

5.3 运行效果

python agent.py

输出示例:

北京今天天气晴朗,气温 25°C,湿度 40%,非常适合出门活动。
建议穿轻薄衣物,注意防晒。

6. 使用 LangChain 快速构建

如果你不想从零实现,LangChain 提供了更高级的抽象:

from langchain_openai import ChatOpenAI
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.tools import tool
from langchain_core.prompts import ChatPromptTemplate

@tool
def get_weather(city: str) -> str:
    """获取指定城市的天气信息"""
    # 实际项目中可调用真实天气 API
    return f"{city}:晴,25°C"

# 初始化模型
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)

# 创建 Agent
tools = [get_weather]
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个智能助手,可以调用工具完成任务。"),
    ("human", "{input}"),
    ("placeholder", "{agent_scratchpad}"),
])

agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 执行任务
result = agent_executor.invoke({"input": "北京天气怎么样?"})
print(result["output"])

7. 进阶功能:记忆与多轮对话

7.1 添加短期记忆

from langchain.memory import ConversationBufferMemory
from langchain.agents import AgentExecutor

memory = ConversationBufferMemory(
    memory_key="chat_history",
    return_messages=True
)

agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    memory=memory,
    verbose=True
)

# 多轮对话
agent_executor.invoke({"input": "我叫小明"})
agent_executor.invoke({"input": "我叫什么名字?"})  # 能记住

7.2 添加长期记忆(向量数据库)

from langchain_community.vectorstores import FAISS
from langchain_openai import OpenAIEmbeddings

# 初始化向量存储
embeddings = OpenAIEmbeddings()
vector_store = FAISS.from_texts(
    ["用户偏好:喜欢简洁的回答", "用户常用语言:中文"],
    embedding=embeddings
)

# 检索相关记忆
relevant_memories = vector_store.similarity_search("用户偏好", k=2)

8. 部署与上线

8.1 使用 FastAPI 封装服务

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class QueryRequest(BaseModel):
    query: str
    session_id: str = "default"

@app.post("/agent")
async def agent_endpoint(request: QueryRequest):
    result = agent_executor.invoke({"input": request.query})
    return {"response": result["output"]}

# 启动:uvicorn main:app --host 0.0.0.0 --port 8000

8.2 Docker 部署

FROM python:3.10-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
docker build -t ai-agent .
docker run -p 8000:8000 ai-agent

9. 常见问题与优化建议

9.1 常见坑点

  • 工具调用循环:设置最大迭代次数,防止死循环
  • 上下文超长:及时清理历史消息,使用摘要压缩
  • 错误处理:工具调用失败时要有降级策略
  • 安全限制:对工具权限做白名单控制

9.2 性能优化

  • 使用流式输出提升响应体验
  • 对高频工具结果做缓存
  • 多 Agent 并行处理复杂任务
  • 使用更小的模型做意图识别,大模型做复杂推理

10. 总结

从 0 到 1 开发一个 AI Agent 的核心路径可以概括为:

  1. 明确场景:确定 Agent 要解决的业务问题
  2. 选型架构:选择合适的模型、框架和存储方案
  3. 实现核心循环:规划 → 调用工具 → 评估 → 迭代
  4. 增强能力:加入记忆、多轮对话、多工具协同
  5. 部署上线:封装 API、容器化、监控运维

AI Agent 的开发门槛正在快速降低,但真正生产级的 Agent 仍需要关注稳定性、安全性和成本控制。建议从一个小场景开始,逐步迭代完善,在实践中积累经验。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐