chatgpt-web-dev / chatgpt-web

A third-party ChatGPT Web UI page built with Express and Vue3, through the official OpenAI completion API. / 用 Express 和 Vue3 搭建的第三方 ChatGPT 前端页面, 基于 OpenAI 官方 completion API.
https://chatgpt-web.dev
MIT License
1.6k stars 440 forks source link

增加了图片生成和图片识别功能 #443

Open Fugitive844 opened 6 months ago

Fugitive844 commented 6 months ago

git地址:https://github.com/Fugitive844/chatgpt-web.git 改动: 1、增加图片上传识别功能,上传图片时会强制使用gpt-4-vision-preview模型,如果想要基于图片进行连续上下文对话的话,对话模型也要选择gpt-4-vision-preview。【.env文件需要加入FILE_PATH=/root/chatgpt/files指定图片存储路径。】 2、增加画图功能,以“/”开头会触发画图功能,基于dall-e-3模型。生成的图片不支持连续对话上下文。【.env文件需要加入FILE_PATH=/root/chatgpt/files指定图片存储路径。】 3、增加登陆长时间不操作强制token失效功能。【【.env文件需要加入LOGOUT_MIN=5表示为5分钟不操作则登出,不填取默认值30分钟】 4、增加限制多设备登陆功能,一个账户只能在一个设备登陆,多设备登陆会把之前的设备踢下线。

存在的问题: 1、因为我不懂前端,只是加了个按钮,但是对话框中的发送框不支持markdown,所以图片图片传识别时上传图片回显我放在了回答框,有懂前端的人帮忙合作改下就完美了。

实现图片上传的做法: 1、我记得大佬说是因为引用了chatgpt这个底层包不支持所以没法做,事实的确如此,所以我去把chatgpt这个包的源码直接下载下来,全部放到service/src/openai这个目录下进行修改的。 2、我主修语言java,写这玩意也是边学边写可能不规范,如果大佬同意在发起合并请求 chat-shot (3)

opsxff commented 6 months ago

可以打个容器包吗

Fugitive844 commented 6 months ago

可以打个容器包吗

我找个网盘把挂着吧。

Fugitive844 commented 6 months ago

可以打个容器包吗

晚一点,晚上弄

BobDu commented 6 months ago

ping @Kerwin1202 期待您做出评论。

Fugitive844 commented 6 months ago

阿里云盘限制分享,弄不了,自己dockerfile打包下就行,

docker build -t chatgpt-web0226-01 .

docker run --name chatgpt-web0226-01 -d -p 3002:3002 -e TZ=Asia/Shanghai \ --env OPENAI_API_KEY=sk-ddddddddddddddddddddddddddddd\ --env MONGODB_URL='mongodb://chatgpt:password@host:port/chatgpt' \ --env OPENAI_API_MODEL=gpt-3.5-turbo \ --env AUTH_SECRET_KEY=2222222 \ --env REGISTER_ENABLED=true \ --env PASSWORD_MD5_SALT=anysalt \ --env ROOT_USER=xxxx@qq.com \ --env SITE_DOMAIN=https://www.xxxx.com \ --env SMTP_HOST=smtp.qq.com \ --env SMTP_PORT=465 \ --env SMTP_TSL=true \ --env SMTP_USERNAME=xxxxx@qq.com \ --env SITE_TITLE=SZChat \ --env TIMEOUT_MS=60000 \ --env REGISTER_MAILS='' \ --env SMTP_PASSWORD=xxxxxxxxx \ --env LOGOUT_MIN=300 \ --env FILE_PATH=/root/chatgpt/files \ -v /root/chatgpt/files/:/root/chatgpt/files/ \ chatgpt-web0226-01

BobDu commented 5 months ago

增加登陆长时间不操作强制token失效功能。 增加限制多设备登陆功能

https://github.com/chatgpt-web-dev/chatgpt-web/compare/main...Fugitive844:chatgpt-web:main#diff-61ad89f63777bd1fc3d7a3723ed711a062b9e8a82c3a1a3a39bdf6b42e3dd4a5R7

这块修改后服务变成有状态的了? 而且是内存状态。那岂不是只要出现应用重启。就会导致所有用户需要全部重新登录? 能否有更优雅的方式去实现?

BobDu commented 5 months ago

增加图片上传识别功能 增加画图功能

抱歉。这两个功能一定是属于本项目的 roadmap 的。 但是目前的这个实现代码确实需要优化到更 完美 一些~~~~。才能更好的合并。

把chatgpt这个包的源码直接下载下来

是否去做一个单独的仓库去 fork https://github.com/transitive-bullshit/chatgpt-api 并发布为一个独立的 npm 包作为上游项目 再被本项目依赖会更合理一些?

magicdmer commented 5 months ago

我也实现了一个图片生成的功能,我有个建议,就是画图不要用 "/" 因为这个已经是提示词触发快捷键了。我一开始有两个思路:

  1. 模型选择左边加个按钮,开启AI绘图,然后右边选择3.5就是dall-e-2,要是4就是dall-e-3
  2. 模型选择就加入 dall-e-2和dall-e-3,根据选择来生成,基本融入原本的流程

我选择的2,我本身是c/c++开发,也是靠临时学习+chatgpt来编写代码的,所以之前实现了不少功能也没pull,我的代码修改主要是custom分支,release也有修改日志,发现好多功能现在主干也有了,哈哈,有需要可以参考,另外我有制作docker

Fugitive844 commented 5 months ago

我只能提供一个想法,我对这个语言不熟,其实这个功能我自己用很久了,只要是解决自己能用的问题。至于登陆状态是基于内存缓存的,重启的确会失效,但是这个不影响,谁没事动不动重启项目呢?更优雅的方式一般就得用redis之类的缓存了

