前言
新手贴,第一次来 Linuxdo,不知道发些什么,就发个前段时间写的 DDG-Chat 吧。
正文
一键免费部署到各种平台你的 ChatGPT API 后端
支持 Vercel, Cloudflare Workers, Docker, Render 等
支持 GPT4o mini, Claude 3 Haiku, Llama 3.1 70B, Mixtral 8x7B 模型
所有模型均由 DuckDuckGo 匿名提供
项目地址:
作者:如果你能用到,希望可以点个 Star ,就是对我最大的支持
一键部署
手动部署
Vercel / Cloudflare Workers / Docker / Render / Hugging Face / More Serverless
演示API
请勿滥用
建议使用方式
使用第三方 ChatGPT 应用来调用接口,例如:
调用接口
对话请求
示例(其中 chatcfapi.r12.top
请替换为你自己部署后的域名):
curl --request POST 'https://chatcfapi.r12.top/v1/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"role": "user",
"content": "你好!"
}
],
"model": "gpt-4o-mini",
"stream": true
}'
模型查询
示例(其中 chatcfapi.r12.top
请替换为你自己部署后的域名):
访问 http://chatcfapi.r12.top/v1/models
可查看当前支持的模型
支持的模型
该模型名称同步使用 DDG 网页抓包所得 (未知模型均会被重定向到 gpt-4o-mini 模型)
- gpt-4o-mini
- claude-3-haiku
- llama-3.1-70b
- mixtral-8x7b
手动部署
由于 DDG API 限制单 IP 并发数,推荐使用 Vercel 进行部署,如果使用 Docker 之类的本地部署,请确保项目运行在代理池中。
Vercel
方法一:云端 Fork 仓库部署
- fork 这个仓库到你的 Github
- 进入 Vercel New Project 网页,
Import
你刚才 fork 的仓库 - 点击
Deploy
即可
方法二:本地 Clone 仓库部署
- 首先确保你有 Nodejs 环境
- 执行下面命令:
npm i -g vercel
vercel login
git clone https://github.com/leafmoes/DDG-Chat.git ddg-chat
cd ddg-chat
npm run publish
方法三:一键部署
Render
- fork 这个仓库到你的 Github
- 点击下面按钮到 Render 官网,
Import
你刚才 fork 的仓库,然后按正常部署流程走
Cloudflare Workers
方法一:
- 进入 Cloudflare Workers 和 Pages 控制台,创建一个 Workers
- 进入 Workers 设置,在
运行时
设置兼容性标志
为nodejs_compat
- 粘贴 此文件 内部代码到你的 Workers,然后点击部署
方法二:
- 首先确保你有 Nodejs 环境
- 首先执行下面命令:
npm i -g wrangler
wrangler login
git clone https://github.com/leafmoes/DDG-Chat.git ddg-chat
cd ddg-chat
npm install
- 打开文件 /api/index.js ,取消最后一行的注释,然后执行
npm run publish:cf
Hugging Face
Docker
作者:优化啦,不是 1G 了,现在只有 52M
方法一:命令行构建
docker run -it -d --name ddg-chat -p 8787:8787 leafmoes/ddg-chat:latest
方法二:使用 docker-compose.yml
文件构建
下载保存 docker-compose.yml 文件,然后在该文件所在目录运行 docker-compose up -d
来启动服务。
Docker 相关命令
docker logs -f ddg-chat # 查看服务实时日志
docker restart ddg-chat # 重启服务
docker stop ddg-chat # 停止服务
环境变量
# API 调用的前缀地址
API_PREFIX = '/'
# 作为调用 API 验证的 API Key
API_KEY = 'dummy_key'
# 向 DDG 发送请求失败的重试次数
MAX_RETRY_COUNT = 3
# 向 DDG 发送请求失败的重试延迟,单位 ms
RETRY_DELAY = 5000
免责声明
项目仅供参考学习,如有侵权,请联系删除。
闲言碎语
这个项目是前段时间发到 Github 的,我看有坛友 @cself 好像还写了个 Golang 的版本发到了这里,不过我当时也是因为 Golang 的 Duck2api 在 Vercel 跑不起来( Vercel 对 Golang 流的支持似乎不是很好),才使用 Js 重新写了一遍项目,让他能支持更多的 Serverless 平台。
我在 Golang 版本那个帖子上看到有坛友 @mikeee 在这里 吐槽 我镜像大,能有 1G ,这个确实,那个 Docker 连我自己都没测试过,本人还是一个新手,没怎么用过 Docker 打包,发布。我默认发到 GitHub Container Registry 这个平台的,他貌似不展示 Docker 的大小,也一直没有用户跟我反映过这个镜像太大了,导致这个明显有着很大缺陷的镜像在项目发布三周以来一直存在。目前已经经过优化了,使用 node:lts-alpine 为底包进行打包,现在大概是 52 MB左右的大小,并且发布到 Docker Hub。