ollama 工具应该支持streaming=true,

vxbzzdmp  于 5个月前  发布在  其他
关注(0)|答案(4)|浏览(135)

当stream=true时,ollama在最后的"done"消息中不会返回工具请求,而是分部分返回,就像它是一个普通的回复一样。由于这个原因,我们无法确定它是一个工具请求,因为ollama没有将角色更改为"tool",而只是"assistant"。因此,我们无法将工具调用代码从用户那里隐藏起来,因为我们无法识别它是一个工具请求而不是通常的回复,除非我们收到最后一条"done"消息,其中表示"done_reason='stop'"。这也不是一个很好的检测方法。
此外,如果stream=true,最终的"done"消息中不包含工具请求字段,就像stream=false时一样。该字段完全不存在。
这两点显然毫无意义。有以下几点是有意义的:

  1. 在流式回复的情况下,消息中应该有一个特殊的角色来打印工具请求,例如role='tool'或其他任何内容。
  2. 无论哪种情况,工具请求都应该在最终的"done"消息中呈现,这样就可以像stream=false时那样从中获取。
    我建议最好的方法是在返回工具请求时内部丢弃流式标志,因为在这里流式完全不需要,我们需要实时查看用户的操作内容,但我们不需要实时查看函数调用内容,因为我们从未向用户展示过,也无法部分执行。
    所以当模型产生工具请求时,你只需要在一个单独的"done"对象中返回工具调用即可。
    更多的歌词:
    我们不能仅仅为了使用工具而禁用流式的原因是因为工具应该在聊天过程中自发地被调用,每当模型决定需要一个工具并请求它时。
    这意味着这个过程发生在正常的聊天过程中,我们无法预测模型何时会需要一个工具请求。
nnsrf1az

nnsrf1az1#

Dupe #5796
PR #5915 正在等待审查。

h79rfbju

h79rfbju2#

Dupe #5796 Also PR #5915 正在等待审查
你的补丁是否使得能够看到该流已启动,用于工具回复,而不是常规回复,以便UI知道回复不应显示给用户?

cqoc49vn

cqoc49vn3#

Dupe #5796 Also PR #5915 正在等待审查
你的补丁是否使得能够看到该流已启动,用于工具回复,而不是常规回复,以便UI知道回复不应显示给用户?
实际上不是这样,因为当前在ollama中为工具设置的生成工具指令直接发送到流中。
你可以构建我的分支并检查它是否符合你的需求。如果符合,它可以帮助审查。如果不符合,请更新您的问题,以便开发人员可以看到预期的内容。

kh212irz

kh212irz4#

Dupe #5796 Also PR #5915 正在等待审查
你的补丁是否使得能够看到该流已启动,用于工具回复,而不是常规回复,以便UI知道回复不应显示给用户?
实际上不行,因为当前在ollama中为工具设置的生成工具指令直接发送到流中。你可以构建我的分支并检查它是否符合你的需求。如果符合,它可以帮助审查。如果不符合,请更新你的问题,以便开发者可以看到期望的内容。
我的问题已经在原始描述中包含了这个元素。

相关问题