You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Autogen代理对话自动转发问题:用户确认计划后流转至其他代理

问题拆解

你的代码没达到预期效果,主要是这几个原因:

  • 你把转发逻辑注册给了project_manager,但用户的同意输入是通过user_proxy接收的,应该在user_proxy上处理转发触发逻辑。
  • 没做用户同意的判断,直接转发不符合“先评审再转发”的流程。
  • 异步函数的调用和返回值不对,register_reply要求特定的返回格式才能生效。
修正后的完整代码
import autogen

# 提前配置好你的LLM参数,示例用gpt-4
llm_config = {
    "model": "gpt-4",
    "api_key": "你的API密钥"
}

# 负责制定计划的agent
project_manager = autogen.AssistantAgent(
    name="project_manager",
    system_message="你要制定一份详细的模型火箭搭建计划,完成后等待用户的审批。",
    llm_config=llm_config,
)

# 负责针对计划输出段子的示例agent
comedian = autogen.AssistantAgent(
    name="comedian",
    system_message="你要针对收到的模型火箭计划,讲一个搞笑的段子。",
    llm_config=llm_config,)

# 用户代理,负责接收用户输入
user_proxy = autogen.UserProxyAgent(
   name="User_proxy",
   system_message="你是人类管理员,负责评审project_manager的计划。回复'同意'、'approve'、'ok'这类词确认计划,之后计划会自动转发给其他agent。",
   code_execution_config={"last_n_messages": 2, "work_dir": "groupchat"},
   human_input_mode="ALWAYS",
)

def forward_plan(recipient, messages, sender, config):
    # 检查用户最后一条消息是否包含同意关键词
    user_msg = messages[-1]["content"].lower()
    if any(word in user_msg for word in ["同意", "approve", "ok", "yes", "通过"]):
        # 从对话历史里提取project_manager发的最后一条计划内容
        plan = next(msg["content"] for msg in reversed(messages[:-1]) if msg["name"] == "project_manager")
        # 把计划转发给目标agent
        user_proxy.send_message(
            recipient=comedian,
            message=f"已通过的计划如下:\n{plan}\n请按你的职责回应。",
            request_reply=True
        )
        # 返回True表示已处理这条消息,不走默认逻辑
        return True, None
    # 未检测到同意指令,交给默认逻辑处理
    return False, None

# 给user_proxy注册自定义回复逻辑,设为最高优先级
user_proxy.register_reply([autogen.Agent, None], forward_plan, position=0)

# 启动对话流程
user_proxy.initiate_chat(
    project_manager,
    message="帮我做一份模型火箭的搭建计划", 
)
关键调整说明
  • 换注册对象:把转发逻辑绑到user_proxy上,因为用户的输入是通过这个agent接收的,能及时捕捉到同意指令。
  • 加同意判断:通过关键词识别用户是否真的同意,避免误触发转发。
  • 正确发消息:用send_message方法转发计划,这是AutoGen官方推荐的agent间通信方式,能正常触发后续对话。
  • 规范返回值:自定义函数返回(True/False, 回复内容),返回True就表示我们接管了这条消息的处理,不再走默认流程。
运行流程
  1. 用户代理发起对话,让project_manager生成模型火箭搭建计划。
  2. project_manager输出计划后,用户代理等待你输入评审意见。
  3. 你输入“同意”或类似关键词,触发转发逻辑。
  4. 计划自动发给目标agent(示例中的comedian),对方按职责生成回复。

内容的提问来源于stack exchange,提问作者ML Ops

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 05:33:13