AI 智能体设计模式实战指南 | 构建智能系统的核心架构蓝图

3 阅读8分钟

AI 智能体设计模式:构建智能系统的实战指南

本项目是《Agentic Design Patterns》一书的完整中文翻译,由 Antonio Gulli 撰写。本书系统性地介绍了构建 AI Agent 系统的核心设计模式,从基础概念到高级架构,提供了构建可靠、高效、自主智能体的实战蓝图。

项目地址github.com/xindoo/agen…
在线阅读adp.xindoo.xyz/

✨ 功能特性

  • 21个核心设计模式:覆盖从基础到高级的完整模式体系,包括提示词链、路由、并行化、反思、规划、多智能体协作等
  • 7个附录深度扩展:高级提示技术、智能体框架对比、推理引擎剖析等实用内容
  • 完整术语体系:统一的技术术语翻译标准,确保全书概念一致性
  • 实战代码示例:各章节配套 LangChain、LangGraph、Google ADK、CrewAI 等框架的实践代码
  • 多框架视角:涵盖主流 Agentic 框架(LangChain、LangGraph、CrewAI、Google ADK)的实现对比
  • 高质量翻译:遵循严格的翻译规范和术语统一标准,确保技术准确性与中文表达流畅性

📚 内容概览

第一部分:核心模式(103页)

章节模式说明
第1章提示词链将复杂任务分解为线性子任务序列
第2章路由基于条件逻辑动态选择执行路径
第3章并行化并发执行独立子任务提升效率
第4章反思自我评估与迭代优化输出质量
第5章工具使用调用外部 API、数据库与代码执行
第6章规划制定多步骤行动计划
第7章多智能体协作专业化智能体协同工作

第二部分:认知机制(61页)

  • 第8章 记忆管理:短期/长期记忆、向量数据库与语义检索
  • 第9章 学习与适应:强化学习、RLHF、DPO 等自适应机制
  • 第10章 模型上下文协议(MCP):LLM 与外部资源的标准化接口
  • 第11章 目标设定与监控:目标驱动行为与进度追踪

第三部分:容错与扩展(34页)

  • 第12章 异常处理与恢复:重试、回退与优雅降级机制
  • 第13章 人机协同:人类监督、反馈与决策增强
  • 第14章 知识检索(RAG):嵌入、向量搜索与检索增强生成

第四部分:高级架构(114页)

  • 第15章 智能体间通信(A2A):开放标准的跨框架协作协议
  • 第16章 资源感知优化:成本、延迟与计算资源的动态权衡
  • 第17章 推理技术:思维链、思维树、ReAct 等推理框架
  • 第18章 安全模式:输入验证、输出过滤与护栏机制
  • 第19章 评估与监控:性能指标、A/B 测试与漂移检测
  • 第20章 优先级排序:多目标任务的重要性评估
  • 第21章 探索与发现:主动信息寻求与假设生成

附录(74页)

  • 附录 A:高级提示技术
  • 附录 B:AI 智能体交互——从 GUI 到真实环境
  • 附录 C:Agentic 框架快速概览
  • 附录 D:使用 AgentSpace 构建智能体
  • 附录 E:命令行中的 AI 智能体
  • 附录 F:智能体推理引擎内部机制
  • 附录 G:编程智能体

🔧 安装与使用

环境要求

  • Ruby 2.7+ 和 Bundler(用于 Jekyll 站点构建)
  • Node.js(用于 Markdown 检查工具,可选)

依赖安装

# 安装 Ruby 依赖
bundle install

# 安装 Node.js 代码检查工具(可选)
npm install -g markdownlint-cli markdown-link-check

本地构建与运行

# 构建静态站点
bundle exec jekyll build

# 本地启动服务(支持热重载)
bundle exec jekyll serve --livereload

# 生产环境构建
JEKYLL_ENV=production bundle exec jekyll build

质量检查命令

# 检查所有章节的 Markdown 格式
npx markdownlint-cli chapters/

# 检查指定章节的链接有效性
npx markdown-link-check chapters/Chapter\ 1_\ Prompt\ Chaining.md

# 验证 Jekyll 配置
bundle exec jekyll doctor

💻 使用说明

在线阅读

项目已部署为 GitHub Pages 静态站点,可直接访问:adp.xindoo.xyz/

本地阅读

  1. 克隆仓库后运行本地服务器
  2. 访问 http://localhost:4000 浏览全部章节
  3. 支持中英文双语对照阅读

代码示例使用

各章节配套代码示例位于 Google Colab 或 Google Drive 链接中,可直接在线运行:

# 示例:LangChain 中的提示词链
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI

# 第一步:生成大纲
outline_prompt = PromptTemplate(
    input_variables=["topic"],
    template="为以下主题生成文章大纲:{topic}"
)
outline_chain = LLMChain(llm=llm, prompt=outline_prompt)

# 第二步:基于大纲撰写文章
article_prompt = PromptTemplate(
    input_variables=["outline"],
    template="基于以下大纲撰写完整文章:\n{outline}"
)
article_chain = LLMChain(llm=llm, prompt=article_prompt)

# 链式调用
outline = outline_chain.run("AI Agent 设计模式")
article = article_chain.run(outline)

🧠 核心代码示例

1. 反思模式(生成器-评审者)

# 反思模式的生成-评审双智能体架构
# 来源:第4章 - 反思模式代码示例

