当前位置: 首页 > news >正文

山东大学-杏林集:智汇中医-项目实训(七)

一、背景与动机在之前的版本中辩证分析流程是一个写死的5阶段流水线Stage 1: Diagnosis必须等待 Stage 2: Ancient Modern可并行依赖diagnosis Stage 3: Dietary Therapy依赖diagnosis Stage 4: Safety Convalescence可并行依赖dietary Stage 5: Report等待所有完成这种设计存在三个核心问题流程僵化无论症状简单还是复杂所有Agent按固定顺序执行失败即降级某个Agent失败就直接使用降级方案缺乏重试和优化机制Agent无自主性Agent只是被动接收输入、输出结果没有思考能力缺少Agent的灵魂一个真正的多智能体系统应该具备自主决策根据自身情况决定如何执行任务质量自检完成工作后检查输出是否符合要求反思改进失败后分析原因调整策略重试动态协作根据上下文智能调整执行策略这就是本阶段要解决的问题。二、核心改进2.1 增强版编排器orchestrator_v2.py新的编排器具备以下能力用户请求 │ ▼ ┌─────────────────────────────┐ │ 评估症状复杂度 │ ← 新增simple/moderate/complex └─────────────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ Stage 1: Diagnosis V2 │ ← 必须等待核心Agent │ ├─ RAG检索 │ │ ├─ 自适应深度分析 │ ← 新增 │ ├─ 质量检验 │ ← 新增专项规则 │ └─ 反思重试(最多2次) │ ← 新增 └─────────────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ Stage 2: Ancient Modern │ ← 简单症状可跳过 │ └─ 并行执行 │ └─────────────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ Stage 3: Dietary V2 │ └─────────────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ Stage 4: Safety Convale. │ ← 并行执行 └─────────────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ Stage 5: Report V2 │ └─────────────────────────────┘2.2 关键特性对比特性V1V2流程策略固定5个Stage串行执行动态路由根据症状复杂度智能选择执行策略质量检验无7种Agent专项检验规则完整性/正确性/质量三维评分反思机制无7种Agent专属反思策略含历史模式分析重试机制无重试最多2次重试重试前等待1秒数据结构各Agent返回格式不一致统一_extract_agent_data方法兼容处理并行执行Stage内并行但数据处理不一致真正并行统一数据传递降级方案简单默认值每个Agent有专属完整降级数据执行统计仅返回results返回完整统计复杂度/重试次数/降级数/耗时等三、各Agent的增强3.1 辨证Agent V2核心改进def _assess_information_completeness(self, symptoms: List[str], user_profile: Dict) - float: 评估信息完整度 score 0.0 max_score 1.0 # 症状数量评分最高40% symptom_score min(len(symptoms) / 5.0, 0.4) score symptom_score # 体质信息20% if user_profile.get(current_constitution): score 0.2 # 年龄性别20% if user_profile.get(age) and user_profile.get(gender): score 0.2 # 病史10% if user_profile.get(medical_history): score 0.1 # 过敏史10% if user_profile.get(allergies): score 0.1 return min(score, max_score)根据信息完整度自动生成不同深度的分析指令完整度≥70%信息较为完整请进行全面的深度辨证分析完整度≥40%信息基本完整请进行重点辨证分析完整度40%信息有限请基于现有症状进行初步辨证并说明局限性3.2 古籍Agent V2改进点兼容多种数据结构V1/V2格式自动适配提示词传递更多辨证信息八纲病机治法RAG检索从3条增加到5条支持重试attempt参数3.3 现代文献Agent V2改进点与古籍Agent类似的兼容性改进增加病机和治法原则的传递输出格式统一为7个核心字段3.4 食疗推荐Agent V2改进点利用八纲辨证的寒热虚实属性生成针对性饮食原则强调药食同源目录内食材输出使用纯中文4字段3.5 安全审查Agent V2改进点智能摘要食疗方案原则食材禁忌自动将配伍禁忌和体质冲突转换为问题列表RAG查询基于结构化数据构建3.6 调养Agent V2改进点利用病机分析和治法原则生成精准推荐输出使用纯中文5大模块针灸/推拿/食疗/气功/生活调护3.7 质量检验Agent V2def _get_agent_specific_rules(self, agent_name: str) - str: 获取Agent特定的检验规则 rules { diagnosis_v2: 辨证Agent检验规则 - syndrome字段不能为空必须是有效的证型名称 - confidence必须是0-1之间的小数 - reasoning必须详细不少于50字 - key_symptoms至少包含1个症状 - 八纲辨证必须包含阴阳、表里、寒热、虚实四个维度 - 病机总结必须包含核心病机和治法原则, ancient_v2: 古籍Agent检验规则 - 类似病案至少包含1个病案 - 名家治法至少包含1个治法 - 常用经方至少包含1个方剂 ..., # ... 其他Agent规则 }评分机制完整性40%权重是否包含所有必填字段正确性30%权重数据格式是否正确内容是否合理质量30%权重内容是否足够详细、有价值3.8 反思Agent V2反思流程Agent失败/质量不通过 │ ▼ ReflectionAgent分析 ├─ 根本原因是什么 ├─ 如何修复 └─ 如果重试需要调整什么 │ ▼ 输出反思结果 ├─ root_cause: 根本原因 ├─ action: retry/skip/fallback ├─ retry_strategy: 调整建议 └─ estimated_success_rate: 预估成功率每个Agent都有专属的反思建议def _get_agent_specific_advice(self, agent_name: str) - str: advice { diagnosis_v2: 辨证Agent反思建议 - 如果是JSON解析失败可能需要调整LLM输出格式要求 - 如果证型为空可能需要提供更详细的症状信息 - 重试策略可以增加对话历史的长度或提供更明确的症状列表 - 如果多次失败降级方案是使用默认证型建议咨询医师, # ... 其他Agent建议 }四、实现细节4.1 数据结构兼容V2编排器统一处理两种数据结构def _extract_agent_data(self, result: Dict[str, Any]) - Dict[str, Any]: 统一提取Agent的数据兼容新旧两种格式 if not result: return {} if result.get(status) ! completed: return {} data result.get(data, {}) # 如果有result嵌套说明是V1格式 if result in data: return data.get(result, {}) # 直接返回data return data4.2 执行流程async def _execute_single_agent(self, state, agent_name, input_data, ...): 执行单个Agent含重试、检验、反思逻辑 while True: agent_state.attempts 1 output await agent.run(**agent_input) # 质量检验 quality_result await self._run_quality_check(...) action self._decide_next_action(state, agent_name, quality_result) if action ExecutionAction.CONTINUE: # 通过检验继续 return output elif action ExecutionAction.RETRY: # 反思后重试 reflection await self._run_reflection(...) await asyncio.sleep(1.0) continue elif action ExecutionAction.FALLBACK: # 降级方案 return self.fallback_strategies[agent_name](...) else: # 跳过 return {status: skipped}五、执行统计V2编排器返回完整的执行统计信息{ execution_stats: { total_agents: 7, completed: 6, failed: 0, skipped: 1, used_fallback: 1, degraded: 1, total_attempts: 8, duration_seconds: 45.3, symptom_complexity: moderate }, agent_details: { diagnosis_v2: { status: completed, attempts: 1, quality_score: 85.5, used_fallback: false, is_degraded: false }, ancient_v2: { status: completed, attempts: 2, quality_score: 78.0, used_fallback: false, is_degraded: false } } }六、遇到的问题与解决问题1数据结构不一致问题V1和V2 Agent返回的数据结构不同导致下游Agent无法正确处理。解决在编排器中实现_extract_agent_data统一提取方法兼容两种格式。问题2质量检验过于严格问题LLM输出经常不够完整导致质量检验评分低于阈值触发不必要的重试。解决质量检验只做结构完整性检查不做质量评分降低通过阈值从70降到60失败时直接降级不过度重试七、后续改进方向意图识别在聊天层增加意图识别自动判断用户是聊天、问诊、查询报告还是其他操作动态RAG让每个Agent根据自身情况自主决定是否进行RAG检索Agent协作实现Agent之间的主动调用而非被动接收编排器的输入前端展示让用户看到Agent的推理过程和协作状态八、总结阶段七完成了增强版编排器V2的开发主要成果质量检验和反思机制让Agent拥有自我检查和自我改进能力动态路由根据症状复杂度智能调整执行策略完整执行统计便于调试和监控可随时切换V1/V2这次改进展示了多智能体系统的核心特征自主性、协作性、反思性。
http://www.rkmt.cn/news/1384961.html

