AutoGen Studio UserProxy执行成功但无输出问题求助
问题解决:AutoGen User Proxy Agent执行代码无输出但exitcode为0
核心问题
搭建了包含User Proxy Agent和Assistant Agent的自主工作流,技能函数可返回预期结果,执行代码末尾也包含print语句,但User Proxy Agent显示代码输出为空,尽管控制台显示exitcode: 0(执行成功),导致Assistant Agent误判未生成结果。
问题根源
测试技能代码中的input()语句是关键诱因:
AutoGen的代码执行在非交互式子进程中完成,input()会让子进程等待输入,即便手动完成输入让进程正常退出(exitcode=0),但这个交互式操作会干扰子进程的标准输出捕获机制,导致print内容无法被正确收集并返回给User Proxy Agent。
另外,Python的print默认带缓冲区,若未强制刷新,也可能导致输出在进程结束前未被写入,无法被捕获。
解决方案
移除测试用的
input()语句
直接删除技能函数里的临时暂停逻辑a=input(),自动化执行环境不需要该操作。修改后的技能代码:def add_two_numbers(number1, number2): print(number1 + number2, flush=True) return number1 + number2强制刷新print输出缓冲区
在所有print语句中添加flush=True参数,确保输出立即写入标准输出,避免因缓冲区未刷新导致的捕获失败。优化执行代码的输出逻辑
确保Assistant Agent生成的执行代码中,函数调用后的print语句也生效,建议同样加上flush=True:from skills import add_two_numbers number1 = 2 number2 = 4 total = add_two_numbers(number1, number2) print(total, flush=True)
验证效果
修改后重新运行工作流,User Proxy Agent可正常捕获print的输出内容,Assistant Agent也能正确识别执行结果。
内容的提问来源于stack exchange,提问作者Kate Gou
相关产品推荐
相关产品推荐

