Back
Featured image of post 一站式多模型管理:One API实用指南

一站式多模型管理:One API实用指南

我之前的一篇文章中已经介绍过One API了,使用到目前,我很喜欢。喜欢它的统一性,这使得各种其它LLM项目能够轻松调用后端模型;喜欢它的的UI简洁,模型的使用情况一眼可见。社区更新比较频繁,新模型支持也挺快。最近我在梳理自己使用AI工具的一些流程,发现有些内容需要再补充一些,于是更新一篇关于One API的使用技巧。

效果

玩游戏时作为一个收集控,如今各种模型层出不穷,显然阻止不了我的收集心。于是我收藏了一堆模型,用不用以后再说,拥有的过程就很开心:) One API中模型列表 可以看到国内外主流的都纳入囊中啦(个别是借的key)。对于这么多模型,推荐使用之前介绍过的ChatGPT-Next-Web最为合适,主要原因是它支持随时切换模型,并且通知启动参数自定义模型列表。 ChatGPT-Next-Web显示自定义模型 我们可以随时切换到某些模型来场PK(未来有空给他们一个空间竞技)。

本文谈一下部署和使用上的几个问题,众多模型的价格对比也是我之前关注但没有啥概念的。

部署

One API的部署之前文章也提过,这次为了更加正式,我将它部署在我的k8s集群内了,并且通过MySQL持久化,避免数据损失风险。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
apiVersion: apps/v1
kind: Deployment
metadata:
  name: oneapi
spec:
  selector:
    matchLabels:
      app: oneapi
  replicas: 1
  template:
    metadata:
      labels:
        app: oneapi
    spec:
      containers:
        - name: oneapi
          image: justsong/one-api:v0.6.7-alpha.4 # 视情况选择,我写文章时,用字节豆包这个版本才有
          env:
            - name: TZ
              value: "Asia/Shanghai"
            - name: SQL_DSN # mysql使用
              value:
                "root:<mysql-password>@tcp(<mysql-ip>:3306)/oneapi"
            - name: HTTP_PROXY
              value: "http://<user>:<password>@<proxy-ip>:<proxy-port>"
            - name: HTTPS_PROXY
              value: "http://<user>:<password>@<proxy-ip>:<proxy-port>"
            - name: NO_PROXY # 看日志有些报错的网站,可以这样过滤一下
              value: "windows.net"
          ports:
            - containerPort: 3000

部署有一点要注意:如果你未来的配置像我一样国内/国外模型都有,网络配置可能稍复杂一些。全走代理国内那些不合适,建议你用一些支持分流的HTTP/HTTPS代理,其它走国内流量,这样延迟也会低一些。

使用

在One API中添加一个渠道是很简单的事情,不过官方文档有些没说太清楚,要自己摸索一下。比如:

  • 在使用自定义模型名时,原模型和自定义的模型名都需要添加到模型的列表中,特别是在进行模型映射时,这点容易遗忘。自定义模型名
  • 当多个渠道提供了相同的模型名字时,默认会负载均衡的使用。如果你想优先使用某些渠道,提高它的优先级。
  • 即使不在默认的模型列表中,只要协议没变化,都是支持的,直接输入新的模型名称即可。比如零一万物的一系列模型,表带中都没几个,你依然可以输入自定义模型来解决。之后可通过测试来验证。
  • 如果你使用ChatGPT-Next-Web对接One API,可能有些模型(比如Gemini)因为ChatGPT-Next-Web本身对它有特殊处理,所以你在One API中的相关名字要注意修改。(看源码是以Gemini开头认为是Google Route规则,使用模型重定向功能,加一个合适的前缀比如oneapi)即可。
  • 通过日志可以实时查看到模型的调用情况和使用量,非常方便。至于它的额度是否准确,没有去验证过。

模型收集

一直有点好奇,当前国内外这些模型,它们价格怎么样,于是乎一个个从官网找到信息整理如下(这事情居然gpt-4做不好,gpt-4o说我的截图OCR出错也不能帮我整理,简直了!下个版本我还拿这个图考它)。废话不多说,当前主流模型的主要价格如下:

