综合介绍
DDG-Chat 是一个开源项目,旨在提供一个可以一键部署到多种平台的 ChatGPT API 后端。该项目支持多种模型,包括 GPT-4o mini、Claude 3 Haiku、Llama 3.1 70B 和 Mixtral 8x7B,所有模型均由 DuckDuckGo 匿名提供。用户可以通过 Vercel、Cloudflare Workers、Docker 等平台轻松部署和使用该 API 后端。
由于 DDG API 限制单 IP 并发数,推荐使用 Vercel 进行部署,如果使用 Docker 之类的本地部署,请确保项目运行在代理池中。
功能列表
- 支持多种 ChatGPT 模型
- 一键部署到 Vercel、Cloudflare Workers、Docker 等平台
- 提供 API 接口,方便第三方应用调用
- 支持多种部署方式,包括云端和本地部署
- 提供详细的部署和使用文档
使用帮助
安装与部署
Vercel 部署
- 云端 Fork 仓库部署:(Vercel一键部署)
- Fork 这个仓库到你的 GitHub 账户。
- 进入 Vercel 新建项目页面,导入你刚才 Fork 的仓库。
- 点击 Deploy 即可完成部署。
- 本地 Clone 仓库部署:
- 确保你有 Node.js 环境。
- 执行以下命令:
npm i -g vercel vercel login git clone https://github.com/leafmoes/DDG-Chat.git ddg-chat cd ddg-chat npm run publish
Cloudflare Workers 部署
- 进入 Cloudflare Workers 和 Pages 控制台,创建一个 Workers。
- 在 Workers 设置中,将运行时设置为 nodejs_compat。
- 粘贴仓库中的代码到你的 Workers,然后点击部署。
Docker 部署
- 命令行构建:
docker run -it -d --name ddg-chat -p 8787:8787 ghcr.io/leafmoes/ddg-chat:latest
- 使用 docker-compose.yml 文件构建:
- 下载并保存 docker-compose.yml 文件。
- 在该文件所在目录运行以下命令启动服务:
docker-compose up -d
环境变量
# API 调用的前缀地址 API_PREFIX = '/' # 作为调用 API 验证的 API Key API_KEY = 'dummy_key' # 向 DDG 发送请求失败的重试次数 MAX_RETRY_COUNT = 3 # 向 DDG 发送请求失败的重试延迟,单位 ms RETRY_DELAY = 5000
使用 API
调用接口
使用第三方 ChatGPT 应用来调用接口,例如 ChatNextWeb。以下是一个对话请求示例:
curl --request POST 'https://你的域名/v1/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
"messages": [
{
"role": "user",
"content": "你好!"
}
],
"model": "gpt-4o-mini",
"stream": true
}'
模型查询
访问 https://你的域名/v1/models
可查看当前支持的模型。
常见问题
- Vercel 部署限制:免费版单次 API 请求时长为 60 秒,每月 API 调用次数为 100,000 次。
- 报错 429 ERR_SERVICE_UNAVAILABLE:非 Vercel 容易出现此问题,由于 DDG API 限制单 IP 并发,建议减少并发量,同时使用代理池进行请求。
备选go版本部署:免费服务器serv00部署常驻服务
- 进入serv00面板 点击 DNS zones 点击 Add new zone 添加自己的自定义域名
- 到cf添加A记录解析
- 点击Additional services 点击Run your own applications 选择
Enabled
- 开放一个端口 我开放的是5005
- 点击 WWW Websites 点击 Add website Domain填自己的域名
- 点击下载文件 赋予文件可执行权限
chmod +x ddgchatgo-freebsd-amd64
- 在
public_html
下创建启动脚本start_ddgchatgo.sh
#!/bin/bash # 定义进程名称和启动命令 PROCESS_NAME="ddgchatgo" START_COMMAND="PORT=5005 /home/你的Serv00用户名/domains/example.com/public_html/ddgchatgo-freebsd-amd64 > /home/你的Serv00用户/domains/example.com/public_html/ddgchatgo.log 2>&1 &" # 检查进程是否在运行 if ! pgrep -f "$PROCESS_NAME" > /dev/null then echo "进程 $PROCESS_NAME 未运行,正在启动..." # 启动进程 eval "$START_COMMAND" if [ $? -eq 0 ]; then echo "进程 $PROCESS_NAME 启动成功。" else echo "进程 $PROCESS_NAME 启动失败。" fi else echo "进程 $PROCESS_NAME 已经在运行。" fi
- 赋予脚本执行权限
chmod +x start_api.sh
- cron保活 首次运行执行下面的命令即可
nohup /home/你的Serv00用户名/domains/example.com/public_html/start_ddgchatgo.sh > /home/你的Serv00用户名/domains/example.com/public_html/start_ddgchatgo.log 2>&1 &
你的Serv00用户名 换成自己的
example.com 换成自己的域名
PORT 如果开放的端口不是5005 可自行修改
#!/bin/bash
# Step 1: 进入工作目录
cd ~/domains/example.com/public_html/
# Step 2: 下载可执行程序
wget https://github.com/Shadownc/DDG-Chat-go/releases/download/v0.0.2/ddgchatgo-freebsd-amd64
# Step 3: 赋予解压后freechatgpt文件可执行权限
chmod +x ddgchatgo-freebsd-amd64
# Step 4: 创建start_ddgchatgo.sh脚本
cat <<EOL > start_ddgchatgo.sh
#!/bin/bash
# 定义进程名称和启动命令
PROCESS_NAME="ddgchatgo"
START_COMMAND="PORT=5005 /home/你的Serv00用户名/domains/example.com/public_html/ddgchatgo-freebsd-amd64 > /home/你的Serv00用户名/domains/example.com/public_html/ddgchatgo.log 2>&1 &"
# 检查进程是否在运行
if ! pgrep -f "$PROCESS_NAME" > /dev/null
then
echo "进程 $PROCESS_NAME 未运行,正在启动..."
# 启动进程
eval "$START_COMMAND"
if [ $? -eq 0 ]; then
echo "进程 $PROCESS_NAME 启动成功。"
else
echo "进程 $PROCESS_NAME 启动失败。"
fi
else
echo "进程 $PROCESS_NAME 已经在运行。"
fi
EOL
# Step 5: 赋予start_ddgchatgo.sh可执行权限
chmod +x start_ddgchatgo.sh
# Step 6: 运行start_ddgchatgo.sh脚本并将日志输出到start_ddgchatgo.log
nohup /home/你的Serv00用户名/domains/example.com/public_html/start_ddgchatgo.sh > /home/你的Serv00用户名/domains/example.com/public_html/start_ddgchatgo.log 2>&1 &
一键脚本中https://github.com/Shadownc/DDG-Chat-go/releases/download/v0.0.2/ddgchatgo-freebsd-amd64
替换为https://github.com/Shadownc/DDG-Chat-go/releases/download/v0.0.4/ddgchatgo-freebsd-amd64
可设置API KEY。
你的Serv00用户名 换成自己的
example.com 换成自己的域名
PORT 如果开放的端口不是5005 可自行修改
部署完成后,访问域名返回以下内容表示成功:
{ "message": "Welcome to the API" }
搭建完接入newapi
new api/one api选择自定义渠道
http://chat.xxl.serv00.net/v1/chat/completions