one api

2025-12-11 0 773

中文| English | 日本语

部署到Zeabur

Zeabur 的服务器在国外,自动解决了网络的问题,同时免费的额度也足够个人使用

  1. 首先fork 一份代码。
  2. 进入Zeabur,登录,进入控制台。
  3. 新建一个Project,在Service -> Add Service 选择Marketplace,选择MySQL,并记下连接参数(用户名、密码、地址、端口)。
  4. 复制链接参数,运行create database `one-api` 创建数据库。
  5. 然后在Service -> Add Service,选择Git(第一次使用需要先授权),选择你fork 的仓库。
  6. Deploy 会自动开始,先取消。进入下方Variable,添加一个PORT,值为3000,再添加一个SQL_DSN,值为<username>:<password>@tcp(<addr>:<port>)/one-api ,然后保存。 注意如果不填写SQL_DSN,数据将无法持久化,重新部署后数据会丢失。
  7. 选择Redeploy。
  8. 进入下方Domains,选择一个合适的域名前缀,如\”my-one-api\”,最终域名为\”my-one-api.zeabur.app\”,也可以CNAME 自己的域名。
  9. 等待部署完成,点击生成的域名进入one api 。
部署到Render

Render 提供免费额度,绑卡后可以进一步提升额度

Render 可以直接部署docker 镜像,不需要fork 仓库:https://dashboard.*r*en*der.com

配置

系统本身开箱即用。

你可以通过设置环境变量或者命令行参数进行配置。

等到系统启动后,使用root 用户登录系统并做进一步的配置。

Note :如果你不知道某个配置项的含义,可以临时删掉值以看到进一步的提示文字。

使用方法

在渠道页面中添加你的API Key,之后在令牌页面中新增访问令牌。

之后就可以使用你的令牌访问one api了,使用方式与OpenAI API 一致。

你需要在各种用到OpenAI API 的地方设置API Base 为你的one api的部署地址,例如:https://openai.ju*st*so*ng.cn,API Key 则为你在one api 中生成的令牌。

注意,具体的API Base 的格式取决于你所使用的客户端。

例如对于OpenAI 的官方库:

OPENAI_API_KEY= \" sk-xxxxxx \"
OPENAI_API_BASE= \" https://<HOST>:<PORT>/v1 \" 
one api )\\n B –&gt;|中继请求| C(OpenAI)\\n B –&gt;|中继请求| D(Azure)\\n B –&gt;|中继请求| E(其他OpenAI API 格式下游渠道)\\n B –&gt;|中继并修改请求体和返回体| F(非OpenAI API 格式下游渠道)\\n\”}\” data-plain=\”graph LR A(用户) A —>|使用one api分发的key 进行请求| B( one api ) B –>|中继请求| C(OpenAI) B –>|中继请求| D(Azure) B –>|中继请求| E(其他OpenAI API 格式下游渠道) B –>|中继并修改请求体和返回体| F(非OpenAI API 格式下游渠道) \” dir=\”auto\”>

 graph LR
    A(用户)
    A --->|使用one api分发的key 进行请求| B( one api )
    B -->|中继请求| C(OpenAI)
    B -->|中继请求| D(Azure)
    B -->|中继请求| E(其他OpenAI API 格式下游渠道)
    B -->|中继并修改请求体和返回体| F(非OpenAI API 格式下游渠道)

Loading

可以通过在令牌后面添加渠道ID 的方式指定使用哪一个渠道处理本次请求,例如:Authorization: Bearer ONE_API_KEY-CHANNEL_ID。 注意,需要是管理员用户创建的令牌才能指定渠道ID。

不加的话将会使用负载均衡的方式使用多个渠道。

环境变量

