GeekAI 只是提供一个你能方便使用各种 AI 工具的聚合界面,你还需要大模型 API 来提供算力。推荐你使用极客学长API中转站服务,理由如下:
- 支持国内外各种大模型,对话,绘图,音乐,视频等200多个模型,一次付费,到处使用。
- 价格优惠,不到官方的一半,消费透明,每一笔调用都有详细日志,支持支付宝,微信,USDT数字货币等多种支付方式。
- 国内可直接访问,无需科学上网,支持高并发,体验很好。
- 支透明代理,数据安全有保障。
- 支持发票开具,方便报销。
- 每个模型都有详细的价格表和API开发文档,开发接入非常方便。
创建令牌
首先,进入中转站的 令牌创建页面 创建一个令牌。
你需要关注的参数主要有两个:有效期和额度,如果你是自己用的话,一般选择 永不过期
和 无限额度
。如果是给别人用,那这个就根据你的具体需求设置。
建议你创建三个令牌,一个用来对话,一个用来进行 Dalle3 绘画,一个用于 MidJourney 绘图。
添加令牌
登录到 GeekAI-Plus管理后台,选择 API-KEY 菜单,点击 “添加APIKEY” 按钮。
注意事项:
- 名称随便填,方便你自己区分就好,可以添加不同渠道的中转 API 令牌。
- 右边的“中转01”,“中转03”这些都是只是预设而已,就是你选择了下面会自动给你带入API地址,并不是说平台只支持这些 API 平台,你可以添加任意的 API 平台。
- 类型:指的是你这个 API KEY 支持的模型类型有哪些。为什么要分类?因为考虑到用户可能会给不同令牌设置不同的模型权限,比如有令牌只能调用 Chat API,有的令牌只能调用 MidJourney 绘图 API等。
- 对话: 此类型的 API 专用于对话,支持 OpenAI 的
/v1/chat/completions
API 格式。 - MidJourney: 此类型的 API 专用于 MidJourney 绘图页面。。
- StableDiffusion: 此类型的 API 专用于 StableDiffusion 专业绘图页面。
- Dalle: 此类型的 API 专用于 Dalle3 绘图页面,兼容 OpenAI 的
/v1/images/generations
API 格式,如果你使用的是中转站,那么像gpt-4o-image
,flux-dev
系列模型,以及nano-banana
等模型都可以在此页面配置调用。 - Suno文生歌: 此类型的 API 专用于 Suno 文生歌页面。
- Luma文生视频: 此类型的 API 专用于 “视频创作” 页面的 Luma 视频生成栏目。
- 可灵视频: 此类型的 API 专用于 “视频创作” 页面的可灵视频栏目。
- 语音合成: 此类型的 API 专用在对话页面使用“语音朗读”功能的时候调用。
- 对话: 此类型的 API 专用于对话,支持 OpenAI 的
- 如果你使用的大模型 API 格式不兼容 OpenAI 的
/v1/chat/completions
API格式,建议你使用 One-API 或者 New-API 来聚合你的 API。 - 对于API URL,我们默认只需要你填写 BASE_URL 就可以了,系统默认回去访问
$BASE_URL/v1/chat/completions
这个路径。但是有些同学用的移动云或者阿里云提供的第三方渠道模型的 API 路径不是标准的/v1/chat/completions
形式,或者如果访问会报 404 错误,那么你就可以把完整的 API 路径填上去,如:https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions
。 - 一个令牌可以多次添加,比如你同一个令牌可以对话,MidJourney 绘图,Dalle3 绘画等,那么你就可以把这个令牌添加三次,分别对应不同的用途。
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 做一层转发:
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;
}
}
宝塔配置
如果使用宝塔面板,配置 Nginx 转发非常简单,点击“网站”菜单,选择“反向代理”,点击“添加反代”,填入域名和目标地址,点击“确定”即可。
这样你就可以使用 http://api.abc.com 访问 one-api 服务了。
GeekAI 配置
在 GeekAI 中配置自己搭建的 one-api 非常简单,只需要登录管理后台,选择 "API-KEY" 菜单,点击"添加 API-EKY"按钮,填入 API 信息即可。
常见错误处理
在 GeekAI 对话窗口中,凡是出现 "请求 OpenAI API 失败" 字样的,一般都是上游的 API 提供商出现了问题。请优先参考下面提供的解决方案,如果解决不了,请直接在 GeekAI 的微信交流群反馈你遇到的问题,有对接人员会帮你解决。请点击这里加入交流群。
1. 无可用渠道
这个根据上面的中转 API 原理可以知道,当中转站的API号池中没有可用的账号,就会报这个错误。因为所有的 API 账号每分钟能调用的次数都是有限的,使用人数多必然会出现这种情况。你可以采取下面几种处理方式。
- 等会重试,这时候资源可能冷却了,可以继续调用。
- 如果长时间没有可用渠道,说明中转商号池大部分好被封号了,这时你需要在群里提醒中转商加号。
- 多备用几个中转,GeekAI 管理后台允许你添加多个 API KEY 来轮询调用,多增加几个中转商能够增加你应用的可用性,哪个渠道不中用了,就禁用它,然后向中转商反馈,等这个中转恢复了再启用它,保证你的网站能一直提供服务。
2. 访问超时
- 中转 API 通常都是部署在国外的服务器,国内有些地区访问可能会比较慢,一般这种是小概率事件,确保公司或者机房内部的防火墙没有拦截请求,或者尝试给中转域名加上白名单。 或者可以尝试修改 host 文件,添加一条中转域名的手动解析记录。
- 中转此刻访问量比较大,流量饱和了,此时可以尝试在群内向中转商反馈。
3. API白名单
如果对话页面请求大模型时候报错“API地址不在白名单内”,则说明你使用的 API 中转地址不在 GeekAI 的默认白名单内。 因为 GeekAI Plus 版只能使用作者推荐的那个中转API平台生成的令牌,不支持自定义的 API 中转地址。
想要解除这种限制有两种方法:
- 使用开源社区版,社区版是全开源的,没有做任何限制。
- 联系作者购买 Plus 版的激活 License。
4. 启动失败
如果容器启动成功了,但是页面无法访问,请检查以下几点:
- 浏览器出现 502 错误,请检查你的 API 端(geekai-plus-api容器)是否正常启动了。
- 直接打不开,请检查你的 8080 端口是否被其他程序占用,导致 geekai-plus-web 容器启动失败。
- 如果 geekai-plus-web 成功启动了,但是访问不到,请检查你服务器的防火墙是否开放了 8080 端口。
- 如果找不到问题,请查看日志,日志文件路径:
logs/app/app.log
,你也查看容器日志,命令:docker-compose logs geekai-plus-api
。