From 59abad9d30a223f7d5415918c607f78c06a35f55 Mon Sep 17 00:00:00 2001 From: orcadev Date: Fri, 14 Aug 2026 18:32:50 +0000 Subject: [PATCH] feat: add OrcaRouter as a named model provider --- .../io/maxkb/enumeration/ModelProvider.java | 3 +- .../maxkb/service/kb/MaxKbModelService.java | 3 +- .../src/main/resources/json/api_provider.json | 5 +++ .../model_orcarouter_provider_embedding.json | 22 +++++++++++++ .../json/model_orcarouter_provider_llm.json | 31 +++++++++++++++++++ .../model_orcarouter_provider_model_form.json | 30 ++++++++++++++++++ 6 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 maxkb-web/src/main/resources/json/model_orcarouter_provider_embedding.json create mode 100644 maxkb-web/src/main/resources/json/model_orcarouter_provider_llm.json create mode 100644 maxkb-web/src/main/resources/json/model_orcarouter_provider_model_form.json diff --git a/maxkb-business/src/main/java/nexus/io/maxkb/enumeration/ModelProvider.java b/maxkb-business/src/main/java/nexus/io/maxkb/enumeration/ModelProvider.java index 2d1b3ac..d95f49f 100644 --- a/maxkb-business/src/main/java/nexus/io/maxkb/enumeration/ModelProvider.java +++ b/maxkb-business/src/main/java/nexus/io/maxkb/enumeration/ModelProvider.java @@ -1,7 +1,8 @@ package nexus.io.maxkb.enumeration; public enum ModelProvider { - model_openai_provider("model_openai_provider"); + model_openai_provider("model_openai_provider"), + model_orcarouter_provider("model_orcarouter_provider"); private String name; diff --git a/maxkb-business/src/main/java/nexus/io/maxkb/service/kb/MaxKbModelService.java b/maxkb-business/src/main/java/nexus/io/maxkb/service/kb/MaxKbModelService.java index d54bcff..0390cf7 100644 --- a/maxkb-business/src/main/java/nexus/io/maxkb/service/kb/MaxKbModelService.java +++ b/maxkb-business/src/main/java/nexus/io/maxkb/service/kb/MaxKbModelService.java @@ -95,7 +95,8 @@ public class MaxKbModelService { String model_type = modelVo.getModel_type(); String provider = modelVo.getProvider(); - if (ModelProvider.model_openai_provider.getName().equals(provider)) { + if (ModelProvider.model_openai_provider.getName().equals(provider) + || ModelProvider.model_orcarouter_provider.getName().equals(provider)) { if (ModelType.EMBEDDING.getName().equals(model_type)) { EmbeddingRequest embeddingRequestVo = new EmbeddingRequest(); embeddingRequestVo.input("Hi").model(OpenAiModels.TEXT_EMBEDDING_3_SMALL); diff --git a/maxkb-web/src/main/resources/json/api_provider.json b/maxkb-web/src/main/resources/json/api_provider.json index 69753b5..bf2691e 100644 --- a/maxkb-web/src/main/resources/json/api_provider.json +++ b/maxkb-web/src/main/resources/json/api_provider.json @@ -52,6 +52,11 @@ "name": "DeepSeek", "icon": "\n\t\n" }, + { + "provider": "model_orcarouter_provider", + "name": "OrcaRouter", + "icon": "" + }, { "provider": "model_gemini_provider", "name": "Gemini", diff --git a/maxkb-web/src/main/resources/json/model_orcarouter_provider_embedding.json b/maxkb-web/src/main/resources/json/model_orcarouter_provider_embedding.json new file mode 100644 index 0000000..61cfef0 --- /dev/null +++ b/maxkb-web/src/main/resources/json/model_orcarouter_provider_embedding.json @@ -0,0 +1,22 @@ +{ + "code": 200, + "message": "成功", + "data": + [ + { + "name": "openai/text-embedding-3-large", + "desc": "OpenAI text-embedding-3-large(经由 OrcaRouter 网关路由)", + "model_type": "EMBEDDING" + }, + { + "name": "openai/text-embedding-3-small", + "desc": "OpenAI text-embedding-3-small(经由 OrcaRouter 网关路由)", + "model_type": "EMBEDDING" + }, + { + "name": "openai/text-embedding-ada-002", + "desc": "OpenAI text-embedding-ada-002(经由 OrcaRouter 网关路由)", + "model_type": "EMBEDDING" + } + ] +} diff --git a/maxkb-web/src/main/resources/json/model_orcarouter_provider_llm.json b/maxkb-web/src/main/resources/json/model_orcarouter_provider_llm.json new file mode 100644 index 0000000..0c06b09 --- /dev/null +++ b/maxkb-web/src/main/resources/json/model_orcarouter_provider_llm.json @@ -0,0 +1,31 @@ +{ + "code": 200, + "message": "成功", + "data": [ + { + "name": "orcarouter/free", + "desc": "OrcaRouter 免费入口模型", + "model_type": "LLM" + }, + { + "name": "orcarouter/fusion", + "desc": "OrcaRouter 智能路由融合模型", + "model_type": "LLM" + }, + { + "name": "orcarouter/fusion-flash", + "desc": "OrcaRouter 快速路由融合模型", + "model_type": "LLM" + }, + { + "name": "orcarouter/fusion-mini", + "desc": "OrcaRouter 轻量路由融合模型", + "model_type": "LLM" + }, + { + "name": "orcarouter/auto", + "desc": "OrcaRouter 自动路由模型", + "model_type": "LLM" + } + ] +} diff --git a/maxkb-web/src/main/resources/json/model_orcarouter_provider_model_form.json b/maxkb-web/src/main/resources/json/model_orcarouter_provider_model_form.json new file mode 100644 index 0000000..3ff7f0b --- /dev/null +++ b/maxkb-web/src/main/resources/json/model_orcarouter_provider_model_form.json @@ -0,0 +1,30 @@ +{ + "code": 200, + "message": "成功", + "data": [ + { + "input_type": "TextInput", + "label": "API 域名", + "required": true, + "default_value": "https://api.orcarouter.ai/v1", + "relation_show_field_dict": {}, + "relation_trigger_field_dict": {}, + "trigger_type": "OPTION_LIST", + "attrs": {}, + "props_info": {}, + "field": "api_base" + }, + { + "input_type": "PasswordInput", + "label": "API Key", + "required": true, + "default_value": null, + "relation_show_field_dict": {}, + "relation_trigger_field_dict": {}, + "trigger_type": "OPTION_LIST", + "attrs": {}, + "props_info": {}, + "field": "api_key" + } + ] +} -- Gitee