Open 4AM-GodVZz opened 3 weeks ago
目前agent的输出是默认流式(使用yield返回response),如果想把agent更改成非流式,需要添加较多逻辑。请问是有什么场景必须使用非流式呢?因为其实所有流式都可以用*_, last = response的方式获得最终非流式的结果。
因为本地部署的大模型,是非流式的输出结果,Agent需要以非流式调用大模型
目前agent的输出是默认流式(使用yield返回response),如果想把agent更改成非流式,需要添加较多逻辑。请问是有什么场景必须使用非流式呢?因为其实所有流式都可以用*_, last = response的方式获得最终非流式的结果。
因为本地部署的大模型,是非流式的输出结果,Agent需要以非流式调用大模型
那我们建议直接修改llm类的_chat_stream实现,比如这个位置 https://github.com/QwenLM/Qwen-Agent/blob/main/qwen_agent/llm/oai.py#L88 将_chat_stream(..., delta_stream=False)
里面的“流式”调用llm服务改成“非流式”调用llm服务,但是返回的内容继续保持yield [Message(ASSISTANT, full_response)]
这个格式。
目前agent的输出是默认流式(使用yield返回response),如果想把agent更改成非流式,需要添加较多逻辑。请问是有什么场景必须使用非流式呢?因为其实所有流式都可以用*_, last = response的方式获得最终非流式的结果。
因为本地部署的大模型,是非流式的输出结果,Agent需要以非流式调用大模型
那我们建议直接修改llm类的_chat_stream实现,比如这个位置 https://github.com/QwenLM/Qwen-Agent/blob/main/qwen_agent/llm/oai.py#L88 将
_chat_stream(..., delta_stream=False)
里面的“流式”调用llm服务改成“非流式”调用llm服务,但是返回的内容继续保持yield [Message(ASSISTANT, full_response)]
这个格式。
请问这里修改可以更加详细说明一下吗?我如图修改了代码,可是输出依然是流式输出,请问是还需要需改哪里吗?
目前agent的输出是默认流式(使用yield返回response),如果想把agent更改成非流式,需要添加较多逻辑。请问是有什么场景必须使用非流式呢?因为其实所有流式都可以用*_, last = response的方式获得最终非流式的结果。
因为本地部署的大模型,是非流式的输出结果,Agent需要以非流式调用大模型
那我们建议直接修改llm类的_chat_stream实现,比如这个位置 https://github.com/QwenLM/Qwen-Agent/blob/main/qwen_agent/llm/oai.py#L88 将
_chat_stream(..., delta_stream=False)
里面的“流式”调用llm服务改成“非流式”调用llm服务,但是返回的内容继续保持yield [Message(ASSISTANT, full_response)]
这个格式。请问这里修改可以更加详细说明一下吗?我如图修改了代码,可是输出依然是流式输出,请问是还需要需改哪里吗?
@wadefollower 截图中的delta_stream不是开启流式的意思,而是在“增量流式”和“全量流式”中选择一种流式。要把 _chat_stream改成非流式的话,可以类似这样:
def _chat_stream(
self,
messages: List[Message],
delta_stream: bool,
generate_cfg: dict,
) -> Iterator[List[Message]]:
yield self._chat_no_stream(messages=messages, generate_cfg=generate_cfg)
目前agent的输出是默认流式(使用yield返回response),如果想把agent更改成非流式,需要添加较多逻辑。请问是有什么场景必须使用非流式呢?因为其实所有流式都可以用*_, last = response的方式获得最终非流式的结果。