Deeptrain-Community / chatnio

🚀 Next Generation AI One-Stop Internationalization Solution. 🚀 下一代 AI 一站式 B/C 端解决方案,支持 OpenAI,Midjourney,Claude,讯飞星火,Stable Diffusion,DALL·E,ChatGLM,通义千问,腾讯混元,360 智脑,百川 AI,火山方舟,新必应,Gemini,Moonshot 等模型,支持对话分享,自定义预设,云端同步,模型市场,支持弹性计费和订阅计划模式,支持图片解析,支持联网搜索,支持模型缓存,丰富美观的后台管理与仪表盘数据统计。
https://chatnio.com
Apache License 2.0
2.71k stars 446 forks source link

上传图片文件提问后报错 #200

Closed zjjxwhh closed 1 month ago

zjjxwhh commented 1 month ago

配置信息:

复现步骤:

  1. 新建聊天,点击聊天框上方【上传文件】,拖拽上传图片
  2. 聊天框中输入 这是什么图片,模型选择 gpt-4-vision-preview,Ctrl+Enter 发送消息

截图及日志

image

下方日志中的 image_url 为 https://pub-956e56169cbf493d92607e7baadb81a3.r2.dev/9497c8052ba4772aae3dfabcd1f89a39.png\n```,浏览器直接访问该 url 提示 ERROR 404,访问去除结尾 \n``` 的链接则可正常显示图片

PS:想请问一下,这个图片可以放在本地服务器或者上传到自建的对象存储,而不上传到 R2 吗?如果可行的话该如何配置?

[WARNING] - [2024-05-23 09:04:18] - retrying chat request for gpt-4-vision-preview (attempt 5/5, error: Invalid image.   (type: invalid_request_error))
[INFO] - [2024-05-23 09:04:18] - cannot process image: parse "https://pub-956e56169cbf493d92607e7baadb81a3.r2.dev/9497c8052ba4772aae3dfabcd1f89a39.png\n```": net/url: invalid control character in URL (source: https://pub-956e56169cbf...)
[DEBUG] - [2024-05-23 09:04:18] - [sse] event source: POST https://openkey.cloud/v1/chat/completions
headers: {"Authorization":"Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","Content-Type":"application/json"}
body: {"model":"gpt-4-vision-preview","messages":[{"role":"user","content":[{"type":"text","text":"```file\n[[3909.png]]\n\n\n这是什么图片"},{"type":"image_url","image_url":{"url":"https://pub-956e56169cbf493d92607e7baadb81a3.r2.dev/9497c8052ba4772aae3dfabcd1f89a39.png\n```"}}]}],"max_tokens":2000,"stream":true,"presence_penalty":0,"frequency_penalty":0,"temperature":0.6,"top_p":1}
[DEBUG] - [2024-05-23 09:04:26] - [sse] request failed with status: 400 Bad Request
response: {"error":{"message":"Invalid image. (request id: 2024052221042554395913047775281) (request id: 2024052221041913613541538621600)","type":"invalid_request_error","param":"","code":"invalid_image"}}
[WARNING] - [2024-05-23 09:04:26] - [channel] caught error Invalid image.   (type: invalid_request_error) for model gpt-4-vision-preview at channel OpenKEY
[INFO] - [2024-05-23 09:04:26] - [channel] channels are exhausted for model gpt-4-vision-preview
[WARNING] - [2024-05-23 09:04:26] - Invalid image.   (type: invalid_request_error) (model: gpt-4-vision-preview, client: xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx)
zmh-program commented 1 month ago

看文档去。

zjjxwhh commented 1 month ago

image

必须要输入图片 url 直链,不可以直接用上传文件的方式?

那 README 里的这种效果是怎么实现的?不太明白,麻烦大佬指点一下,感谢!

image

zmh-program commented 1 month ago

后台设置自定义文件解析服务,看解析项目文档

zjjxwhh commented 1 month ago

感谢大佬回复,我在 docker 中部署 chatnio-blob-service 试了一下:

  1. 配置成 No Storage 的时候,上传图片会被转换,chatnio 那边可以正确调用 gpt 并且获得回复,这个没问题
  2. 配置成 Local Storage 的时候,还是会有本 issue 最开始提到的问题:请求 gpt 的时候,body 中的 image_url 字段中图片 url 结尾会多一个 \n```,导致请求失败;而且我看 text 字段开头有 ```,但是结尾没有,看上去像是一个完整的 markdown 代码块被分割之后,前半段塞到了 text 字段,后半段塞到了 image_url 字段,这个麻烦大佬有空再看下,可以参考我开头贴的日志

预祝大佬中考顺利~

zmh-program commented 1 month ago

抱歉,无法复现

image

chatnio 提取图片实现为此函数,复制并最小化demo没有发现问题 https://github.com/Deeptrain-Community/chatnio/blob/f860a99d4d853a2e9fdf105c37453f647e119174/utils/char.go#L229-L234

如果不是 chatnio 最新版,请按照 README 更新容器。