手把手教你用Python搭建个人AI Agent:从零到部署实战
为什么你需要一个自己的AI Agent?
说实话,现在市面上各种AI Agent工具太多了——Coze、Dify、LangFlow、AutoGen……每个都说自己能帮你搞定一切。但实际用下来你会发现,真正能解决你具体需求的,往往还是自己动手搭的那个。
我之前试过好几个现成的平台,要么有各种限制,要么数据不在自己手里。说白了,我想让AI帮我自动处理一些私人的工作流——比如每天早上自动整理邮件、抓取行业动态、然后生成一份简报——但这些事情放到别人的平台上做,总觉得不踏实。
所以干脆自己动手。用Python + LangChain + 几个开源库,搭了一个能跑起来的个人AI Agent。今天就把整个过程写出来,希望能帮到也想自己搞一个的朋友。

整体架构
先上架构图,心里有个谱:
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ 用户输入 │────▶│ Agent 核心 │────▶│ LLM 模型 │
│ (Web/API) │ │ (调度器) │ │ (推理) │
└─────────────┘ └──────┬───────┘ └──────────────┘
│
┌────────┴────────┐
▼ ▼
┌──────────┐ ┌──────────┐
│ 工具管理 │ │ 记忆管理 │
│ (Tools) │ │ (Memory) │
└──────────┘ └──────────┘
核心就三个部分:调度器(Agent Core) 决定做什么、工具集(Tools) 执行具体操作、记忆(Memory) 记住上下文。
第一步:环境准备
先装依赖,别用最新版本,踩过坑了:
pip install openai==1.55.0 langchain==0.3.7 langchain-openai==0.2.5 python-dotenv==1.0.1
然后配环境变量,我习惯用 .env 文件管理:
# .env
OPENAI_API_KEY=sk-你的key
OPENAI_BASE_URL=https://api.openai.com/v1
MODEL_NAME=gpt-4o-mini

第二步:构建Agent核心
这是最关键的代码。咱们用 LangChain 的 AgentExecutor 来搭:
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.agents import create_react_agent, AgentExecutor
from langchain.tools import Tool
from langchain.prompts import PromptTemplate
load_dotenv()
# 初始化LLM
llm = ChatOpenAI(
model=os.getenv("MODEL_NAME"),
temperature=0.7,
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL")
)
# 定义工具
def search_web(query: str) -> str:
"""搜索网络信息"""
return f"搜索到关于{query}的结果..."
def summarize_text(text: str) -> str:
"""总结文本内容"""
response = llm.invoke(f"请总结以下内容:{text}")
return response.content
# 注册工具
tools = [
Tool(name="web_search", func=search_web, description="搜索网络信息"),
Tool(name="summarize", func=summarize_text, description="总结文本内容"),
]
# 创建Agent
prompt = PromptTemplate.from_template(
"""你是一个个人AI助手,可以使用工具来帮助用户完成任务。
可用的工具:{tools}
工具格式:
Action: 工具名
Action Input: 输入
用户问题:{input}
{agent_scratchpad}"""
)
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
agent=agent, tools=tools,
verbose=True, handle_parsing_errors=True
)
第三步:添加记忆能力
没有记忆的Agent就是个傻子。用 ConversationBufferMemory:
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True
)
# 带记忆的对话
agent_executor = AgentExecutor(
agent=agent, tools=tools,
memory=memory, verbose=True,
handle_parsing_errors=True
)
# 测试
response = agent_executor.invoke({"input": "帮我查一下今天的AI新闻"})
print(response["output"])

第四步:部署到服务器
本地跑通了,接下来部署到服务器上。我用的方案是 FastAPI + Docker:
# app.py
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class Query(BaseModel):
message: str
session_id: str = "default"
@app.post("/chat")
async def chat(query: Query):
try:
response = agent_executor.invoke({"input": query.message})
return {"response": response["output"]}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@app.get("/health")
async def health():
return {"status": "ok"}
Dockerfile 也很简单:
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
常见问题
Q:为什么不用Coze/Dify现成的?
A:数据在自己手里,想怎么改都行,不受平台限制。
Q:需要多少资源?
A:如果只用API调用,一个2核4G的服务器就够跑了,一个月几十块。
Q:支持哪些模型?
A:OpenAI、Claude、本地模型都行,改一下MODEL_NAME就行。
总结
说实话,自己搭Agent这件事,最大的收获不是技术本身,而是真正理解了Agent的工作机制。当你亲手写过调度逻辑、接过工具、管理过记忆之后,再去用那些现成的平台,思路完全不一样了。
下一步的计划是加上定时任务调度,让它每天早上自动跑一遍工作流,真正变成一个"个人助理"。后面搭好了再分享。
有想一起折腾的,评论区聊聊你的需求,说不定我能帮上忙。
更多推荐



所有评论(0)