解决 Qwen-Agent 路由组件失效问题:系统提示词传递机制深度修复

【免费下载链接】Qwen-Agent Agent framework and applications built upon Qwen, featuring Code Interpreter and Chrome browser extension. 【免费下载链接】Qwen-Agent 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen-Agent

问题现象与影响范围

在 Qwen-Agent 框架的多智能体协作场景中,Router 组件负责根据用户请求动态选择最合适的子智能体(如多模态助手、天气预报工具等)。但实际测试中发现,当系统提示词包含复杂指令时,Router 无法正确将上下文传递给子智能体,导致工具调用失败或回复内容偏离预期。

路由组件工作流程图

图 1:Router 组件在多智能体系统中的位置(assets/screenshot-multi-web-qa.png

根源定位:系统提示词传递逻辑缺陷

通过分析 qwen_agent/agents/router.py 源码,发现关键问题出现在消息预处理阶段:

# 问题代码片段(router.py 第 81-83 行)
new_messages = copy.deepcopy(messages)
if new_messages and new_messages[0][ROLE] == SYSTEM:
    new_messages.pop(0)  # 错误地移除了所有系统提示词

Router 在调用子智能体前,无条件移除了消息列表中的首个系统提示词(SYSTEM 角色消息),导致:

  1. 子智能体丢失核心指令上下文
  2. 工具调用格式约束无法正确传递
  3. 多轮对话状态一致性被破坏

修复方案与代码实现

1. 选择性保留系统提示词

修改消息预处理逻辑,仅移除 Router 自身的系统提示词,保留用户或框架定义的全局系统指令:

# 修复后代码(router.py 第 81-85 行)
new_messages = copy.deepcopy(messages)
# 仅移除 Router 自身添加的系统提示词
if new_messages and new_messages[0][ROLE] == SYSTEM and "你有下列帮手" in new_messages[0].content:
    new_messages.pop(0)

2. 完善单元测试覆盖

tests/agents/test_router.py 中添加系统提示词传递测试用例:

def test_router_system_prompt():
    # 带系统提示词的测试场景
    system_msg = Message("system", "始终使用中文回复用户问题")
    user_msg = Message("user", "海淀区天气")
    messages = [system_msg, user_msg]
    
    *_, last = bot.run(messages)
    assert "中文" in last[-1].content  # 验证系统提示词生效

验证与效果对比

通过两组典型场景测试验证修复效果:

测试场景 修复前 修复后
多模态图片描述 路由失败,返回"无法理解图片" 正确调用多模态助手,生成图片内容描述
天气预报工具调用 参数格式错误(缺少location字段) 正确生成{"location": "海淀区"}调用参数

表 1:修复前后功能对比(测试用例源自 tests/agents/test_router.py

最佳实践与使用建议

  1. 系统提示词分层设计

    • 全局指令:定义跨智能体的通用规则(如回复语言、格式约束)
    • 局部指令:子智能体特有能力描述(如 qwen_agent/agents/assistant.py 中的工具调用说明)
  2. 路由调试技巧: 通过设置日志级别观察路由决策过程:

    import logging
    logging.getLogger("qwen_agent.agents.router").setLevel(logging.DEBUG)
    
  3. 版本兼容性: 该修复适用于 Qwen-Agent v0.5.0+ 版本,历史版本需同步修改 qwen_agent/agents/router.py 第 82-83 行逻辑。

总结与后续优化

本次修复解决了 Router 组件在系统提示词传递中的核心问题,为多智能体协作提供了更可靠的上下文管理机制。后续可进一步优化:

多智能体协作架构图

图 2:修复后 Router 组件在智能体协作中的数据流向(assets/screenshot-web-qa.png

通过本次修复,Qwen-Agent 的多智能体协作能力得到显著增强,特别是在复杂指令场景下的稳定性提升,为构建企业级智能体应用奠定了更坚实的基础。完整修复代码已同步至测试用例 tests/agents/test_router.py,可直接运行验证。

【免费下载链接】Qwen-Agent Agent framework and applications built upon Qwen, featuring Code Interpreter and Chrome browser extension. 【免费下载链接】Qwen-Agent 项目地址: https://gitcode.com/GitHub_Trending/qw/Qwen-Agent

Logo

更多推荐