在完成 GeekAI 部署之后,你还需要添加 API KEY 才能使用 AI 对话功能。令牌我们推荐您用中转的,价格便宜,配置方便,无需科学上网,您也可以使用 one-api 搭建自己的聚合 API 系统。
API 令牌渠道选择
API选购技巧
大家在选择API中转商的时候,千万不要只看价格,要综合考虑各方面的因素:
- 模型倍率: 有的中转虽然充值的价格很低,但是他们的模型倍率也比官方高,导致的结果就是你的算力会消耗的非常快。同样是100美金的算力,可能你在这个中转这里可以调用10000次,而另一个中转那里可能1000次就刷完了。
- 响应速度: 中转本身就比直连的 API 多转发了一次,速度本来就比直连的慢,如果中转的服务器和网络不足够稳定,那么到了你这边客户端,延时将会非常严重。非常影响你应用的用户体验。
- 渠道: 很多中转之所以便宜,是因为他们渠道货不对版,比如用 AZURE 的 API 冒充 OpenAI 的API(很常见),甚至用自己部署的开源模型微调的模型冒充商业模型,一般人也分辨不出来。
这里推荐三个GPT令牌中转网站,这三个中转站的站长都在微信技术交流群中(联系作者加群),使用过程中有任何问题可以群内反馈。
- https://api.geekai.pro:有纯官转渠道和AZ混合渠道,纯管转渠道倍率比较高,虽然充值价格低,但是综合下来价格却是最贵的,尤其是 GPT-4 系列模型。但是比OpenAI官方还是要低。API的响应速度也是最快的,支持高并发,体验很好。
- https://api.geekai.me:逆向+AZ混合渠道,倍率跟官方完全一致,优势是 MJ 的价格比较低,速度稳定。逆向模型也很强大,尤其是 gpt-4o 逆向模型,支持联网,各种图片,文件解析。最大的优势是 GPT-4O 系列模型响应速度超级度快,响应时间基本在0.x秒。
支持 MidJourney,GPT,Claude,Google Gemmi,Suno 以及国内各个厂家的大模型,现在有超级优惠,价格远低于 OpenAI 官方。GPT-3.5,GPT-4,DALL-E3 绘图......你都可以随意使用,无需魔法。
注意:上面只是我个人的测试体验,可能不准确,强烈建议大家在测试完各家的 API 速度和费率之后再决定采购哪家,另外,中转有时候不稳定,建议选择一个中转做备用渠道。
如果你想在自己开发的AI应用程序中接入第三方中转 API,请参考 中转API接口文档。
中转API工作原理
所谓的中转 API 其实就是有人通过一定的渠道获取了大量的 OpenAI/Gemmin/claude/MidJourney 等 API 账号,然后部署一个 API 池子。中转人卖给你一个令牌,你就可以把 AI 请求发送到他的池子,池子采取一定的算法选取一个 API 账号帮你把请求发送到大模型后端,然后再把大模型返回的结果转发给你。
了解了这个流程之后你就应该知道这种中转 API 有如下特点:
- 令牌和池子要对应,也就是说你在哪里买的令牌,API 地址也要用他的,否则就是会报错:无效的令牌。不存在你在别的池子买的令牌却到我这来消费。
- 支持高并发,因为有大量的号在池子里面,理论上来说中转 API 的并发是池子内所有账号的并发之和。而一个池子最好也有几百个账号,所以可以应对高并发的调用。
- 速度会比官方的慢一些,原因很简单,多了几次转发。但是这个时间相对你用魔法调用官方 API 的延时可以忽略不计。当然,如果你也跟中转 API 一样,用专线魔法来调用,那就会比中转快一些。
- 偶尔会出现调用失败,原因有二。
- 封号,当你本次调用从池子里面选中的账号被封了,那么你本次调就会失败。有的中转站会做重试功能,但是这样响应的速度就会变慢。封号也是中转站最大的风险,因为这个风险都是由站长承担的。
- 限流,OpenAI 对每个 API 账号的 TPM 和 RPM 都是有严格限制的。也就是说单个 API KEY 每分钟能请求的次数和 Token 数都是有限的,超出了就会调用失败并报错。尤其是
gpt-4-all
(逆向 API)模型和dalle-e-3
模型,并发量极低,调用这两个模型失败的概率也最大,当然也是最贵的。
- 价格便宜,一般不到官方的价格的一半。为什么价格会便宜呢,想一下你买一个 5 美元额度的 API 账号需要花费多少钱就知道了。
- 支持逆向API,逆向 API 就是 ChatGPT PLUS 账号组成的池子,允许你使用 ChatGPT PLUS 的功能以及调用 GPTs。原理跟普通 API 类似,只不过这个技术实现的成本高一些,也不如常规 API 稳定。
创建令牌
中转平台基本用的都是类似的模板搭建的,所以操作就成也类似。我们这里以https://api.geekai.pro 演示。
首先你需要登录 https://api.geekai.pro 页面创建一个令牌。
你需要关注的参数主要有两个:有效期和额度,如果你是自己用的话,一般选择 永不过期
和 无限额度
。如果是给别人用,那这个就根据你的具体需求设置。
建议你创建三个令牌,一个用来对话,一个用来进行 Dalle3 绘画,一个用于 MidJourney 绘图。
添加令牌
登录到 Chat-Plus管理后台,选择 API-KEY 菜单,点击 “添加APIKEY” 按钮。
提示:
- v4.1.1之前的版本,需要填写详细地址,比如 https://api.geekai.pro/v1/chat/completions,如果是 v4.1.1 以及之后的版本,那么只需要填写 BASE URL,比如 https://api.geekai.pro。
- 如果是中转 KEY,因为它聚合了所有平台的 API,包括百度文心一言,科大讯飞,通义千问,Suno...这些。所以不管你打算用其中的那个平台,平台这栏统一选择
OpenAI/ChatGPT
这个选项。 - 如果你要支持 Dalle3 绘图的话,你记得要添加一个【绘图】的模型。只需要在【用途】栏那里选择"绘画"即可。
另外,如果你添加中转站支持的模型,平台要统一选择 OpenAI。比如你想添加一个 Suno 生成音乐的模型。只需要选好平台,填好模型名称即可。
逆向模型
gpt-4-all
,gpt-4o-all
,o1-pro-all
等凡是这些带 --all
的模型都是逆向模型,其实就是逆向了 ChatGPT 官方网站的功能。你可以通过它体验 ChatGPT plus 所有功能,而且无需魔法。ChatGPT-Plus 中的插件,你都已随意使用,体验丝滑。先放几张效果图你感受一下。
联网功能
图片识别
搜索+识图+绘图
配置非常简单,首先登录管理后台,进入模型管理菜单,然后点击添加模型按钮。
然后添加一个 gpt-4-all
模型就好了。
GPTs 应用
目前已经支持全面支持 gpt-4-gizmo-g-*
GPTs 应用模型,配置方式跟 GPT4-超级模型 一样,只需在管理后台为每个 GPTs 应用添加一个模型就好了。
获取 GPTs ID
首先,可以到 Discover GPT Store 这个网站去搜索自己想要的 GPTs。
点击你要添加的 GPTs,进入详情页,然后点击 Use xxx on ChatGPT
右键,复制链接地址。
复制的链接地址大致如下:
https://chat.openai.com/g/g-2fkFE8rbu?utm_source=gptshunter.com
后面的 g-2fkFE8rbu
表示的就是当前 GPTs 的应用 ID。
添加 GPTs 模型
复制上面的 GPTs ID 在后台添加模型。
然后就可以使用这个 GPTs 了,下面是我添加的 MidJourney 提示词的 GPTs 的演示截图。
开放模型
如果你发现前端聊天页面模型列表没有出现你添加的模型,说明当前用户没有这个模型的权限。可以通过下面两种方法解决。
第一种方法、将当前模型对外开放,这样所有用户都可以使用该模型。在管理后台编辑模型,打开 开放模型
的开关。
第二种方法、给当前用户添加模型权限。在管理后台用户列表 => 编辑用户 => 模型权限。
One-API 平台搭建
为么要用 One-API
从 v4.1.1 版本开始,GeekAI 将不在兼容多平台的 API,只支持类 OpenAI 格式的大模型 API,主要原因如下:
- 各种大模型层出不穷,要兼容的代码量越来越大,导致系统越来越臃肿。
- one-api 是一个非常优秀的大模型 API 整合框架,使用简单,功能强大,几乎支持市面上所有的主流模型,以及像 ollama 这种本地大模型的 API 服务,关键是又是完全免费开源系统,因为无需再重复造轮子,直接用这个工具即可。
使用 one-api,你可以轻松把你的所有不同平台的 API 资源(OpenAI,Claude,Azure,谷歌,星火,百度,字节,本地模型等)聚合到一起,然后作为统一的 API 接口向你应用提供服务。这样你在应用端就不需要再去兼容各个平台的 API 了,减少耦合。
其次,聚合的渠道也可以再次聚合,比如你买的中转站,已经是聚合渠道了,假设每个中转站支持的并发是1000,那么如果你买了三个不同中转平台的 API KEY,那么你聚合一起的并发就是 3000。能否大大提升你的应用 API 调用的并发数。
部署
首先拉取 docker 镜像,使用 Docker 拉取的最新镜像可能是 alpha 版本,我们这里手动指定稳定版本,我写本文档的时候的,one-api 的最新稳定版本是 v0.6.7。
使用 SQLite 的部署:
docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api:v0.6.7
使用 MySQL 的部署命令,在上面的基础上添加 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi"
,请自行修改数据库连接参数。
docker run --name one-api -d --restart always -p 3000:3000 -e SQL_DSN="root:123456@tcp(localhost:3306)/oneapi" -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api:v0.6.7
其中,-p 3000:3000
中的第一个 3000 是宿主机的端口,可以根据需要进行修改。
数据和日志将会保存在宿主机的 /home/ubuntu/data/one-api
目录,请确保该目录存在且具有写入权限,或者更改为合适的目录。
如果上面的镜像无法拉取,可以尝试使用 GitHub 的 Docker 镜像,将上面的 justsong/one-api
替换为 registry.cn-shenzhen.aliyuncs.com/geekmaster/one-api
即可。
也可以直接 docker-compose 启动,复制下面的内容到 docker-compose.yaml
services:
redis:
image: 'registry.cn-shenzhen.aliyuncs.com/geekmaster/one-api:v0.6.7'
container_name: 'one-api'
restart: always
environment:
- TZ="Asia/Shanghai"
#- SQL_DSN="root:123456@tcp(localhost:3306)/oneapi"
ports:
- '3000:3000'
volumes:
- ./data:/data
然后运行 docker-compose up -d
启动。
配置
访问 http://localhost:3000,使用 root/123456 登录后,点击 "渠道"
然后点击 "添加新的渠道",填上渠道信息,保存。
这里需要注意的,这这里的渠道可以是单一渠道,比如 OpenAI,Kimi,百度等,也是聚合渠道,比如说你购买的中转 API 就是一种聚合渠道,可以同时支持 OpenAI 和各种国产模型。只要你在"模型"这一栏把渠道支持的模型全写上去就好。
在渠道列表页还可以设置渠道的优先级,优先级高的渠道将会被优先调用,建议把稳定的渠道设置较高的优先级,这样能增加 API 的可用性。
使用
配置好渠道之后,one-api 就可以使用了,我们先创建一个令牌。
填好令牌信息,保存
复制令牌:
然后就可以使用该令牌和 API 地址(http://localhost:3000)来调用 one-api 的 API 了。
curl http://localhost:3000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-PQtiDuMUpYUtzHjtF4B60c47566b44699f4b33Ed480160De" \
-d '{
"model": "gpt-4o-mini",
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
}'
# 响应
{
"id": "chatcmpl-9qGUJ9P4QinHWPMTIHjny47Sp665T",
"object": "chat.completion",
"created": 1722243463,
"model": "gpt-4o-mini-2024-07-18",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?"
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 9,
"total_tokens": 18
},
"system_fingerprint": "fp_ba606877f9"
}
Nginx 转发
如果你想使用 one-api 对外提供服务的话,可以使用 nginx 做一层转发:
map $http_upgrade $connection_upgrade {
default upgrade;
'websocket' upgrade;
}
server {
listen 80;
server_name api.abc.com; #替换成你自己的域名
location / {
proxy_http_version 1.1;
proxy_connect_timeout 300s;
proxy_read_timeout 300s;
proxy_send_timeout 12s;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:3000;
}
}
这样你就可以使用 http://api.abc.com 访问 one-api 服务了。
GeekAI 配置
在 GeekAI 中配置自己搭建的 one-api 非常简单,只需要登录管理后台,选择 "API-KEY" 菜单,点击"添加 API-EKY"按钮,填入 API 信息即可。
常见错误处理
在 GeekAI 对话窗口中,凡是出现 "请求 OpenAI API 失败" 字样的,一般都是上游的 API 提供商出现了问题。请优先参考下面提供的解决方案,如果解决不了,请直接在 GeekAI 的微信交流群反馈你遇到的问题。
我们推荐的 API 供应商在群内都有对接人员,但是他们都各自只会处理自家 API 的问题,所以请在反馈问题的时候,请务必附上你购买 API 的网站地址。比如:https://api.geekai.pro。 否则大家都不会浪费时间回复你的。
一、某某分组无可用渠道,或者某某渠道上游已经饱和
这个根据上面的中转 API 原理可以知道,当中转站的API号池中没有可用的账号,就会报这个错误。因为所有的 API 账号每分钟能调用的次数都是有限的,使用人数多必然会出现这种情况。你可以采取下面几种处理方式。
- 等会重试,这时候资源可能冷却了,可以继续调用。
- 如果长时间没有可用渠道,说明中转商号池大部分好被封号了,这时你需要在群里提醒中转商加号。
- 多备用几个中转,Geek-AI 管理后台允许你添加多个 API KEY 来轮询调用,多增加几个中转商能够增加你应用的可用性,哪个渠道不中用了,就禁用它,然后向中转商反馈,等这个中转恢复了再启用它,保证你的网站能一直提供服务。
二、访问中转 API 超时
- 中转 API 通常都是部署在国外的服务器,国内有些地区访问可能会比较慢,一般这种是小概率事件,确保公司或者机房内部的防火墙没有拦截请求,或者尝试给中转域名加上白名单。 或者可以尝试修改 host 文件,添加一条中转域名的手动解析记录。
- 中转此刻访问量比较大,流量饱和了,此时可以尝试在群内向中转商反馈。
三、发送对话时后端返回错误,提示 API 地址不在白名单内
这是因为 GeekAI Plus 版只能使用作者推荐的那个几个中转 API 生成的令牌,不支持自定义的 API 中转地址。想要解除这种限制有两种方法。
使用开源社区版,社区版是全开源的,没有做任何限制。
联系作者购买 Plus 版的激活 License。
四、启动成功了,但是访问 http://localhost:8080 失败,页面打不开
这种错误分为以下几种情况:
- 浏览器出现 502 错误,请检查你的 API 端(geekai-plus-api容器)是否正常启动了。
- 直接打不开,请检查你的 8080 端口是否被其他程序占用,导致 geekai-plus-web 容器启动失败。
- 如果 geekai-plus-web 成功启动了,但是访问不到,请检查你服务器的防火墙是否开放了 8080 端口。