资讯动态

One API 新增渠道类型时如何同步 berry 主题的渠道列表与配置表单

发布时间:2026/9/12 7:07:31 来源:尧图企业网站定制
One API 新增渠道类型时如何同步 berry 主题的渠道列表与配置表单【免费下载链接】one-apiLLM API 管理 分发系统支持 OpenAI、Azure、Anthropic Claude、Google Gemini、DeepSeek、字节豆包、ChatGLM、文心一言、讯飞星火、通义千问、360 智脑、腾讯混元等主流模型统一 API 适配可用于 key 管理与二次分发。单可执行文件提供 Docker 镜像一键部署开箱即用。LLM API management key redistribution system, unifying multiple providers under a single API. Single binary, Docker-ready, with an English UI.项目地址: https://gitcode.com/GitHub_Trending/on/one-api当你在 One API 后端新增了一种渠道类型例如新的 LLM 供应商适配器berry 主题的前端并不会自动识别它新建渠道对话框的类型下拉里看不到该类型渠道列表中该类型的渠道也显示不出定义好的名称和颜色。berry 主题的 README 在「开发说明」中给出了官方做法——只需同步两个文件web/berry/src/constants/ChannelConstants.js渠道下拉与列表展示和web/berry/src/views/Channel/type/Config.js表单字段配置。本文按「确认渠道 ID → 注册渠道选项 → 配置表单 → 运行验证」的顺序走完这条路径。前提是你已经拿到 berry 主题源码位于仓库web/berry目录并且本地后端服务可以在http://127.0.0.1:3000启动berry 的 package.json 中配置了proxy: http://127.0.0.1:3000开发服务器的 API 请求会代理到该地址。第一步从后端常量确认新渠道的 ID前端所有渠道相关的 key 都是渠道 ID 数值它与后端 Go 代码中的声明顺序严格绑定。渠道类型常量定义在 relay/channeltype/define.go使用iota从 0 开始依次取值const ( Unknown iota // 0 OpenAI // 1 API2D // 2 Azure // 3 ... XAI // 45 Replicate // 46 Dummy // 47 )新增渠道类型时先确认它在define.go中的声明位置得到的数值就是前端要使用的 ID。例如OpenAI是 1、Azure是 3、Replicate是 46。现有前端选项正是按这套编号写入的见 ChannelConstants.js 中1: { text: OpenAI }、46: { text: Replicate }等条目。这个数值不能凭渠道名称猜测或自行编排否则渠道列表的展示分支会失效见文末「验证」一节。第二步在 ChannelConstants.js 中注册渠道选项按 berry README 的说明在web/berry/src/constants/ChannelConstants.js的CHANNEL_OPTIONS对象中添加新渠道key 为渠道 IDexport const CHANNEL_OPTIONS { // key 为渠道ID 1: { key: 1, // 渠道ID text: OpenAI, // 渠道名称 value: 1, // 渠道ID color: primary, // 渠道列表显示的颜色 }, };各字段在界面中的实际消费位置均来自仓库代码text/value新建渠道/编辑渠道对话框的类型下拉由 EditModal.js 遍历Object.values(CHANNEL_OPTIONS)渲染value作为选中值提交、text显示在菜单项中。因此不在这个文件注册的类型下拉框里根本不会出现。color渠道列表表格行 TableRow.js 用CHANNEL_OPTIONS[item.type].color和.text渲染带颜色的类型标签。现有条目实际使用过的颜色取值为success、primary、warning、error、purple新条目可从中选一个。一个需要留意的坑CHANNEL_OPTIONS是普通对象字面量重复的 key 后者会覆盖前者。当前仓库文件中45这个字面量 key 出现了两次xAI条目和Replicate条目后者实际value: 46导致xAI条目被Replicate覆盖。新增条目时要核对目标 ID 尚未被占用。第三步在 Config.js 的 typeConfig 中配置表单按需berry README 说明在web/berry/src/views/Channel/type/Config.js的typeConfig中为新渠道 ID 添加配置如果该渠道无需特殊配置可以不添加。不添加时EditModal.js的initChannel会直接使用defaultConfig里的默认标签与提示。typeConfig中每个条目可包含以下字段以文件中真实存在的 Azuretype 3和 AWStype 33条目为例const typeConfig { 3: { inputLabel: { base_url: AZURE_OPENAI_ENDPOINT, // 输入框名称 other: 默认 API 版本 }, prompt: { base_url: 请填写AZURE_OPENAI_ENDPOINT, // 输入框提示 other: 请输入默认API版本例如2024-03-01-preview } }, 33: { inputLabel: { key: , // 置空可隐藏密钥输入框 config: { region: Region, ak: Access Key, sk: Secret Key } }, prompt: { key: , config: { region: regione.g. us-west-2, ak: AWS IAM Access Key, sk: AWS IAM Secret Key } }, modelGroup: anthropic // 模型组名称 }, };各字段的作用以 Config.js 和 EditModal.js 中的实际逻辑为准inputLabel/prompt分别是输入框的名称与占位提示。切换渠道类型时initChannel会把这两块与defaultConfig中同名字段合并。other字段是条件显示的README 明确注释「通过判断other是否有值来判断是否需要显示other输入框默认是没有值的」。即只有在该类型的prompt.other填入非空字符串如 type 3 的「请输入默认API版本…」时表单才会出现这个输入框。inputLabel.config存在时会渲染一组额外的多行文本输入框type 33 的 Region / Access Key / Secret Key、type 37 Cloudflare 的 Account ID、type 42 VertexAI 等都用这种方式承载专有参数。inputLabel.key置为空字符串可隐藏密钥输入框AWS、VertexAI 条目即如此此时表单改用config字段拼装密钥EditModal.js的submit中会把config按ak|sk|region或region|vertex_ai_project_id|vertex_ai_adc的顺序拼成key提交。modelGroupREADME 说明它是「模型组名称」供表单中「填入渠道支持模型」按钮取值使用未填写时默认为openai。input可预填表单初始值例如 type 14Anthropic Claude预置了models: [claude-instant-1, claude-2, claude-2.0, claude-2.1]。如果新渠道的密钥、地址等全部走默认字段且无版本/插件参数这一步可以整体跳过只保留第二步。运行与验证在 berry 目录安装依赖并启动开发服务依赖声明见 web/berry/package.jsoncd web/berry npm install npm startnpm start启动 React 开发服务API 请求经proxy转发到http://127.0.0.1:3000所以验证前需确保后端已在本机 3000 端口运行。随后按以下顺序核对打开管理端「渠道」页点击新建渠道确认渠道类型下拉中出现新类型的text下拉内容来自CHANNEL_OPTIONS按text排序展示。选中新类型切换类型会触发initChannel重新合并配置核对字段标签、占位提示是否与你写入的inputLabel/prompt一致若配置了prompt.other确认「other」输入框出现反之不出现。填入名称、密钥、模型等信息提交提交走POST /api/channel/。创建成功后回到渠道列表确认该渠道的类型标签显示出你配置的text与color——表格行在CHANNEL_OPTIONS[item.type]查不到该类型时会走 TableRow.js 的 fallback 分支不会显示你定义的名称和颜色这是「渠道 ID 与后端不一致」最直接的暴露点。需要产出上线用的前端产物时执行npm run build。该脚本定义为react-scripts build mv -f build ../build/berry产物最终位于web/build/berry目录。适用边界本文只覆盖 berry 主题。仓库中同时存在web/default与web/air两个主题目录本文的操作路径与字段结构未对它们做过核对。berry README 明确列出的同步位置只有ChannelConstants.js与type/Config.js两处渠道类型的后端注册relay/channeltype/define.go常量与对应 adaptor 实现属于前置工作不在前端同步范围内本文仅将其作为确定渠道 ID 的依据。【免费下载链接】one-apiLLM API 管理 分发系统支持 OpenAI、Azure、Anthropic Claude、Google Gemini、DeepSeek、字节豆包、ChatGLM、文心一言、讯飞星火、通义千问、360 智脑、腾讯混元等主流模型统一 API 适配可用于 key 管理与二次分发。单可执行文件提供 Docker 镜像一键部署开箱即用。LLM API management key redistribution system, unifying multiple providers under a single API. Single binary, Docker-ready, with an English UI.项目地址: https://gitcode.com/GitHub_Trending/on/one-api创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价