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 2d1b3aca4df319369bea61110ded23445acb1e43..d95f49f327e028459d29d9c6b71bc84dd34a248e 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 d54bcffe7137c865ff642bd1f9dccee0e8eb3714..0390cf77f04cb84df0bb59cbf69ce65c55e7b7dd 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 69753b567f91f02965f8e18c727279ae96dedb7c..bf2691ebe525f742dc65cad520f9692a491f1d63 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 0000000000000000000000000000000000000000..61cfef0c9ac7a735e8244468cb96ae4dd2292bc6 --- /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 0000000000000000000000000000000000000000..0c06b09de0f187e914c1eb0788e7f165914259e0 --- /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 0000000000000000000000000000000000000000..3ff7f0b17436c7657ab4ef2783e1b640661edbdc --- /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" + } + ] +}