wshze commented 5 months ago

我看2.16版本已经增加了图片上传和识别功能。(文生图走DALL-E 3 )图片生成这个方便实现下吗?

xdl5566 commented 5 months ago

git地址:https://github.com/Fugitive844/chatgpt-web.git 改动: 1、增加图片上传识别功能,上传图片时会强制使用gpt-4-vision-preview模型,如果想要基于图片进行连续上下文对话的话,对话模型也要选择gpt-4-vision-preview。【.env文件需要加入FILE_PATH=/root/chatgpt/files指定图片存储路径。】 2、增加画图功能,以“/”开头会触发画图功能,基于dall-e-3模型。生成的图片不支持连续对话上下文。【.env文件需要加入FILE_PATH=/root/chatgpt/files指定图片存储路径。】 3、增加登陆长时间不操作强制token失效功能。【【.env文件需要加入LOGOUT_MIN=5表示为5分钟不操作则登出,不填取默认值30分钟】 4、增加限制多设备登陆功能,一个账户只能在一个设备登陆,多设备登陆会把之前的设备踢下线。

存在的问题: 1、因为我不懂前端,只是加了个按钮,但是对话框中的发送框不支持markdown,所以图片图片传识别时上传图片回显我放在了回答框,有懂前端的人帮忙合作改下就完美了。

实现图片上传的做法: 1、我记得大佬说是因为引用了chatgpt这个底层包不支持所以没法做,事实的确如此,所以我去把chatgpt这个包的源码直接下载下来,全部放到service/src/openai这个目录下进行修改的。 2、我主修语言java,写这玩意也是边学边写可能不规范,如果大佬同意在发起合并请求 chat-shot (3)

前端大佬们,本人是node.js小白,请问一下文生图DALL-E 3, 如果配置"response_format":"url", 返回图片链接这种方式,非b64_json格式的,要如何处理代码?

magicdmer commented 5 months ago

git地址:https://github.com/Fugitive844/chatgpt-web.git 改动: 1、增加图片上传识别功能,上传图片时会强制使用gpt-4-vision-preview模型,如果想要基于图片进行连续上下文对话的话,对话模型也要选择gpt-4-vision-preview。【.env文件需要加入FILE_PATH=/root/chatgpt/files指定图片存储路径。】 2、增加画图功能,以“/”开头会触发画图功能,基于dall-e-3模型。生成的图片不支持连续对话上下文。【.env文件需要加入FILE_PATH=/root/chatgpt/files指定图片存储路径。】 3、增加登陆长时间不操作强制token失效功能。【【.env文件需要加入LOGOUT_MIN=5表示为5分钟不操作则登出,不填取默认值30分钟】 4、增加限制多设备登陆功能,一个账户只能在一个设备登陆,多设备登陆会把之前的设备踢下线。 存在的问题: 1、因为我不懂前端,只是加了个按钮,但是对话框中的发送框不支持markdown,所以图片图片传识别时上传图片回显我放在了回答框,有懂前端的人帮忙合作改下就完美了。 实现图片上传的做法: 1、我记得大佬说是因为引用了chatgpt这个底层包不支持所以没法做,事实的确如此,所以我去把chatgpt这个包的源码直接下载下来,全部放到service/src/openai这个目录下进行修改的。 2、我主修语言java,写这玩意也是边学边写可能不规范,如果大佬同意在发起合并请求 chat-shot (3)

前端大佬们,本人是node.js小白,请问一下文生图DALL-E 3, 如果配置"response_format":"url", 返回图片链接这种方式,非b64_json格式的,要如何处理代码?

可以参考我的仓库custom分支代码,直接返回markdown的图片链接就能显示了,当然这个链接貌似是有时限的

xdl5566 commented 5 months ago

git地址:https://github.com/Fugitive844/chatgpt-web.git 改动: 1、增加图片上传识别功能,上传图片时会强制使用gpt-4-vision-preview模型,如果想要基于图片进行连续上下文对话的话,对话模型也要选择gpt-4-vision-preview。【.env文件需要加入FILE_PATH=/root/chatgpt/files指定图片存储路径。】 2、增加画图功能,以“/”开头会触发画图功能,基于dall-e-3模型。生成的图片不支持连续对话上下文。【.env文件需要加入FILE_PATH=/root/chatgpt/files指定图片存储路径。】 3、增加登陆长时间不操作强制token失效功能。【【.env文件需要加入LOGOUT_MIN=5表示为5分钟不操作则登出,不填取默认值30分钟】 4、增加限制多设备登陆功能,一个账户只能在一个设备登陆,多设备登陆会把之前的设备踢下线。 存在的问题: 1、因为我不懂前端,只是加了个按钮,但是对话框中的发送框不支持markdown,所以图片图片传识别时上传图片回显我放在了回答框,有懂前端的人帮忙合作改下就完美了。 实现图片上传的做法: 1、我记得大佬说是因为引用了chatgpt这个底层包不支持所以没法做,事实的确如此,所以我去把chatgpt这个包的源码直接下载下来,全部放到service/src/openai这个目录下进行修改的。 2、我主修语言java,写这玩意也是边学边写可能不规范,如果大佬同意在发起合并请求 chat-shot (3)

前端大佬们,本人是node.js小白,请问一下文生图DALL-E 3, 如果配置"response_format":"url", 返回图片链接这种方式,非b64_json格式的,要如何处理代码?

可以参考我的仓库custom分支代码,直接返回markdown的图片链接就能显示了,当然这个链接貌似是有时限的

好的,感谢大佬。是的,这个链接是有时限的,可能“b64_json“方式更佳友好