当前位置: 首页 » AI » AI Agent » 从零构建 AI Agent:构建 AI Agent 的实战指南(附完整代码)

从零构建 AI Agent:构建 AI Agent 的实战指南(附完整代码)

三个月前,当我开发的第一个商业AI智能体在客户演示中崩溃时,会议室陷入了令人窒息的沉默。本应流畅运行的自主工作流,变成了不断重复的澄清请求和混乱决策的死循环。这个惨痛教训让我重新思考智能体的本质,最终总结出构建高效AI智能体的核心方法论。

失败演示场景

Agent 架构的三大支柱

真正的AI Agent 必须具备三个核心能力

  1. 状态管理:持续跟踪任务进展的”工作记忆”
  2. 决策机制:根据实时信息选择最优路径
  3. 工具调用:精准匹配问题与解决方案的能力

传统AI系统如同散落的拼图,每个模型独立运作却无法协同。而智能体架构将这些能力整合为有机整体,实现了从被动响应到主动思考的跃迁。

LangGraph实战:构建 Medium 文章分析 AI Agent

我们使用LangChain的LangGraph框架,从零构建一个能自动分析技术文章的AI助手。该智能体将实现文章分类、关键实体提取和智能摘要三大功能。

环境配置(Windows/macOS通用)

# 创建项目目录
mkdir ai_agent_project && cd ai_agent_project

# 设置虚拟环境
python -m venv agent_env
source agent_env/bin/activate  # macOS/Linux
agent_env\Scripts\activate     # Windows

# 安装依赖库
pip install langgraph langchain langchain-openai python-dotenv

智能体核心架构

from langgraph.graph import StateGraph, END

class State(TypedDict):
    text: str         # 原始文本
    classification: str  # 分类结果
    entities: List[str]  # 实体列表
    summary: str       # 摘要结果

# 初始化状态图
workflow = StateGraph(State)

# 添加功能节点
workflow.add_node("classify", classification_node)
workflow.add_node("extract_entities", entity_extraction_node)
workflow.add_node("summarize", summarization_node)

# 构建工作流
workflow.set_entry_point("classify")
workflow.add_edge("classify", "extract_entities")
workflow.add_edge("extract_entities", "summarize")
workflow.add_edge("summarize", END)

# 编译智能体
app = workflow.compile()

核心功能实现

1. 文章分类模块

def classification_node(state: State):
    prompt_template = """将以下文本分类为:技术新闻、个人博客、学术研究或其他类别。

    文本:{text}
    分类结果:"""

    prompt = PromptTemplate(template=prompt_template, input_variables=["text"])
    message = HumanMessage(content=prompt.format(text=state["text"]))

    return {"classification": llm.invoke([message]).content.strip()}

2. 实体提取引擎

def entity_extraction_node(state: State):
    extraction_prompt = """从文本中提取所有技术实体(公司、产品、协议),以逗号分隔。

    文本:{text}
    实体列表:"""

    message = HumanMessage(content=extraction_prompt.format(text=state["text"]))
    entities = llm.invoke([message]).content.strip().split(", ")

    return {"entities": entities}

3. 智能摘要生成

def summarization_node(state):
    summary_template = """用一句话总结以下技术文本的核心内容:

    文本:{input}
    摘要:"""

    chain = PromptTemplate.from_template(summary_template) | llm
    return {"summary": chain.invoke({"input": state["text"]}).content}

实战测试

sample = "Anthropic最新开源的MCP协议,实现了跨系统API的无缝交互"
result = app.invoke({"text": sample})

print(f"分类:{result['classification']}")
print(f"关键实体:{', '.join(result['entities'])}") 
print(f"核心摘要:{result['summary']}")

输出结果:

分类:技术新闻
关键实体:Anthropic, MCP协议, API集成
核心摘要:Anthropic开源MCP协议实现跨系统API无缝交互

AI Agent 架构图

智能体架构示意图

智能体的能力边界

  1. 路径依赖:固定工作流限制应变能力
  2. 语境局限:缺乏人类常识和文化背景
  3. 黑箱决策:内部推理过程不可完全追溯
  4. 人机协同:关键决策仍需人工介入

血泪教训:从崩溃演示中学到的

那次失败的客户演示教会我最重要的一课:理解智能体的局限性与掌握其能力同等重要。过度复杂的架构设计往往适得其反,成功的智能体需要在明确边界内发挥最大效能。

构建智能体的黄金法则

  • 每个节点保持单一职责
  • 状态流转必须清晰可追踪
  • 温度系数始终设为0(保证确定性)
  • 关键输出设置人工验证点

扩展应用场景

这个基础架构可快速适配不同领域:

  • 投资分析:识别公司/产品/市场数据
  • 法律文书:提取条款/当事人/关键日期
  • 医疗报告:分类病症/提取检验指标/生成摘要

立即行动指南

  1. 克隆GitHub示例代码库
  2. 替换OpenAI API密钥
  3. 尝试修改节点顺序观察效果变化
  4. 添加新的工具节点(如情感分析)
git clone https://github.com/example/ai-agent-blueprint.git
滚动至顶部