AI Agent 开发实战指南:从零开始构建你的第一个智能助手

👁 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:AI Agent开发环境搭建

第一部分:理解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 开发实战
图2:开始AI Agent开发之旅

第三部分:实战:构建一个智能搜索助手

我们将构建一个能够搜索网络、总结内容并回答问题的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。以下是关键要点回顾:

  1. 选对框架:LangGraph适合复杂工作流,CrewAI适合快速原型,Harness适合生产环境
  2. 安全第一:Agent的安全边界不可忽视,建议参考HuggingFace的技术报告了解最新安全威胁
  3. 迭代优化:从简单的单Agent开始,逐步增加工具和记忆功能
  4. 监控先行:生产环境必须做好日志、Token消耗和错误监控

下一步可以尝试的方向:

  • 集成MCP(Model Context Protocol)协议,让Agent接入更多外部工具
  • 使用Vibe Coding(datawhalechina/easy-vibe,18,600+星)提高开发效率
  • 构建多Agent协作系统,让不同Agent分工完成复杂任务
  • 探索Agent的自主学习和反馈优化机制

AI Agent正在重塑软件开发的方式,现在开始学习,你将在下一次技术浪潮中占据先机。


参考资源:

订阅 AI 百事知

每周精选 AI 工具评测、行业资讯与使用教程,第一时间送达。

🔗 相关阅读(你可能还想看)

📄 Perplexity Pro 学生免费一年怎么领:验证流程、失败排查与免费版区别全解
📄 Gemini Omni 1.2 Flash 发布:视频降价30%、原生15秒,单条成本只贵5分钱
谷歌 11 月 5 日开放 Gemini Omni 1.2 Flash:720p 视频每秒 0.07 美元,比上代降 3
📄 GPT-6 Cyber 发布:121 万美元,948 条通往 root 的路
OpenAI 发布 GPT-6 Cyber:在 Linux 内核上跑出 948 个本地提权利用,整轮 API 成本 12
📄 AI效率工具提升办公效率的实战方法
📄 Anthropic冲刺IPO:170亿营收、8950亿算力承诺、首次在招股书披露递归自我改进风险
📄 Notion AI 数据库自动化实战教程:从零搭建智能工作流到自动化闭环
📄 Anthropic IPO招股书曝光:单季营收170亿美元背后的8954亿美元算力账单
📄 阿里千问接入 Apple Intelligence:中国版 iPhone 的 AI 时刻来了
📄 2026年AI生成PPT工具实战教程:从选型到精修的完整工作流指南
🤖 想直接和 AI 对话?
免费体验 DeepSeek V4 等顶级模型,无需注册,随问随答
🎯 立即体验 AI 工具

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

🤖 嘟嘟客服
滚动至顶部
🤖 嘟嘟客服
🤖 嘟嘟客服
';i.value='';m.innerHTML+='
...
';fetch('/dify-chat',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({query:q,user:'w'+Date.now()})}).then(function(r){return r.json()}).then(function(d){var a=d.answer||'暂时无法回复';m.removeChild(m.lastChild);m.innerHTML+='
'+a+'
'}).catch(function(){m.removeChild(m.lastChild);m.innerHTML+='
网络异常
'})">发送