从零搭建你的第一个 AI Agent:用 LangChain + OpenAI 实现智能助手

一篇面向 Python 开发者的 AI Agent 实战教程,用 LangChain + OpenAI 从零搭建一个能自动读取邮件、分析内容、起草回复并发送的智能邮件助手

核心观点

  1. AI Agent 的本质是”感知-推理-行动”循环:与传统大模型对话不同,Agent 具备自主感知环境、推理规划、调用工具执行任务的能力,形成用户提问→AI分析→调用工具→执行任务→反馈结果→继续对话的完整闭环
  2. Function Calling 是 Agent 调用外部工具的核心机制:通过 @tool 装饰器定义工具函数,LangChain 自动将函数签名转换为 OpenAI Function Calling 格式,Agent 根据用户意图自主决定调用哪个工具、传什么参数
  3. Agent 的记忆系统决定了多轮对话质量:使用 ConversationBufferMemory 存储聊天历史,配合 MessagesPlaceholder 注入 prompt,使 Agent 能记住上下文、理解指代(如”第一封邮件”指代之前读取的邮件列表)
  4. Prompt 工程是 Agent 行为的”操作系统”:系统提示词定义了 Agent 的职责边界、工作流程和注意事项(如”发送前必须得到用户确认”),比工具定义更能影响 Agent 的行为质量
  5. LangChain 的 AgentExecutor 封装了完整的推理-执行循环:开发者只需定义工具和 prompt,AgentExecutor 自动处理 LLM 调用→解析工具调用→执行工具→将结果回传 LLM→继续推理的完整流程

实操内容保留

代码/配置

安装依赖

pip install langchain openai chromadb python-dotenv

环境变量

OPENAI_API_KEY=your_api_key_here

工具定义(@tool 装饰器)

@tool
def read_emails(folder: str = "inbox") -> list:
    """读取邮箱中的邮件"""
    mock_emails = [
        {"id": "001", "subject": "关于项目进度的询问", "from": "client@example.com", "body": "你好,请问项目什么时候能完成?"},
        {"id": "002", "subject": "技术方案讨论", "from": "team@example.com", "body": "我们需要讨论一下数据库设计方案。"}
    ]
    return mock_emails
 
@tool
def send_email(to: str, subject: str, body: str) -> str:
    """发送邮件"""
    return f"邮件已发送到 {to}"
 
@tool
def draft_reply(email_id: str, content: str) -> str:
    """起草邮件回复"""
    return f"草稿已保存,邮件 ID: {email_id}"

Agent 核心类

from langchain.agents import AgentExecutor, create_openai_functions_agent
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain.memory import ConversationBufferMemory
 
class EmailAgent:
    def __init__(self):
        self.llm = ChatOpenAI(model="gpt-4")
        self.prompt = ChatPromptTemplate.from_messages([
            ("system", "你是一个智能邮件助手..."),
            MessagesPlaceholder(variable_name="chat_history"),
            MessagesPlaceholder(variable_name="agent_scratchpad")
        ])
        self.memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
        self.agent = create_openai_functions_agent(llm=self.llm, tools=tools, prompt=self.prompt)
        self.agent_executor = AgentExecutor(agent=self.agent, tools=tools, memory=self.memory, verbose=True)

向量存储扩展(ChromaDB)

from langchain_community.vectorstores import Chroma
 
vectorstore = Chroma(embedding_function=OpenAIEmbeddings(), persist_directory="./chroma_db")
vectorstore.add_texts(texts=[value], metadatas=[{"source": "email"}])
docs = vectorstore.similarity_search(query, k=k)

关键概念

  • LangChain — Python 版 LLM 应用开发框架,提供 Agent、Tool、Memory、VectorStore 等完整工具链
  • AI Agent 智能体 — 能自主感知、推理、调用工具执行任务的 AI 系统
  • OpenAI — 提供 GPT-4 模型和 Function Calling 能力
  • Function Calling — Agent 调用外部工具的核心协议机制
  • RAG 知识库 — ChromaDB 向量存储用于扩展 Agent 的知识检索能力

与其他素材的关联

原文精彩摘录

🎯 2026 年,AI Agent 正在改变软件开发的游戏规则。本文将手把手教你从零搭建一个能自动处理任务的智能助手。你将学到:什么是 AI Agent,为什么它这么火;如何用 LangChain + OpenAI 从零搭建一个邮件助手 Agent;Function Calling 的原理和实战;Agent 的记忆系统和向量存储。

用户提问 → AI 分析 → 调用工具 → 执行任务 → 反馈结果 → 继续对话。这个循环是 Agent 的核心工作范式。与传统的一问一答不同,Agent 能够自主决定调用哪些工具、以什么顺序执行、如何处理中间结果。