one api支持从.env 文件中读取环境变量,请参照.env.example 文件,使用时请将其重命名为.env。

  1. REDIS_CONN_STRING:设置之后将使用Redis 作为缓存使用。
    • 例子:REDIS_CONN_STRING=redis://default:redispw@localhost:49153
    • 如果数据库访问延迟很低,没有必要启用Redis,启用后反而会出现数据滞后的问题。
    • 如果需要使用哨兵或者集群模式:
      • 则需要把该环境变量设置为节点列表,例如:localhost:49153,localhost:49154,localhost:49155。
      • 除此之外还需要设置以下环境变量:
        • REDIS_PASSWORD:Redis 集群或者哨兵模式下的密码设置。
        • REDIS_MASTER_NAME:Redis 哨兵模式下主节点的名称。
  2. SESSION_SECRET:设置之后将使用固定的会话密钥,这样系统重新启动后已登录用户的cookie 将依旧有效。
    • 例子:SESSION_SECRET=random_string
  3. SQL_DSN:设置之后将使用指定数据库而非SQLite,请使用MySQL 或PostgreSQL。
    • 例子:
      • MySQL:SQL_DSN=root:123456@tcp(localhost:3306)/oneapi
      • PostgreSQL:SQL_DSN=postgres://postgres:123456@loc​​alhost:5432/oneapi(适配中,欢迎反馈)
    • 注意需要提前建立数据库oneapi,无需手动建表,程序将自动建表。
    • 如果使用本地数据库:部署命令可添加–network=\”host\” 以使得容器内的程序可以访问到宿主机上的MySQL。
    • 如果使用云数据库:如果云服务器需要验证身份,需要在连接参数中添加?tls=skip-verify。
    • 请根据你的数据库配置修改下列参数(或者保持默认值):
      • SQL_MAX_IDLE_CONNS:最大空闲连接数,默认为100。
      • SQL_MAX_OPEN_CONNS:最大打开连接数,默认为1000。
        • 如果报错Error 1040: Too many connections,请适当减小该值。
      • SQL_CONN_MAX_LIFETIME:连接的最大生命周期,默认为60,单位分钟。
  4. LOG_SQL_DSN:设置之后将为logs 表使用独立的数据库,请使用MySQL 或PostgreSQL。
  5. FRONTEND_BASE_URL:设置之后将重定向页面请求到指定的地址,仅限从服务器设置。
    • 例子:FRONTEND_BASE_URL=https://openai.j*ust*so*ng.cn
  6. MEMORY_CACHE_ENABLED:启用内存缓存,会导致用户额度的更新存在一定的延迟,可选值为true 和false,未设置则默认为false。
    • 例子:MEMORY_CACHE_ENABLED=true
  7. SYNC_FREQUENCY:在启用缓存的情况下与数据库同步配置的频率,单位为秒,默认为600 秒。
    • 例子:SYNC_FREQUENCY=60
  8. NODE_TYPE:设置之后将指定节点类型,可选值为master 和slave,未设置则默认为master。
    • 例子:NODE_TYPE=slave
  9. CHANNEL_UPDATE_FREQUENCY:设置之后将定期更新渠道余额,单位为分钟,未设置则不进行更新。
    • 例子:CHANNEL_UPDATE_FREQUENCY=1440
  10. CHANNEL_TEST_FREQUENCY:设置之后将定期检查渠道,单位为分钟,未设置则不进行检查。 +例子:CHANNEL_TEST_FREQUENCY=1440
  11. POLLING_INTERVAL:批量更新渠道余额以及测试可用性时的请求间隔,单位为秒,默认无间隔。
    • 例子:POLLING_INTERVAL=5
  12. BATCH_UPDATE_ENABLED:启用数据库批量更新聚合,会导致用户额度的更新存在一定的延迟可选值为true 和false,未设置则默认为false。
    • 例子:BATCH_UPDATE_ENABLED=true
    • 如果你遇到了数据库连接数过多的问题,可以尝试启用该选项。
  13. BATCH_UPDATE_INTERVAL=5:批量更新聚合的时间间隔,单位为秒,默认为5。
    • 例子:BATCH_UPDATE_INTERVAL=5
  14. 请求频率限制:
    • GLOBAL_API_RATE_LIMIT:全局API 速率限制(除中继请求外),单ip 三分钟内的最大请求数,默认为180。
    • GLOBAL_WEB_RATE_LIMIT:全局Web 速率限制,单ip 三分钟内的最大请求数,默认为60。
  15. 编码器缓存设置:
    • TIKTOKEN_CACHE_DIR:默认程序启动时会联网下载一些通用的词元的编码,如:gpt-3.5-turbo,在一些网络环境不稳定,或者离线情况,可能会导致启动有问题,可以配置此目录缓存数据,可迁移到离线环境。
    • DATA_GYM_CACHE_DIR:目前该配置作用与TIKTOKEN_CACHE_DIR 一致,但是优先级没有它高。
  16. RELAY_TIMEOUT:中继超时设置,单位为秒,默认不设置超时时间。
  17. RELAY_PROXY:设置后使用该代理来请求API。
  18. USER_CONTENT_REQUEST_TIMEOUT:用户上传内容下载超时时间,单位为秒。
  19. USER_CONTENT_REQUEST_PROXY:设置后使用该代理来请求用户上传的内容,例如图片。
  20. SQLITE_BUSY_TIMEOUT:SQLite 锁等待超时设置,单位为毫秒,默认3000。
  21. GEMINI_SAFETY_SETTING:Gemini 的安全设置,默认BLOCK_NONE。
  22. GEMINI_VERSION: one api所使用的Gemini 版本,默认为v1。
  23. THEME:系统的主题设置,默认为default,具体可选值参考此处。
  24. ENABLE_METRIC:是否根据请求成功率禁用渠道,默认不开启,可选值为true 和false。
  25. METRIC_QUEUE_SIZE:请求成功率统计队列大小,默认为10。
  26. METRIC_SUCCESS_RATE_THRESHOLD:请求成功率阈值,默认为0.8。
  27. INITIAL_ROOT_TOKEN:如果设置了该值,则在系统首次启动时会自动创建一个值为该环境变量值的root 用户令牌。
  28. INITIAL_ROOT_ACCESS_TOKEN:如果设置了该值,则在系统首次启动时会自动创建一个值为该环境变量的root 用户创建系统管理令牌。
  29. ENFORCE_INCLUDE_USAGE:是否强制在stream 模型下返回usage,默认不开启,可选值为true 和false。
  30. TEST_PROMPT:测试模型时的用户prompt,默认为Print your model name exactly and do not output without any other text.。