from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(temperature=0.7)

# 生成器:输出初始草稿
generator_prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一位专业的AI内容写手。请撰写关于{subject}的{content_type}。"),
    ("human", "撰写一篇专业的{content_type}。")
])

# 评审者:批判性评估输出
reflector_prompt = ChatPromptTemplate.from_messages([
    ("system", """你是一位高级编辑,擅长提供建设性反馈。
    请评估以下内容,考虑:准确性、清晰度、完整性、风格。
    指出具体问题并提供改进建议。
    输出格式:问题列表 -> 改进建议"""),
    ("human", "请评审以下内容:\n\n{content}")
])

generator_chain = generator_prompt | llm
reflector_chain = reflector_prompt | llm

# 迭代优化过程
def generate_with_reflection(subject, content_type, iterations=2):
    content = generator_chain.invoke({
        "subject": subject, 
        "content_type": content_type
    }).content
    
    for i in range(iterations):
        feedback = reflector_chain.invoke({"content": content}).content
        content = generator_chain.invoke({
            "subject": subject,
            "content_type": content_type,
            "feedback": feedback
        }).content
    
    return content

2. 多智能体协作(CrewAI)

# 多智能体协作模式示例
# 来源:第7章 - 多智能体协作代码示例

from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4-turbo")

# 定义专业化智能体
researcher = Agent(
    role='研究员',
    goal='查找并总结相关技术信息',
    backstory='精通信息检索与技术文献分析',
    llm=llm,
    allow_delegation=False
)

writer = Agent(
    role='技术作家',
    goal='基于研究内容撰写清晰的技术文章',
    backstory='擅长将复杂技术概念转化为易懂内容',
    llm=llm,
    allow_delegation=False
)

editor = Agent(
    role='编辑',
    goal='审核并完善文章质量',
    backstory='拥有敏锐的技术内容眼光',
    llm=llm,
    allow_delegation=False
)

# 定义任务
research_task = Task(
    description="研究并总结主题:{topic} 的核心概念",
    expected_output="结构化的研究发现摘要",
    agent=researcher
)

writing_task = Task(
    description="基于研究发现撰写技术文章",
    expected_output="完整的 Markdown 格式文章",
    agent=writer
)

editing_task = Task(
    description="审核文章,检查技术准确性和语言流畅度",
    expected_output="优化后的最终文章",
    agent=editor
)

# 组建协作流程
crew = Crew(
    agents=[researcher, writer, editor],
    tasks=[research_task, writing_task, editing_task],
    process=Process.sequential,
    verbose=True
)

result = crew.kickoff(inputs={"topic": "RAG检索增强生成"})

3. 工具使用模式(函数调用)

# 工具使用/函数调用模式
# 来源:第5章 - 工具使用模式

from langchain.tools import tool
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_openai import ChatOpenAI

# 定义工具
@tool
def get_weather(location: str) -> str:
    """获取指定位置的当前天气信息"""
    # 实际实现中调用天气 API
    return f"{location} 的天气:晴朗,25°C"

@tool
def calculate(expression: str) -> str:
    """计算数学表达式结果"""
    try:
        result = eval(expression)
        return f"计算结果:{result}"
    except Exception as e:
        return f"计算错误:{str(e)}"

@tool
def search_database(query: str) -> str:
    """搜索内部知识库"""
    # 实际实现中查询向量数据库
    return f"关于 '{query}' 的搜索结果:..."

# 配置智能体
tools = [get_weather, calculate, search_database]

llm = ChatOpenAI(model="gpt-4-turbo", temperature=0)

agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 智能体自动决定调用哪个工具
response = agent_executor.invoke({
    "input": "上海天气怎么样?然后计算 125*32 的结果"
})

4. 知识检索(RAG)核心流程

# RAG 检索增强生成核心实现
# 来源:第14章 - 知识检索模式

from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import FAISS
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI

# 1. 文档处理与分块
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50,
    separators=["\n\n", "\n", " ", ""]
)
chunks = text_splitter.split_documents(documents)

# 2. 嵌入与向量存储
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(chunks, embeddings)

# 3. 检索器配置
retriever = vectorstore.as_retriever(
    search_type="similarity",
    search_kwargs={"k": 4}
)

# 4. RAG 问答链
qa_chain = RetrievalQA.from_chain_type(
    llm=ChatOpenAI(model="gpt-4-turbo"),
    chain_type="stuff",
    retriever=retriever,
    return_source_documents=True
)

# 5. 执行查询
result = qa_chain.invoke({"query": "用户的问题"})
print(f"答案:{result['result']}")
print(f"来源:{result['source_documents']}")

📖 翻译规范

本项目采用严格的翻译标准,确保技术准确性与阅读流畅性:

核心原则

  • 准确性优先:完整保留所有技术含义,不遗漏、不曲解
  • 术语一致性:所有专业术语参考 glossary.md 统一译法
  • 自然流畅:使用符合中文表达习惯的句式

章节固定标题译法

原文译文
At a Glance速览
What问题背景
Why解决方案
Rule of Thumb实践建议

本书所有版税将捐赠给救助儿童会 (Save the Children) G1AmrjT7e+s43sQmHzvA6psrNpj/WzXc3sU1oxNYZvFI6jPyFEH9TfWoOj0hTp31