👁 269 次阅读
引言:为什么你需要学习AI Agent开发?
2026年,AI Agent(智能体)已经从实验室概念变成了改变生产力的核心工具。从微软Copilot到OpenAI的Operator,从Anthropic的Claude Code到各大开源框架,AI Agent正在重新定义”软件”的边界。
根据GitHub最新的数据,datawhalechina/easy-vibe(Vibe Coding入门教程)已获得超过18,600颗星,walkinglabs/learn-harness-engineering(Harness工程入门)也获得了超过10,800颗星。这些数据清晰地表明:AI Agent开发已经成为2026年最受关注的技术方向之一。
无论你是开发者、产品经理还是创业者,掌握AI Agent开发都能让你在AI时代占据先机。本教程将从零开始,带你一步步构建一个属于自己的AI智能助手。
第一部分:理解AI Agent的核心概念
1.1 什么是AI Agent?
AI Agent(智能体)是一个能够自主感知环境、做出决策并执行行动的智能系统。与传统AI应用不同,AI Agent具有以下核心特征:
- 自主性:无需人工干预,能自主完成任务
- 工具使用:可以调用API、搜索引擎、数据库等外部工具
- 记忆能力:维护对话上下文和长期记忆
- 规划能力:将复杂任务分解为可执行的步骤
- 反馈循环:根据执行结果自我调整和优化
1.2 主流AI Agent框架对比
2026年,以下AI Agent框架最受关注:
| 框架 | 语言 | GitHub Stars | 核心特点 |
|---|---|---|---|
| LangGraph | Python | 15000+ | 有向图工作流,支持多Agent协作,状态管理 |
| Harness Framework | TypeScript | 10800+ | Harness Engineering,强调安全边界和可控性 |
| CrewAI | Python | 25000+ | 角色化多Agent协作,简单易用 |
| AutoGen | Python | 32000+ | 微软出品,多Agent对话,企业级支持 |
| OpenAI Agents SDK | Python | 12000+ | 官方SDK,与OpenAI生态深度集成 |
第二部分:环境搭建
2.1 安装Python和依赖
首先,确保你的系统安装了Python 3.10或更高版本。我们以LangGraph为例进行实战开发:
# 创建项目目录
mkdir ai-agent-tutorial
cd ai-agent-tutorial
# 创建虚拟环境
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装核心依赖
pip install langgraph langchain langchain-openai python-dotenv
2.2 配置API密钥
在项目根目录创建 .env 文件:
# .env
OPENAI_API_KEY=sk-your-api-key-here
# 或者使用其他LLM提供商
ANTHROPIC_API_KEY=sk-ant-your-api-key
2.3 验证安装
# 验证LangGraph安装
python3 -c "import langgraph; print(f'LangGraph v{langgraph.__version__} 安装成功')"
# 验证LangChain安装
python3 -c "import langchain; print(f'LangChain v{langchain.__version__} 安装成功')"
第三部分:实战:构建一个智能搜索助手
我们将构建一个能够搜索网络、总结内容并回答问题的AI Agent。
3.1 定义Agent的工具
from langchain_openai import ChatOpenAI
from langchain.tools import tool
from langchain_community.tools import DuckDuckGoSearchRun
from langgraph.graph import StateGraph, MessageGraph
from langgraph.prebuilt import ToolExecutor
from typing import TypedDict, List, Annotated
import operator
# 定义Agent状态
class AgentState(TypedDict):
messages: Annotated[List, operator.add]
next_step: str
# 初始化LLM
llm = ChatOpenAI(model="gpt-4o", temperature=0.3)
# 定义搜索工具
@tool
def web_search(query: str) -> str:
"""搜索网络并返回结果摘要"""
search = DuckDuckGoSearchRun()
result = search.run(query)
return result[:2000] # 限制返回长度
# 定义计算工具
@tool
def calculator(expression: str) -> str:
"""执行数学计算"""
try:
return str(eval(expression))
except Exception as e:
return f"计算错误: {str(e)}"
# 注册工具
tools = [web_search, calculator]
tool_executor = ToolExecutor(tools)
3.2 构建Agent工作流
from langgraph.prebuilt import ToolInvocation
import json
# 定义Agent节点
def call_model(state):
messages = state["messages"]
response = llm.invoke(messages)
return {"messages": [response]}
# 定义工具调用节点
def call_tool(state):
messages = state["messages"]
last_message = messages[-1]
# 解析工具调用
tool_call = last_message.additional_kwargs.get("tool_calls", [])
if tool_call:
for tc in tool_call:
tool_name = tc["function"]["name"]
tool_args = json.loads(tc["function"]["arguments"])
observation = tool_executor.invoke(
ToolInvocation(tool=tool_name, tool_input=tool_args)
)
messages.append({"role": "tool", "content": observation})
return {"messages": messages}
# 构建工作流图
workflow = StateGraph(AgentState)
workflow.add_node("agent", call_model)
workflow.add_node("action", call_tool)
workflow.set_entry_point("agent")
# 添加条件边
workflow.add_conditional_edges(
"agent",
lambda state: "action" if state["messages"][-1].additional_kwargs.get("tool_calls") else "end",
{"action": "action", "end": "__end__"}
)
workflow.add_edge("action", "agent")
# 编译
app = workflow.compile()
3.3 运行Agent
# 运行智能搜索助手
result = app.invoke({
"messages": [{"role": "user", "content": "搜索2026年最热门的AI Agent框架,并帮我总结它们的优缺点"}]
})
# 输出结果
for msg in result["messages"]:
if msg["role"] == "assistant":
print(f"🤖 AI助手: {msg['content'][:500]}")
elif msg["role"] == "tool":
print(f"🔧 工具返回: {msg['content'][:200]}")
第四部分:进阶技巧
4.1 添加记忆功能
让Agent记住之前的对话内容:
from langgraph.checkpoint import MemorySaver
# 启用持久化记忆
memory = MemorySaver()
app = workflow.compile(checkpointer=memory)
# 每次对话带上线程ID
config = {"configurable": {"thread_id": "conversation-1"}}
result = app.invoke({
"messages": [{"role": "user", "content": "刚才我搜索了什么?"}]
}, config=config)
4.2 多Agent协作
让多个Agent分工协作,各司其职:
# 创建研究Agent
research_agent = create_agent(llm, [web_search], "研究助手")
# 创建写作Agent
writer_agent = create_agent(llm, [], "写作助手")
# 创建审核Agent
review_agent = create_agent(llm, [calculator], "审核助手")
# 多Agent协作工作流
def research_step(state):
"""研究Agent负责收集信息"""
return research_agent.invoke(state)
def writing_step(state):
"""写作Agent负责撰写内容"""
return writer_agent.invoke(state)
def review_step(state):
"""审核Agent负责质量检查"""
return review_agent.invoke(state)
4.3 安全边界(Harness Engineering)
2026年7月,一篇关于AI Agent安全入侵的论文(HuggingFace博客,Anatomy of a Frontier Lab Agent Intrusion)引起了广泛关注。该论文详细记录了前沿实验室Agent入侵的时间线,强调了安全边界的重要性。
使用Harness Engineering框架(walkinglabs/learn-harness-engineering,10,800+星)为Agent添加安全边界:
# 安装Harness框架
# npm install @harness/core
# 定义安全策略
const safetyPolicy = {
maxTokens: 100000,
allowedTools: ["search", "read", "calculate"],
blockedDomains: ["internal.company.com"],
maxRetries: 3,
timeout: 30000,
rateLimit: {
requestsPerMinute: 30,
contextWindow: 64000
}
};
// 创建安全Agent
const agent = new HarnessAgent({
model: "claude-sonnet-4",
safety: safetyPolicy,
tools: [searchTool, calculatorTool]
});
第五部分:部署与监控
5.1 部署为API服务
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Query(BaseModel):
message: str
thread_id: str = "default"
@app.post("/agent/chat")
async def chat(query: Query):
config = {"configurable": {"thread_id": query.thread_id}}
result = await app.ainvoke({
"messages": [{"role": "user", "content": query.message}]
}, config=config)
return {"response": result["messages"][-1].content}
# 启动服务
# uvicorn main:app --host 0.0.0.0 --port 8000
5.2 监控与日志
import logging
from langchain.callbacks import StdOutCallbackHandler
# 启用详细日志
handler = StdOutCallbackHandler()
llm = ChatOpenAI(model="gpt-4o", callbacks=[handler])
# 记录每次Agent调用的token消耗
with get_openai_callback() as cb:
result = app.invoke({"messages": [user_msg]})
print(f"Token消耗: {cb.total_tokens}")
print(f"成本: ${cb.total_cost:.4f}")
总结与下一步
通过本教程,你已经从零搭建了一个具备搜索、计算和记忆能力的AI Agent。以下是关键要点回顾:
- 选对框架:LangGraph适合复杂工作流,CrewAI适合快速原型,Harness适合生产环境
- 安全第一:Agent的安全边界不可忽视,建议参考HuggingFace的技术报告了解最新安全威胁
- 迭代优化:从简单的单Agent开始,逐步增加工具和记忆功能
- 监控先行:生产环境必须做好日志、Token消耗和错误监控
下一步可以尝试的方向:
- 集成MCP(Model Context Protocol)协议,让Agent接入更多外部工具
- 使用Vibe Coding(datawhalechina/easy-vibe,18,600+星)提高开发效率
- 构建多Agent协作系统,让不同Agent分工完成复杂任务
- 探索Agent的自主学习和反馈优化机制
AI Agent正在重塑软件开发的方式,现在开始学习,你将在下一次技术浪潮中占据先机。
参考资源:
- datawhalechina/easy-vibe — Vibe Coding入门教程(18,600+★)
- walkinglabs/learn-harness-engineering — Harness工程入门教程(10,800+★)
- adongwanai/AgentGuide — AI Agent开发指南(7,500+★)
- Anatomy of a Frontier Lab Agent Intrusion — AI Agent安全报告
- Handbook.md — 长政策文档对Agent的约束效果研究