Bug描述
你好,
我注意到当LLM使用严格的响应格式(包括反引号)回应ReAct Agent时,代理会将想法返回给用户,而不是继续执行已识别的操作。我发现问题出在以下代码片段中的_infer_stream_chunk_is_final函数(这是0.10.53版本的代码,但我相信最新版本也有同样的问题)
if len(latest_content) > len("Thought") and not latest_content.startswith(
"Thought"
)
问题在于反引号(```
)是第一个字符,所以它永远找不到LLM响应开头的Thought。通过在代码中添加一个额外的保护措施来修改代码,如下所示,可以解决这个问题。
if len(latest_content) > len("Thought") and not latest_content.startswith(
"Thought"
) and not "Though" in latest_content:
如果你需要更多信息,请告诉我。感谢这个伟大的框架!
版本
0.10.53
重现步骤
使用gpt3-5作为LLM和ReactAgent。使用gpt4时也会出现这种情况,但发生的频率较低。
相关日志/回溯
- 无响应*
1条答案
按热度按时间gab6jxml1#
要解决
_infer_stream_chunk_is_final
函数中的问题,即由于响应开头的反引号导致代理将想法返回给用户,而不是继续执行已识别的操作,您需要修改该函数以正确处理反引号。具体来说,您应该在检查其内容之前从latest_content
中删除任何前导反引号。以下是更新后的
_infer_stream_chunk_is_final
函数:这个修改确保在检查内容之前删除任何前导反引号,使函数能够正确判断块是否为最终响应的开始。要继续与Dosu交谈,请提及@dosu。