命令行参数

  1. –port <port_number>: 指定服务器监听的端口号,默认为3000。
    • 例子:–port 3000
  2. –log-dir <log_dir>: 指定日志文件夹,如果没有设置,默认保存至工作目录的logs 文件夹下。
    • 例子:–log-dir ./logs
  3. –version: 打印系统版本号并退出。
  4. –help: 查看命令的使用帮助和参数说明。

演示

在线演示

注意,该演示站不提供对外服务: https://openai.j*ust*so*ng.cn

截图展示

channeltoken

常见问题

  1. 额度是什么?怎么计算的? one api的额度计算有问题?
    • 额度= 分组倍率* 模型倍率* (提示token 数+ 补全token 数* 补全倍率)
    • 其中补全倍率对于GPT3.5 固定为1.33,GPT4 为2,与官方保持一致。
    • 如果是非流模式,官方接口会返回消耗的总token,但是你要注意提示和补全的消耗倍率不一样。
    • 注意, one api的默认倍率就是官方倍率,是已经调整过的。
  2. 账户额度足够为什么提示额度不足?
    • 请检查你的令牌额度是否足够,这个和账户额度是分开的。
    • 令牌额度仅供用户设置最大使用量,用户可自由设置。
  3. 提示无可用渠道?
    • 请检查的用户分组和渠道分组设置。
    • 以及渠道的模型设置。
  4. 渠道测试报错:invalid character \'<\’ looking for beginning of value
    • 这是因为返回值不是合法的JSON,而是一个HTML 页面。
    • 大概率是你的部署站的IP 或代理的节点被CloudFlare 封禁了。
  5. ChatGPT Next Web 报错:Failed to fetch
    • 部署的时候不要设置BASE_URL。
    • 检查你的接口地址和API Key 有没有填对。
    • 检查是否启用了HTTPS,浏览器会拦截HTTPS 域名下的HTTP 请求。
  6. 报错:当前分组负载已饱和,请稍后再试
    • 上游渠道429 了。
  7. 升级之后我的数据会丢失吗?
    • 如果使用MySQL,不会。
    • 如果使用SQLite,需要按照我所给的部署命令挂载volume 持久化one-api.db 数据库文件,否则容器重启后数据会丢失。
  8. 升级之前数据库需要做变更吗?
    • 一般情况下不需要,系统将在初始化的时候自动调整。
    • 如果需要的话,我会在更新日志中说明,并给出脚本。
  9. 手动修改数据库后报错:数据库一致性已被破坏,请联系管理员?
    • 这是检测到ability 表里有些记录的渠道id 是不存在的,这大概率是因为你删了channel 表里的记录但是没有同步在ability 表里清理无效的渠道。
    • 对于每一个渠道,其所支持的模型都需要有一个专门的ability 表的记录,表示该渠道支持该模型。

相关项目

  • FastGPT: 基于LLM 大语言模型的知识库问答系统
  • ChatGPT Next Web: 一键拥有你自己的跨平台ChatGPT 应用
  • VChart: 不只是开箱即用的多端图表库,更是生动灵活的数据故事讲述者。
  • VMind: 不仅自动,还很智能。开源智能可视化解决方案。
  • CherryStudio: 全平台支持的AI客户端, 多服务商集成管理、本地知识库支持。

注意

本项目使用MIT 协议进行开源,在此基础上,必须在页面底部保留署名以及指向本项目的链接。如果不想保留署名,必须首先获得授权。

同样适用于基于本项目的二开项目。

依据MIT 协议,使用者需自行承担使用本项目的风险与责任,本开源项目开发者与此无关。

下载源码

通过命令行克隆项目:

git clone https://github.com/songquanpeng/one-api.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 建站资源 one api https://www.zuozi.net/35492.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务