相关文章:

  • 洛雪音乐桌面版:打造你的跨平台音乐聚合播放器终极体验
  • 5分钟掌握NCM解密:解锁网易云音乐格式转换的完整指南
  • 055全排列
  • 零基础转行网络安全!通俗拆解行业岗位、能力要求与发展路径
  • 大佬推荐的网络安全学习路线(从基础到高级,超级详细)
  • AI圈神秘领袖Ilya一幅画引爆全网,OpenAI三件大事暗示AGI时代将至?
  • 集成学习在房价预测中的应用:从原理到实战调优
  • 【Unity编辑器拓展】实现ScriptableObject的结构体结构中,枚举变量显示中文描述
  • 不止于采样:深度挖掘英飞凌Aurix EVADC的硬件触发与高级仲裁机制
  • APIfox自动化测试实战:如何用后置脚本实现接口间数据传递(含公共断言脚本写法)
  • 为Claude Code配置Taotoken解决访问不稳定与Token不足难题
  • 毕业设计:基于java的在线问卷调查系统的设计与实现(源码)
  • 2026年第20周最热门的开源项目(Github)
  • Android 高频面试题汇总,26 道经典考题轻松应对面试
  • Airtest Poco实战:5分钟搞定微信小程序自动化测试环境搭建与元素抓取
  • 关联规则挖掘在Calabi-Yau流形Hodge数分析中的应用与复现
  • 优化器偷偷做了什么:一次子查询消除让我从32秒等到24毫秒
  • 别再乱点屏幕了!用Monkey黑白名单精准测试你的Android App(附完整配置文件)
  • 第三卷第4章:原型模式设计思想
  • Godot4 2D游戏开发避坑指南:TileMap绘制、节点顺序与相机设置的三个常见问题
  • 5分钟精通SPT-AKI存档编辑器:离线塔科夫终极修改指南
  • 基于MAX78000的医疗紧急呼叫系统:边缘AI与低功耗设计实战
  • 从零构建:深入理解Linux启动过程
  • 2026年业务分析报告服务TOP5深度测评:报告生成能力与落地效果全对比 - 科技焦点
  • 电信运营商每月处理海量工单,如何不再出错?基于AI Agent的端到端自动化解决方案
  • UE5 Mac环境搭好了,然后呢?给新手的第一个5分钟:创建、操控并理解你的第一个角色
  • Stylized Clouds Pack技术解析:卡通云朵的Shader架构与URP性能优化
  • 用了ChatGPT写论文初稿,如何降低AI率并同步减少文字重复率?
  • PDF4QT:免费开源的PDF全能工具箱,轻松处理各类文档难题
  • 不止是随机播放:用Unity VideoPlayer做个简易的广告机或展厅视频轮播系统