🏛️ 模块1:高阶核心架构解析

1.1 四大核心架构对比

ReAct(Reasoning + Acting)— 思考与行动交替

核心理念:Agent 不是"想好再做"或"做了再想",而是想一步、做一步、观察结果、再想下一步

ReAct 循环: Thought(思考) → Action(行动) → Observation(观察) → Thought → Action → ... 示例: "查北京天气并判断是否需要带伞" Thought: 需要获取北京天气数据 Action: 调用天气API(city="北京") Observation: 多云, 15°C, 降水概率30% Thought: 降水概率30%不太高,不需要带伞 Action: 回复用户"今天多云15°C,降水概率低,不需要带伞"

CoT(Chain-of-Thought)— 链式思考

核心理念:在给出最终答案前,先把推理过程"说出来"。

我们在第二阶段的任务规划模块已经实践了 CoT 的核心思想。高阶的 CoT 增加了自一致性(Self-Consistency):让模型多次推理,取多数结果。

Self-Refine — 自我优化

核心理念:Agent 生成输出 → 自己评价输出质量 → 根据评价改进 → 再评价 → 直到满意。

这就像写作文先打草稿,自己读一遍,修改不满意的地方,再读,再改。

AutoGPT 模式 — 全自主循环

核心理念:给 Agent 一个终极目标,它自己不断拆解子任务、调用工具、执行、验证,不需要每一步都问用户

架构核心特点适用场景自主程度风险
ReAct思考行动交替,每步观察需要与外部环境交互的任务⭐⭐⭐低(每步可控)
CoT先推理后回答复杂推理、数学、逻辑问题⭐⭐
Self-Refine自我评价+迭代改进写作、代码生成、创意任务⭐⭐⭐⭐中(可能"改坏")
AutoGPT全自主目标驱动开放探索、研究任务⭐⭐⭐⭐⭐高(失控风险)

1.2 Self-Refine Agent 实践代码

#!/usr/bin/env python3
"""SelfRefineAgent — 自我反思与迭代优化 Agent"""

import os, json
from dotenv import load_dotenv
from anthropic import Anthropic
load_dotenv()

class SelfRefineAgent:
    """具备自我反思和迭代优化能力的 Agent"""

    def __init__(self):
        self.client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))
        self.model = "claude-sonnet-4-6"
        self.max_iterations = 3  # 最多优化3轮

    def generate_with_refinement(self, task: str, quality_criteria: str = "") -> str:
        """生成内容并自我优化"""
        print(f"\n🎯 任务: {task}")

        # 第1步:生成初始版本
        print("📝 生成初始版本...")
        draft = self._generate(task)
        print(f"  初稿: {draft[:200]}...")

        # 第2步:自我评价 + 迭代优化
        for iteration in range(self.max_iterations):
            print(f"\n🔍 第{iteration+1}轮自我评价...")

            # 自我评价
            feedback = self._evaluate(draft, task, quality_criteria)
            score = feedback.get("score", 0)
            issues = feedback.get("issues", [])

            print(f"  自评分数: {score}/10")
            print(f"  发现问题: {issues}")

            # 如果满意或没有发现问题,停止
            if score >= 8 or not issues:
                print(f"  ✅ 质量达标,停止优化")
                break

            # 根据反馈改进
            print(f"  🔄 根据反馈改进...")
            draft = self._refine(draft, feedback, task)
            print(f"  改进稿: {draft[:200]}...")

        return draft

    def _generate(self, task: str) -> str:
        resp = self.client.messages.create(
            model=self.model, max_tokens=1000,
            messages=[{"role":"user","content":f"完成以下任务(第一次尝试,尽你最大努力):\n{task}"}],
            temperature=0.5)
        return resp.content[0].text.strip()

    def _evaluate(self, content: str, task: str, criteria: str) -> dict:
        prompt = f"""评价以下内容的质量。任务要求: {task}
质量标准: {criteria or '准确性、完整性、清晰度、实用性'}

内容:
{content[:2000]}

请以JSON格式输出:
{{"score": 1-10, "issues": ["问题1","问题2"], "strengths": ["优点1"], "suggestions": ["建议1"]}}"""

        resp = self.client.messages.create(
            model=self.model, max_tokens=500,
            messages=[{"role":"user","content":prompt}], temperature=0.2)
        try:
            text = resp.content[0].text.strip()
            if "```" in text: text = text.split("```")[1].split("```")[0]
            return json.loads(text)
        except:
            return {"score": 7, "issues": [], "suggestions": []}

    def _refine(self, content: str, feedback: dict, task: str) -> str:
        issues = "\n".join([f"- {i}" for i in feedback.get("issues", [])])
        suggestions = "\n".join([f"- {s}" for s in feedback.get("suggestions", [])])
        prompt = f"""改进以下内容。原始任务: {task}

当前内容: {content[:2000]}

发现的问题: {issues}
改进建议: {suggestions}

请输出改进后的完整内容。"""

        resp = self.client.messages.create(
            model=self.model, max_tokens=1000,
            messages=[{"role":"user","content":prompt}], temperature=0.4)
        return resp.content[0].text.strip()


