从零搭建你的第一个 AI Agent:用 LangChain + OpenAI 实现智能助手
一篇面向 Python 开发者的 AI Agent 实战教程,用 LangChain + OpenAI 从零搭建一个能自动读取邮件、分析内容、起草回复并发送的智能邮件助手
核心观点
- AI Agent 的本质是”感知-推理-行动”循环:与传统大模型对话不同,Agent 具备自主感知环境、推理规划、调用工具执行任务的能力,形成用户提问→AI分析→调用工具→执行任务→反馈结果→继续对话的完整闭环
- Function Calling 是 Agent 调用外部工具的核心机制:通过
@tool装饰器定义工具函数,LangChain 自动将函数签名转换为 OpenAI Function Calling 格式,Agent 根据用户意图自主决定调用哪个工具、传什么参数 - Agent 的记忆系统决定了多轮对话质量:使用
ConversationBufferMemory存储聊天历史,配合MessagesPlaceholder注入 prompt,使 Agent 能记住上下文、理解指代(如”第一封邮件”指代之前读取的邮件列表) - Prompt 工程是 Agent 行为的”操作系统”:系统提示词定义了 Agent 的职责边界、工作流程和注意事项(如”发送前必须得到用户确认”),比工具定义更能影响 Agent 的行为质量
- 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-06-03-hermes-agent-setup-guide 互补:Hermes Agent 教程侧重五支柱架构 + Cron + Telegram 移动办公,本文侧重 LangChain + OpenAI 的基础 Agent 搭建流程
- 与 2026-06-10-agent-engineering-guide 呼应:Agent 工程化指南讲”为什么大部分团队在做无用功”,本文是”怎么从零做出一个能用的 Agent”的实操对照
- 与 2026-06-02-woshipm-agent-architecture-landing 互补:Agent 架构拆解讲业务场景产品架构,本文讲代码层面的具体实现
原文精彩摘录
🎯 2026 年,AI Agent 正在改变软件开发的游戏规则。本文将手把手教你从零搭建一个能自动处理任务的智能助手。你将学到:什么是 AI Agent,为什么它这么火;如何用 LangChain + OpenAI 从零搭建一个邮件助手 Agent;Function Calling 的原理和实战;Agent 的记忆系统和向量存储。
用户提问 → AI 分析 → 调用工具 → 执行任务 → 反馈结果 → 继续对话。这个循环是 Agent 的核心工作范式。与传统的一问一答不同,Agent 能够自主决定调用哪些工具、以什么顺序执行、如何处理中间结果。