公司名称模型名称输入Token价格 (每千Token)输出Token价格 (每千Token)
OpenAIGPT-4$0.005$0.015
GPT-3.5 turbo$0.0005$0.0015
GoogleGemini 1.0 pro$0.0005$0.0015
Gemini 1.5 flash$0.00035$0.00105
Gemini 1.5 pro$0.0035$0.0105
ClaudeHaiku$0.00025$0.00125
Sonnet$0.003$0.015
Opus$0.015$0.075
TencentHunyan-pro¥0.03¥0.1
Hunyan-standard¥0.0045¥0.005
Hunyan-litefreefree
ByteDanceDoubao-lite¥0.0003¥0.0006
Doubao-pro¥0.0008¥0.002
BaichuanBaichuan4¥0.1¥0.1
Baichuan3-turbo¥0.012¥0.012
BaiduERNIE-4.0¥0.12¥0.12
ERNIE-3.5¥0.012¥0.012
ERNIE-Litefreefree
零一万物yi-large¥0.02¥0.02
yi-medium¥0.0025¥0.0025
yi-spark¥0.001¥0.001

这样看是不是直观多了?或许应该再排个序,但维度较多,有些模型隐去了几个,按价格排不太公平,罢了。 有一些羊毛当前还可以薅的。字节豆包,免费50万tokens; 腾讯混元,免费10万tokens,小模型全免费;零一万物充值送60元抵扣; 百川送120元(两次)等,这几个都基本白嫖使用中。

说完激动人心的白嫖介绍。还是看上表,有些有意思的数据:

  1. 或许是OpenAI带着,旗舰模型和次一级模型差10倍,国内国外基本是如此比例。
  2. 国内模型的Input/Output价差不明显,经常相等,国外模型常有3倍价差,这样携带聊天历史记录也不会肉痛,国内估计会有点。
  3. Claude的高级模型Opus是真的贵啊!Google努力做得比OpenAI便宜一丢丢:)
  4. 国内的yi-spark是真便宜啊,真便宜的还有腾讯混元-Lite和百度文心一言Lite,都是免费使用。你们竞争我们受益,挺好:)

测试

因为在One API之下,所有模型的使用都统一了,但One API目前有个弱点是只能针对渠道测试,不能对各个模型分别进行测试,期待未来能添加此功能。但我们测试任何模型也仅需要如下同样的模式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 设置One API的令牌
export OPENAI_API_KEY="" 
# 设置要使用的模型
export MODEL="hunyuan"

# 测试模型输出
curl https://oneapi.your-website.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "'$MODEL'",
    "messages": [
      {
        "role": "system",
        "content": "You are a helpful assistant."
      },
      {
        "role": "user",
        "content": "请按我的要求输出:你的模型名称,训练你的公司名称,训练数据截止日期。注意不要添加多余的内容。"
      }
    ]
  }'

这样可以简单调试一下各个模型的访问情况。

后记

现在我们已经将模型的使用方式统一了,各种模型它们的价格不一,擅长的可能也不尽相同,并且由于有免费等机制,我们可能想更加合理的分不同场景使用模型。

  • 一段简单的中英文互转,免费的hunyuan-lite也可以做得不错。
  • 一个模型回答的不尽人意,我是否可以快速给另一个模型一点机会?
  • 打开网页或APP去使用,对于简单的交互是否过于繁琐,有没有更直给的方式?
  • 我们在日常写代码和写文字过程中,在所喜欢的编辑器中,是否可以随时调起模型来工作,帮我写一段?

以上几个问题,最近在将One API整理之后,已经有了一些不错的解法(提示)欢迎关注我并且期待下一篇。

我是个爱折腾技术的工程师,也乐于分享。欢迎点赞、关注、分享,更欢迎一起探讨技术问题,共同学习,共同进步。为了获得更及时的文章推送,欢迎关注我的公众号:

微信公众号