# 测试
if __name__ == "__main__":
    agent = SelfRefineAgent()
    result = agent.generate_with_refinement(
        "写一份200字的智能手机选购指南",
        "简洁实用,适合小白,包含关键选购指标"
    )
    print(f"\n{'='*50}")
    print(f"✅ 最终结果:\n{result}")

1.3 多 Agent 协作架构

┌─────────────────────────────────────────────────────┐ │ 多 Agent 协作架构 │ │ │ │ ┌──────────┐ │ │ │ 协调Agent │ ← 分配任务、汇总结果 │ │ └────┬─────┘ │ │ ┌─────────────┼─────────────┐ │ │ ▼ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ 研究Agent│ │ 写作Agent│ │ 审核Agent│ │ │ │ 收集资料 │ │ 撰写内容 │ │ 检查质量 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ │ │ │ │ │ │ └─────────────┼─────────────┘ │ │ ▼ │ │ ┌──────────┐ │ │ │ 合并输出 │ │ │ └──────────┘ │ └─────────────────────────────────────────────────────┘

多Agent协作的三种通信模式:

  1. 流水线模式:A的输出是B的输入 → B的输出是C的输入(串行链)
  2. 广播模式:协调者同时分配任务给多个Agent,各做各的,结果汇总
  3. 辩论模式:多个Agent独立解决同一问题,然后互相评审,最终取最优或共识

1.4 分层设计思想

层次职责技术实现
感知层接收输入、理解意图、提取信息Claude API + 意图识别器
规划层任务拆解、步骤排序、依赖管理TaskPlanner + CoT
工具层工具注册、发现、调用、错误恢复ToolRegistry + ToolExecutor
记忆层短期/长期/会话记忆管理MemorySystem + 向量数据库
输出层结果格式化、質量校驗、呈现Self-Refine + 模板引擎
💡 分层设计的好处

每一层独立开发、独立测试、独立替换。比如你想换一个更好的记忆系统,只需要修改记忆层的实现,其他层不需要动。这就是"高内聚、低耦合"的体现。

✏️ 课后练习

  1. 架构对比实践:用同一个任务分别用 ReAct 和 CoT 方式执行,对比效率、结果质量和 Token 消耗。
  2. Self-Refine 优化:修改 SelfRefineAgent,增加"多样性"评价标准——不只改错误,还要让表达更丰富。
  3. 迷你多Agent系统:创建3个简单的 Agent 角色(研究员、作家、编辑),让它们协作完成一篇 500 字的技术文章。
  4. 分层重构:回顾前面阶段写的 Agent 代码,按照五层架构重新组织代码结构。
← 阶段首页 下一模块:高阶能力实战 →