资讯动态

如何设计多Agent协作系统?MathModelAgent的Coordinator/Modeler/Coder/Writer深潜

发布时间:2026/9/17 19:18:06 来源:尧图企业网站定制
如何设计多Agent协作系统MathModelAgent的Coordinator/Modeler/Coder/Writer深潜【免费下载链接】MathModelAgent专为数学建模设计的 Agent skills ,自动完成数学建模生成一份完整的可以直接提交的论文。 An Agent Designed for Mathematical Modeling ,Automatically complete mathmodel and generate a complete paper ready for submission.项目地址: https://gitcode.com/GitHub_Trending/ma/MathModelAgentMathModelAgent 是一个专为数学建模设计的多Agent协作系统它自动完成问题分析、数学建模、代码执行与论文撰写最终生成一份可直接提交的完整竞赛论文。本文以它为例拆解一套可复用的多Agent系统设计方法——从角色分工、数据契约、消息流到记忆压缩新手也能看懂。一、项目概览为什么数学建模适合多Agent协作数学建模比赛本质上是一条流水线读题 → 建模 → 编码求解 → 画图 → 写论文。让单个大模型从头做到尾会遇到上下文爆炸、职责混乱、错误难以定位等问题。MathModelAgent 的解法是把这条流水线拆成 4 个各司其职的 Agent用「工作流Workflow」把它们串起来Agent角色核心职责Coordinator协调者判断是否建模问题拆解为结构化 JSONModeler建模手分析问题类型给出模型方案与可视化策略Coder代码手生成 Python 代码、在沙盒执行、报错反思重试Writer论文手按章节撰写论文、检索文献、插入图表下图是 MathModelAgent 的 Web 界面任务进度以实时消息流的形式推送给前端这套设计的成本很低不依赖重型 Agent 框架核心就是一个工作流类 workflow.py每个 Agent 就是一个继承自基类的普通 Python 类。二、设计要点 1统一的 Agent 基类把记忆做扎实所有 Agent 都继承同一个基类 agent.py它只解决三件事却是多Agent系统里最容易被忽略的部分1. 对话历史管理每次调用 LLM 前把 system prompt 和用户输入追加进chat_history响应再追加回去——Agent 的记忆就是这份历史。2. 记忆压缩自动触发当历史估算 token 数超过上下文窗口的75%时自动用 LLM 把早期对话总结成一段[历史对话总结]只保留最近的完整对话。压缩时还会找安全切割点避免把tool_calls和tool结果切断成孤儿消息——这是工具调用场景下很隐蔽的坑。3. 可取消的对话通过asyncio.Event作为取消信号用asyncio.wait同时监听模型响应和用户停止两个事件用户在界面上点停止任意 Agent 的 LLM 调用都能被立刻中断。 借鉴点多Agent系统先做一个基类管好记忆再谈分工。轮次控制、取消、压缩都是横切能力放基类里每个 Agent 免费获得。三、设计要点 2四个 Agent 各管一段互不越权3.1 Coordinator入口守门员 任务拆解器源码见 coordinator_agent.py。它做两件事意图识别用户输入不是建模问题直接拒绝避免流水线被闲聊带偏结构化拆解把整段题目整理成 JSONtitle标题、background背景、ques_count问题数、ques1/ques2/...逐题描述一字不改地保留原题。这里有个新手常问的问题LLM 输出的 JSON 经常不合法怎么办它的做法是重试 错误回喂——最多重试 3 次每次把解析错误信息以 system 消息追加进对话让模型自己纠正格式而不是换一个提示词从头再来。3.2 Modeler只给方案不写代码源码见 modeler_agent.py。它的 system promptmodeler.py内置了一棵模型选择决策树预测类 → 回归 / ARIMA / 灰色预测 / XGBoost评价决策类 → AHP / TOPSIS / 熵权法优化类 → 线性规划 / 遗传算法 / NSGA-II统计分析类 → 相关性 / 方差分析 / SHAP并且明确约束你不需要给出代码只需要给出思路和模型方案。这种只出方案、不出代码的职责切分让 Coder 可以专注工程实现两者互不污染。此外它还内置了repair_json兜底函数先用正则修复未转义引号实在不行再降级提取键值对最大化抢救 LLM 的输出。3.3 Coder执行-反思-重试循环最硬核的 Agent源码见 coder_agent.py。它是典型的ReAct 式工具循环LLM 调用execute_code工具生成 Python 代码代码在 Jupyter 沙盒本地或 E2B 云端中真实执行执行成功→ 结果写回对话历史继续循环等待下一步指令执行报错→ 生成一份反思提示词附错误信息和代码让模型自己定位并修改再试一次受max_retries反思次数和max_chat_turns对话轮次双重兜底防止无限烧 token。代码执行过程会实时推送到前端用户能看到完整的 notebook 借鉴点错误不是异常而是反馈。把执行报错作为 tool 结果喂回给模型比任何错误处理代码都有效。3.4 Writer按章节撰写图表强制落地源码见 writer_agent.py。它有两个设计细节图片强约束代码手生成的图片清单会被拼进 prompt明确要求每张图必须插入、独占一行、配 3 行以上分析避免论文里漏图或贴图无解读文献检索工具Writer 可以调用search_papers基于 OpenAlex实时检索真实文献并生成引用杜绝编造参考文献。四、设计要点 3用 Pydantic 模型定义 Agent 间数据契约多Agent系统里谁给谁传什么决定了系统的可维护性。MathModelAgent 在 A2A.py 中用 Pydantic 定义了 4 个方向性明确的信封契约类流向载荷CoordinatorToModeler协调者 → 建模手结构化问题字典 问题数ModelerToCoder建模手 → 代码手各问题的建模方案CoderToWriter代码手 → 论文手代码响应 生成的图片列表WriterResponse论文手 → 工作流章节内容 脚注方向命名AtoB直接表达数据流向类型校验由 Pydantic 完成——某段契约变更时编译期/运行期立刻报错而不是等到论文写串了才发现。五、设计要点 4编排层把流程从 Agent 里抽出去Agent 只负责做好自己那段流程编排交给独立的 flows.py 和 workflow.py求解阶段按题目动态生成子任务eda数据探索→ ques1 → ques2 → ... → 敏感性分析每个子任务的 prompt 由建模手方案 问题描述拼装而成。写作阶段固定章节序列首页摘要 → 问题重述 → 问题分析 → 模型假设 → 符号说明 → 各章节 → 模型评价每章 prompt 再注入论文模板配置md_template.toml不同赛事模板即插即用。进度广播每一步都通过 Redis 发布SystemMessage如代码手开始求解 ques1前端 WebSocket 实时订阅——用户全程看得见任务随时可停。主工作流入口 workflow.py 的逻辑可以概括为三行Coordinator 拆题 → 2. Modeler 出方案 → 3. 循环每个子任务Coder 求解 → Writer 写章节最后 Writer 补齐固定章节并保存结果。六、给新手的 5 条设计清单读完这套系统你可以直接带走这些多Agent设计经验角色垂直切分每个 Agent 只做一段职责拆题/方案/执行/写作prompt 里明确写清你不做什么如 Modeler 不写代码基类沉淀横切能力对话历史、token 估算与记忆压缩、取消信号一次实现全员共享结构化契约Agent 之间传 Pydantic 模型而非自由文本用AtoB命名固化数据流向容错内建JSON 解析失败 → 错误回喂重试代码执行失败 → 反思提示 重试上限总结失败 → 安全切片兜底过程可观测每个关键节点向前端广播进度消息长任务可取消用户才有继续用的信心。MathModelAgent 证明了多Agent协作不一定要上复杂框架——基类 契约 工作流 事件流四件套就能撑起一条从题目到论文的全自动流水线。项目更多细节可参考 README.md 与后端 Agent 实现目录 backend/app/core/agents/。【免费下载链接】MathModelAgent专为数学建模设计的 Agent skills ,自动完成数学建模生成一份完整的可以直接提交的论文。 An Agent Designed for Mathematical Modeling ,Automatically complete mathmodel and generate a complete paper ready for submission.项目地址: https://gitcode.com/GitHub_Trending/ma/MathModelAgent创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价