ollama Open-WebUI请求中的1k上下文限制导致了低质量的响应,

xbp102n0  于 2个月前  发布在  其他
关注(0)|答案(6)|浏览(46)

问题是什么?

在使用open-webui时,我注意到向ollama发送的长上下文消息始终会导致响应不佳。在调查这个问题后,发现/api/chat/v1/chat/completions端点默认限制为1k的上下文长度。这意味着当内容超过这个长度时,系统会自动丢弃较早的部分,导致答案质量较差。以下是open-webui版本0.3.8的捕获的网络请求数据。

curl 'http://localhost:11434/api/chat' \
-X POST \
-H 'Host: localhost:11434' \
-H 'Accept: */*' \
-H 'User-Agent: Python/3.11 aiohttp/3.9.5' \
-H 'Content-Type: text/plain; charset=utf-8' \
--data-raw '{"model": "qwen1_5-4b-chat-q4_k_m", "messages": [{"role": "user", "content": "<long context>"}], "options": {}, "stream": true}'

根据最终的响应,我们可以看到prompt_eval_count为1026,这表明只有大约1000个令牌的上下文被处理。

{"role":"assistant","content":""},"done_reason":"stop","done":true,"total_duration":9987503333,"load_duration":28999667,"prompt_eval_count":1026,"prompt_eval_duration":1896469000,"eval_count":238,"eval_duration":8059779000}

我不确定是否应该将此错误提交给open-webui仓库。

操作系统

macOS

GPU

Apple

CPU

Apple

Ollama版本

0.3.0

l7wslrjt

l7wslrjt2#

您还可以在open-webui中为模型设置上下文长度。转到Workspace > Models > 创建模型,选择基础模型,向下滚动到Model Params,在高级参数下设置上下文长度。

uidvcgyl

uidvcgyl3#

感谢您的回复!我还发现了另一个错误。当我在 /v1/chat/completions 端点中添加 "options": {"num_ctx": 32000} 时,它不起作用,上下文长度仍然保持在1k。这个选项在 /api/chat/api/generate endpoints 上是正确的。

fivyi3re

fivyi3re4#

可能是因为OpenAI API不支持指定上下文窗口,只能是max_tokens。所以,这将是一个适当的功能请求,适用于ollama。

6g8kf2rb

6g8kf2rb5#

你还可以为open-webui中的模型设置上下文长度。前往Workspace > Models > 创建模型,选择基础模型,向下滚动到Model Params,在高级参数下设置上下文长度。

@rick-github 我尝试根据你的指示(Workspace->Models)以及在通用设置(Settings -> General -> Advanced Parameters)中设置上下文长度,但我仍然在长输入时通过webui收到较差的响应,请参阅此处查看我的测试结果。
我认为这确实是openweb-ui中的一个bug,因为在我进行的测试中,LLM在ollama服务器上的控制台交互中表现良好,但在使用web UI时却不是如此。然而,我对这一切的了解非常有限,所以我不确定是否应该在那里打开一个bug,考虑到这里的讨论似乎也表明了在ollama中有一些API级别的责任?如果你们中有谁知道解决方法,我将不胜感激,因为我不想每次遇到长提示时都打开一个shell进入服务器上的docker镜像。
另外,如果你们有人知道解决方法的话,能否向我解释一下,因为我更倾向于使用webui界面而不是每次都打开一个shell进入服务器上的docker镜像。

vawmfj5a

vawmfj5a6#

需要更多信息。如果您提供服务器日志(docker logs <name-of-ollama-container>),可以检查截断消息。查看open-webui实际发送的HTTP请求也很有用。不幸的是,这没有记录,因此需要安装一个工具来捕获它:

$ docker exec -it <name-of-ollama-container> apt install -y tcpflow
$ docker exec -it <name-of-ollama-comtainer> tcpflow -c 'src port 11434 or dst port 11434' > ollama-open-webui.log

运行此命令,使用open-webui进行长时间的上下文对话,^C tcpflow,从日志中删除任何PII,并将其添加到这里。

相关问题