基于多Agent协作的自动纠错系统,通过循环反思机制实现答案的持续优化。
在大语言模型(LLM)应用中,单次生成的答案往往存在不确定性和错误。本项目通过多Agent协作机制,实现答案的自动检验和迭代优化,提高输出质量和可靠性。
- 多Agent协作:通过多种角色的Agent(权威者、质疑者、逻辑分析员等)对答案进行多角度审视
- 循环反思:基于置信度和错误率动态调整循环次数,直到达到满意的答案
- 知识积累:通过长期记忆存储历史经验,持续改进系统表现
- 需要高可靠性的问答系统
- 复杂推理任务的自动验证
- 教育场景中的答案评估和纠正
- 任何需要迭代优化输出的LLM应用
┌─────────────────────────────────────────────────┐
│ 方案架构 │
└─────────────────────────────────────────────────┘
│
┌───────────────────────────────┼───────────────────────────────┐
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────────┐ ┌──────────┐
│ WM │◄─────────────────►│ Student Agent│◄──────────────►│ LTM │
│ 工作记忆 │ │ 学生Agent │ │ 长期记忆 │
└──────────┘ └──────┬───────┘ └──────────┘
│ │
│ │ 决定
│ ▼
│ ┌──────────────┐
│ │ MK │
│ │ 元知识 │
│ └──────┬───────┘
│ │ 决定
│ ▼
│ ┌─────────────────────────────────────────────┐
│ │ 多Agent阶段 │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
│ │ │ 权威者 │ │ 质疑者 │ │ 逻辑分析员 │ │
│ │ └─────────┘ └─────────┘ └─────────────┘ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────────┐ │
│ │ │ 倾听者 │ │ 同伴 │ │启发式解决者 │ │
│ │ └─────────┘ └─────────┘ └─────────────┘ │
│ │ ┌─────────────┐ ┌─────────────┐ │
│ │ │ 解释生成者 │ │ 概念类比者 │ ... │
│ │ └─────────────┘ └─────────────┘ │
│ └─────────────────────┬───────────────────────┘
│ │
│ ▼
│ ┌──────────────┐
│ │ Insight Agent│
│ │ 洞察Agent │
│ └──────┬───────┘
│ │
│ │ 反馈
│ ▼
│ ┌──────────────┐
└────────────────────────┤ 循环反思 │
└──────────────┘
- Student Agent 作答:结合长期记忆(LTM)中的知识,对问题进行初步回答
- Meta-Knowledge 决策:根据问题类型和历史表现,选择参与的专家Agent
- 多Agent 反馈:各专家Agent从不同角度对答案进行评估
- Insight Agent 汇总:提取冲突、互补观点,生成反馈提示词
- 循环反思:基于反馈更新答案,直到置信度达标或达到最大轮次
| 模块 | 路径 | 职责 |
|---|---|---|
| Agent模块 | agent/ |
实现各类Agent |
| 配置管理 | config/ |
系统配置和API密钥 |
| 核心编排 | core/ |
流程控制、协调、数据结构定义 (schemas.py) |
| 数据集 | data/ |
预留给数据集 |
| 数据库 | db/ |
存储检索的索引 |
| 文档 | doc/ |
预留给文档 |
| 日志信息 | log/ |
存放日志信息 |
| 记忆系统 | memory/ |
管理WM、LTM、MK三种记忆 |
| 本地模型 | models/ |
预留给本地模型文件存放 |
| 环境配置脚本 | script/ |
预留给环境配置脚本 |
| 调试代码 | test/ |
用于调试代码正确性 |
| 工具模块 | utils/ |
LLM客户端、日志等 |
📁 数据结构定义位于
core/schemas.py
- 命名规范:遵循Python PEP8,使用snake_case
- 字段合理性:剔除冗余字段,补充必要的元数据
- 层级划分:复杂结构拆分为独立子结构
- 扩展性:预留多Agent扩展接口
from core.schemas import WorkingMemory, MetaKnowledge, AgentType
# 或通过 core 包导入
from core import WorkingMemory, MetaKnowledge存储当前任务的临时状态。
@dataclass
class WorkingMemory:
task_id: str # 任务唯一标识
question_text: str # 问题文本
round_index: int # 当前轮次 (从1起)
current_phase: str # 当前阶段
agent_outputs: List[AgentOutput] # Agent输出列表
conflicts_detected: List[str] # 检测到的冲突
complementary_points: List[str] # 互补观点
summary_prompt: str # 汇总提示词
student_response: str # Student回答
student_confidence: float # 置信度 (0-1)
round_history: List[Dict] # 历史轮次
created_at: datetime
updated_at: datetime优化说明:
- 新增
current_phase标记处理阶段 - 新增
round_history记录历史 agent_outputs使用结构化的AgentOutput类型
存储知识经验和错误模式。
@dataclass
class LongTermMemoryEntry:
entry_id: str # 条目唯一标识
topic_category: str # 主题类别
content_pattern: str # 内容模式
error_type: str # 错误类型
error_examples: List[ErrorExample] # 错误案例
correction_strategies: List[str] # 纠正策略
thinking_angles: List[str] # 思考角度
success_rate: float # 成功率
usage_count: int # 使用次数
update_timestamp: datetime优化说明:
- 新增
entry_id便于索引 - 新增
usage_count记录使用频率 error_examples使用独立的ErrorExample结构
存储Agent表现和决策参数。
@dataclass
class MetaKnowledge:
question_type: str # 问题类型
error_rate: float # 历史错误率 (E)
avg_confidence: float # 平均置信度
agent_performance_log: Dict[str, AgentPerformanceRecord]
agent_recommendation_list: List[str] # 推荐Agent
exploration_prob: float # 探索概率
# 循环控制参数
max_rounds: int # 最大轮次 (N_max)
confidence_threshold: float # 置信度阈值 (τ_c)
alpha: float # 参数 α
beta: float # 参数 β循环控制公式:
停止条件:$C \geq \tau_c$
功能:作为主答题者,结合LTM知识对问题进行回答。
核心提示词逻辑:
- 角色:严谨的问题解答者
- 输入:问题、LTM知识、历史反馈
- 输出:JSON格式(analysis, reasoning, answer, confidence)
- 异常处理:解析失败时返回原始响应
使用示例:
from agent.student_agent import StudentAgent
from utils.llm_client import LLMClient
llm = LLMClient(api_key="your-key")
student = StudentAgent(llm_client=llm)
response = student.execute(
question="什么是机器学习?",
context={"ltm_knowledge": {...}}
)
print(response.content) # 答案
print(response.confidence) # 置信度功能:从专业角度审视答案,提供权威性评估。
核心提示词逻辑:
- 角色:领域权威专家
- 输入:问题、Student回答、置信度
- 输出:JSON格式(professional_assessment, expert_opinion, error_analysis, recommendations)
- 评估维度:准确性、概念错误、逻辑漏洞
功能:汇总各Agent输出,生成综合反馈。
核心提示词逻辑:
- 角色:Meta-Synthesizer(元综合者)
- 输入:问题、Student回答、各Agent输出
- 输出:JSON格式(conflicts, complementary_insights, feedback_prompt, recommended_action)
功能:挑战现有答案,从批判性角度提出质疑。
核心提示词逻辑:
- 角色:批判性思维专家
- 输入:问题、Student回答、置信度
- 输出:JSON格式(challenges, severity_assessment, suggested_improvements)
- 评估维度:隐含假设、边界条件、反例场景
功能:分析推理链条,检测逻辑漏洞和谬误。
核心提示词逻辑:
- 角色:逻辑推理专家
- 输出:JSON格式(logic_chain_analysis, validity_score, fallacies_detected)
- 检测:因果倒置、循环论证、滑坡谬误等
功能:综合各方意见,寻求共识。
核心提示词逻辑:
- 角色:协调综合者
- 输出:JSON格式(consensus_points, divergence_points, synthesis)
- 职责:提取共识、识别分歧、提出整合方案
功能:提供协作支持和情感关怀。
核心提示词逻辑:
- 角色:学习伙伴
- 输出:JSON格式(encouragement, collaborative_insights, areas_for_improvement)
- 风格:鼓励性、建设性
功能:提供创造性解决方案和替代思路。
核心提示词逻辑:
- 角色:创意问题解决专家
- 输出:JSON格式(alternative_approaches, creative_solutions, heuristic_strategies)
- 方法:类比迁移、逆向思维、分治策略
功能:生成多层次、易理解的解释。
核心提示词逻辑:
- 角色:教育解释专家
- 输出:JSON格式(eli5_explanation, intermediate_explanation, detailed_explanation)
- 层次:简单(ELI5)、中级、详细
功能:通过类比帮助理解抽象概念。
核心提示词逻辑:
- 角色:类比思维专家
- 输出:JSON格式(analogies, mappings, limitations)
- 方法:结构映射、跨领域类比
- Python 3.8+
- 可访问的OpenAI API (或兼容的API服务)
# 核心依赖
openai>=1.0.0
# 可选依赖
tiktoken>=0.5.0 # Token计数
numpy>=1.24.0 # 数值计算git clone https://github.com/Lin-zhibo/Agent_auto_correction.git
cd agent_auto_correctionpip install -r requirements.txt创建 config/key.json 文件:
{
"key": "your-openai-api-key",
"base_url": ""
}基础模式 (main.py):
python main.py调试模式 (shell.py):
python shell.py单次执行:
python main.py --question "什么是人工智能?" --type knowledgeshell.py 提供了交互式调试环境:
| 命令 | 说明 |
|---|---|
ask <问题> |
完整执行,显示详细的每轮调试信息 |
askq <问题> |
快速执行,只显示最终结果 |
test [verbose] |
运行测试用例,可选详细输出 |
status |
查看系统状态 |
clear |
清空记忆数据 |
help |
显示帮助信息 |
quit |
退出系统 |
示例:
(agent) >>> ask 什么是机器学习?
# 显示每轮的 Student 回答、专家评估、Insight 汇总等详细信息
(agent) >>> test verbose
# 运行测试用例并显示详细过程成功运行后,您将看到:
============================================================
欢迎使用 Agent 自动纠错系统
输入问题开始处理,输入 'quit' 或 'exit' 退出
============================================================
请输入问题:
- Phase 1 ✅ 已完成: 实现核心框架和基础Agent (Student, Authority, Insight)
- Phase 2 ✅ 已完成: 实现全部8个专家Agent (Questioner, LogicAnalyst, Listener, Companion, HeuristicSolver, ExplanationGenerator, ConceptAnalogist)
- Phase 3 (进行中): 实现Agent动态选择和协作策略优化(MAB-RAG)
- Phase 4: 加入语义熵迭代控制机制增强agent的自我判断能力
- LTM、Meta-Knowledge升级为“海马体图谱” (基于 HippoRAG, LORIL)
- LTM、Meta-Knowledge增加关键词搜索技术(精确匹配->BM25缩减匹配->向量检索兜底)
已完成:
- 实现核心框架和基础Agent (Student, Authority, Insight)
- 全部8个专家Agent的Prompt实现
- Insight Agent 综合评估机制 (quality_score, correctness, recommended_action)
- 循环反思机制(最少2轮保障)
- 调试模式 (shell.py verbose输出)
- WM → LTM/MK 学习更新
待完成:
- 实现Agent动态选择和协作策略优化(MAB-RAG)
- LTM、Meta-Knowledge升级为“海马体图谱” (基于 HippoRAG, LORIL)
- LTM、Meta-Knowledge增加关键词搜索技术(精确匹配->BM25缩减匹配->向量检索兜底)
- 加入语义熵迭代控制机制增强agent的自我判断能力
- 数据集下载
- 环境安装脚本编写
- 本地模型下载(可能)
- API成本:多Agent协作会增加API调用次数,注意监控使用量
- 循环死锁:极端情况下可能出现置信度无法提升的情况,已设置最大轮次限制
- 响应延迟:多轮循环会增加响应时间,建议设置合理的超时
- 使用
shell.py的ask命令获取详细的每轮执行信息 - 使用
test verbose命令查看测试用例的详细执行过程 - 查看
log/目录获取历史执行记录 - 检查
memory/storage/目录了解记忆状态 - 使用
status命令查看当前系统配置和记忆统计
- 遵循 PEP8 编码规范
- 所有公开接口需要完整的文档字符串
- 新增Agent需继承
BaseAgent并实现execute()和_build_prompt() - 提交前运行类型检查:
mypy .
以下设计基于合理默认假设:
- Agent选择策略:默认使用ε-greedy策略(exploration_prob=0.1)
- 循环参数:默认 α=1.0, β=1.0, N_max=10, τ_c=0.8
- 问题类型:默认支持 general, math, logic, knowledge 四种类型
- LLM模型:默认使用 gpt-4,可通过配置修改
MIT License
如有问题或建议,请提交 Issue 或 Pull Request。