From 2a6af4d3f66a8bb031b32076761592f5775abae4 Mon Sep 17 00:00:00 2001 From: "zhenjun.chen" Date: Fri, 29 May 2026 17:25:34 +0800 Subject: [PATCH] feat(model): add OrcaRouter as an OpenAI-compatible model provider OrcaRouter is an OpenAI-compatible router/aggregator: one API key reaches many upstream models across vendors, and orcarouter/auto picks an upstream per request by policy (cost/quality/latency/adaptive). This change is additive only and does not modify any existing provider's code, config, or tests. - add ModelClass.OrcaRouter (thrift + generated Go/TS) and map the 'orcarouter' protocol string to it - register the OrcaRouter provider (icon/name/description) in the provider list, consistent with the existing providers - add a dedicated model builder that reuses the OpenAI chat-model path, defaults the base URL to OrcaRouter, injects optional attribution headers (HTTP-Referer/X-Title) without overriding caller headers, and withholds sampling params for orcarouter/auto and known reasoning models (which reject temperature) while keeping full control for pinned models - add a model template (default orcarouter/auto), model_meta entries (default + flagship presets), and the provider icon - unit tests for attribution-header injection, sampling-param suppression, and builder registration I'm an engineer on the OrcaRouter team. --- .../model/app/developer_api/developer_api.go | 8 +- .../config/modelmgr/deprecate_model_get.go | 5 + .../bizpkg/config/modelmgr/mode_provider.go | 12 + .../bizpkg/llm/modelbuilder/model_builder.go | 15 +- backend/bizpkg/llm/modelbuilder/orcarouter.go | 156 +++++++ .../llm/modelbuilder/orcarouter_test.go | 186 ++++++++ backend/conf/model/model_meta.json | 436 +++++++++++++++++ .../template/model_template_orcarouter.yaml | 160 +++++++ .../volumes/minio/default_icon/orcarouter.png | Bin 0 -> 88936 bytes .../developer_api/namespaces/developer_api.ts | 2 + .../opencoze/files/conf/model/model_meta.json | 438 +++++++++++++++++- idl/app/developer_api.thrift | 1 + 12 files changed, 1410 insertions(+), 9 deletions(-) create mode 100644 backend/bizpkg/llm/modelbuilder/orcarouter.go create mode 100644 backend/bizpkg/llm/modelbuilder/orcarouter_test.go create mode 100644 backend/conf/model/template/model_template_orcarouter.yaml create mode 100644 docker/volumes/minio/default_icon/orcarouter.png diff --git a/backend/api/model/app/developer_api/developer_api.go b/backend/api/model/app/developer_api/developer_api.go index 48a9a57ad6..c2cca4937b 100644 --- a/backend/api/model/app/developer_api/developer_api.go +++ b/backend/api/model/app/developer_api/developer_api.go @@ -935,7 +935,9 @@ const ( // name: Llama ModelClass_Llama ModelClass = 20 ModelClass_StepFun ModelClass = 23 - ModelClass_Other ModelClass = 999 + // name: OrcaRouter (OpenAI-compatible meta-router) + ModelClass_OrcaRouter ModelClass = 24 + ModelClass_Other ModelClass = 999 ) func (p ModelClass) String() string { @@ -980,6 +982,8 @@ func (p ModelClass) String() string { return "Llama" case ModelClass_StepFun: return "StepFun" + case ModelClass_OrcaRouter: + return "OrcaRouter" case ModelClass_Other: return "Other" } @@ -1028,6 +1032,8 @@ func ModelClassFromString(s string) (ModelClass, error) { return ModelClass_Llama, nil case "StepFun": return ModelClass_StepFun, nil + case "OrcaRouter": + return ModelClass_OrcaRouter, nil case "Other": return ModelClass_Other, nil } diff --git a/backend/bizpkg/config/modelmgr/deprecate_model_get.go b/backend/bizpkg/config/modelmgr/deprecate_model_get.go index 2b254ebec3..6227cc1ac4 100644 --- a/backend/bizpkg/config/modelmgr/deprecate_model_get.go +++ b/backend/bizpkg/config/modelmgr/deprecate_model_get.go @@ -204,6 +204,8 @@ func strProtocolToModelClass(protocol Protocol) developer_api.ModelClass { modelClass = developer_api.ModelClass_Llama case ProtocolQwen: modelClass = developer_api.ModelClass_QWen + case ProtocolOrcaRouter: + modelClass = developer_api.ModelClass_OrcaRouter default: modelClass = developer_api.ModelClass_SEED } @@ -348,6 +350,9 @@ const ( ProtocolArk Protocol = "ark" ProtocolOllama Protocol = "ollama" ProtocolQwen Protocol = "qwen" + // ProtocolOrcaRouter is an OpenAI-compatible meta-router; it reuses the + // OpenAI wire protocol with a dedicated builder that injects attribution headers. + ProtocolOrcaRouter Protocol = "orcarouter" ) type MultilingualText struct { diff --git a/backend/bizpkg/config/modelmgr/mode_provider.go b/backend/bizpkg/config/modelmgr/mode_provider.go index e3bdb3a79c..bbd390940d 100644 --- a/backend/bizpkg/config/modelmgr/mode_provider.go +++ b/backend/bizpkg/config/modelmgr/mode_provider.go @@ -107,6 +107,18 @@ func getModelProviderList() []*config.ModelProvider { }, ModelClass: developer_api.ModelClass_QWen, }, + { + Name: &config.I18nText{ + ZhCn: "OrcaRouter", + EnUs: "OrcaRouter", + }, + IconURI: "default_icon/orcarouter.png", + Description: &config.I18nText{ + ZhCn: "OrcaRouter 是 OpenAI 兼容的智能路由聚合网关,一个 API key 即可访问多家上游模型并按策略自动路由", + EnUs: "OrcaRouter is an OpenAI-compatible adaptive routing gateway: one API key to reach many upstream models with automatic, policy-based routing", + }, + ModelClass: developer_api.ModelClass_OrcaRouter, + }, } } diff --git a/backend/bizpkg/llm/modelbuilder/model_builder.go b/backend/bizpkg/llm/modelbuilder/model_builder.go index 7b74ff41a0..18367ed028 100644 --- a/backend/bizpkg/llm/modelbuilder/model_builder.go +++ b/backend/bizpkg/llm/modelbuilder/model_builder.go @@ -40,13 +40,14 @@ type Service interface { } var modelClass2NewModelBuilder = map[developer_api.ModelClass]func(*config.Model) Service{ - developer_api.ModelClass_SEED: newArkModelBuilder, - developer_api.ModelClass_GPT: newOpenaiModelBuilder, - developer_api.ModelClass_Claude: newClaudeModelBuilder, - developer_api.ModelClass_DeekSeek: newDeepseekModelBuilder, - developer_api.ModelClass_Gemini: newGeminiModelBuilder, - developer_api.ModelClass_Llama: newOllamaModelBuilder, - developer_api.ModelClass_QWen: newQwenModelBuilder, + developer_api.ModelClass_SEED: newArkModelBuilder, + developer_api.ModelClass_GPT: newOpenaiModelBuilder, + developer_api.ModelClass_Claude: newClaudeModelBuilder, + developer_api.ModelClass_DeekSeek: newDeepseekModelBuilder, + developer_api.ModelClass_Gemini: newGeminiModelBuilder, + developer_api.ModelClass_Llama: newOllamaModelBuilder, + developer_api.ModelClass_QWen: newQwenModelBuilder, + developer_api.ModelClass_OrcaRouter: newOrcaRouterModelBuilder, } func NewModelBuilder(modelClass developer_api.ModelClass, cfg *config.Model) (Service, error) { diff --git a/backend/bizpkg/llm/modelbuilder/orcarouter.go b/backend/bizpkg/llm/modelbuilder/orcarouter.go new file mode 100644 index 0000000000..780cae8bca --- /dev/null +++ b/backend/bizpkg/llm/modelbuilder/orcarouter.go @@ -0,0 +1,156 @@ +/* + * Copyright 2025 coze-dev Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package modelbuilder + +import ( + "context" + "net/http" + "strings" + + "github.com/cloudwego/eino-ext/components/model/openai" + + "github.com/coze-dev/coze-studio/backend/api/model/admin/config" + "github.com/coze-dev/coze-studio/backend/api/model/app/bot_common" + "github.com/coze-dev/coze-studio/backend/pkg/lang/ptr" +) + +// OrcaRouter is an OpenAI-compatible meta-router. It speaks the OpenAI wire +// protocol, so the request/response handling is identical to the OpenAI +// builder; the only OrcaRouter-specific behavior is the attribution headers +// added to every request, which let the OrcaRouter backend attribute traffic +// to Coze Studio. These headers are optional for OpenAI-compatible gateways +// and are ignored by upstreams that do not understand them. +const ( + orcaRouterReferer = "https://github.com/coze-dev/coze-studio" + orcaRouterTitle = "Coze Studio" + // orcaRouterDefaultBaseURL is the canonical OrcaRouter API base; used when + // the connection config does not supply one, so that the orcarouter + // protocol cannot accidentally fall back to the upstream openai default. + orcaRouterDefaultBaseURL = "https://api.orcarouter.ai/v1" +) + +type orcaRouterModelBuilder struct { + cfg *config.Model +} + +func newOrcaRouterModelBuilder(cfg *config.Model) Service { + return &orcaRouterModelBuilder{ + cfg: cfg, + } +} + +// attributionRoundTripper adds OrcaRouter attribution headers to every request +// without overriding any header that the inner transport already set. +type attributionRoundTripper struct { + next http.RoundTripper +} + +func (t *attributionRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + // Clone to avoid mutating the caller's request (http.RoundTripper contract). + r := req.Clone(req.Context()) + if r.Header.Get("HTTP-Referer") == "" { + r.Header.Set("HTTP-Referer", orcaRouterReferer) + } + if r.Header.Get("X-Title") == "" { + r.Header.Set("X-Title", orcaRouterTitle) + } + return t.next.RoundTrip(r) +} + +// suppressesSamplingParams reports whether sampling parameters (temperature, +// top_p, presence/frequency penalty) must be withheld for the given model. +// +// Two cases require this: +// - The adaptive router "orcarouter/auto": the upstream model is chosen per +// request and is unknowable client-side, so any sampling param risks being +// rejected by whatever model the router lands on (reasoning models reject +// temperature/top_k, grok rejects penalties, etc.). +// - A model that is itself a reasoning model: these reject temperature +// outright (HTTP 400 "temperature is deprecated for this model"). +// +// This is a client-side guard. The general, durable fix belongs in the +// OrcaRouter backend (normalize/strip params per chosen upstream, like +// OpenRouter does); once that ships, this guard can be removed. The reasoning +// patterns mirror the override list maintained in the OrcaRouter integration +// notes (§16) and are matched loosely so dated/sub-variants are covered. +func suppressesSamplingParams(model string) bool { + m := strings.ToLower(strings.TrimSpace(model)) + switch { + case m == "auto" || strings.HasSuffix(m, "/auto"): + return true // adaptive router — upstream unknown at request time + case strings.Contains(m, "claude-opus-4"): // Anthropic reasoning flagships (4.x) + return true + case strings.Contains(m, "gpt-5"): // OpenAI gpt-5 family (incl. mini/nano/pro) + return true + case strings.Contains(m, "deepseek-reasoner") || strings.Contains(m, "deepseek-r1"): + return true + default: + return false + } +} + +// applyNonSamplingParams sets only the parameters that every upstream accepts +// (max tokens, response format). It deliberately omits temperature / top_p / +// penalties for adaptive or reasoning models — see suppressesSamplingParams. +func applyNonSamplingParams(conf *openai.ChatModelConfig, params *LLMParams) { + if params == nil { + return + } + if params.MaxTokens != 0 { + conf.MaxCompletionTokens = ptr.Of(params.MaxTokens) + } + if params.ResponseFormat == bot_common.ModelResponseFormat_JSON { + conf.ResponseFormat = &openai.ChatCompletionResponseFormat{ + Type: openai.ChatCompletionResponseFormatTypeJSONObject, + } + } else { + conf.ResponseFormat = &openai.ChatCompletionResponseFormat{ + Type: openai.ChatCompletionResponseFormatTypeText, + } + } +} + +func (o *orcaRouterModelBuilder) Build(ctx context.Context, params *LLMParams) (ToolCallingChatModel, error) { + base := o.cfg.Connection.BaseConnInfo + + // Reuse the OpenAI builder's config construction so request handling stays + // in lockstep with the openai protocol; we only layer attribution on top. + ob := &openaiModelBuilder{cfg: o.cfg} + conf := ob.getDefaultConfig() + conf.APIKey = base.APIKey + conf.Model = base.Model + + if base.BaseURL != "" { + conf.BaseURL = base.BaseURL + } else { + conf.BaseURL = orcaRouterDefaultBaseURL + } + + // Pinned models that accept sampling params get the full openai treatment; + // the adaptive router and reasoning models get only the safe params. + if suppressesSamplingParams(base.Model) { + applyNonSamplingParams(conf, params) + } else { + ob.applyParamsToOpenaiConfig(conf, params) + } + + conf.HTTPClient = &http.Client{ + Transport: &attributionRoundTripper{next: http.DefaultTransport}, + } + + return openai.NewChatModel(ctx, conf) +} diff --git a/backend/bizpkg/llm/modelbuilder/orcarouter_test.go b/backend/bizpkg/llm/modelbuilder/orcarouter_test.go new file mode 100644 index 0000000000..c3ea18810e --- /dev/null +++ b/backend/bizpkg/llm/modelbuilder/orcarouter_test.go @@ -0,0 +1,186 @@ +/* + * Copyright 2025 coze-dev Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package modelbuilder + +import ( + "io" + "net/http" + "strings" + "testing" + + "github.com/cloudwego/eino-ext/components/model/openai" + + "github.com/coze-dev/coze-studio/backend/api/model/admin/config" + "github.com/coze-dev/coze-studio/backend/api/model/app/developer_api" +) + +// captureRoundTripper records the request it receives and returns a dummy 200. +type captureRoundTripper struct { + captured *http.Request +} + +func (c *captureRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) { + c.captured = req + return &http.Response{ + StatusCode: http.StatusOK, + Body: io.NopCloser(strings.NewReader("{}")), + Header: make(http.Header), + Request: req, + }, nil +} + +func newTestRequest(t *testing.T) *http.Request { + t.Helper() + req, err := http.NewRequest(http.MethodPost, "https://api.orcarouter.ai/v1/chat/completions", strings.NewReader(`{}`)) + if err != nil { + t.Fatalf("new request: %v", err) + } + return req +} + +func TestAttributionRoundTripper_InjectsHeadersWhenAbsent(t *testing.T) { + cap := &captureRoundTripper{} + rt := &attributionRoundTripper{next: cap} + + if _, err := rt.RoundTrip(newTestRequest(t)); err != nil { + t.Fatalf("round trip: %v", err) + } + + if got := cap.captured.Header.Get("HTTP-Referer"); got != orcaRouterReferer { + t.Errorf("HTTP-Referer = %q, want %q", got, orcaRouterReferer) + } + if got := cap.captured.Header.Get("X-Title"); got != orcaRouterTitle { + t.Errorf("X-Title = %q, want %q", got, orcaRouterTitle) + } +} + +func TestAttributionRoundTripper_DoesNotOverrideExisting(t *testing.T) { + cap := &captureRoundTripper{} + rt := &attributionRoundTripper{next: cap} + + req := newTestRequest(t) + req.Header.Set("HTTP-Referer", "https://custom.example/") + req.Header.Set("X-Title", "Custom Client") + + if _, err := rt.RoundTrip(req); err != nil { + t.Fatalf("round trip: %v", err) + } + + if got := cap.captured.Header.Get("HTTP-Referer"); got != "https://custom.example/" { + t.Errorf("HTTP-Referer overridden: got %q", got) + } + if got := cap.captured.Header.Get("X-Title"); got != "Custom Client" { + t.Errorf("X-Title overridden: got %q", got) + } +} + +func TestAttributionRoundTripper_DoesNotMutateOriginalRequest(t *testing.T) { + cap := &captureRoundTripper{} + rt := &attributionRoundTripper{next: cap} + + req := newTestRequest(t) + if _, err := rt.RoundTrip(req); err != nil { + t.Fatalf("round trip: %v", err) + } + + // The caller's request must be left untouched; headers go on the clone. + if req.Header.Get("HTTP-Referer") != "" || req.Header.Get("X-Title") != "" { + t.Errorf("original request was mutated: %v", req.Header) + } +} + +func TestSuppressesSamplingParams(t *testing.T) { + cases := []struct { + model string + want bool + }{ + // adaptive router — upstream unknown, must suppress + {"orcarouter/auto", true}, + {"auto", true}, + // reasoning models that reject temperature + {"anthropic/claude-opus-4.7", true}, + {"anthropic/claude-opus-4.6", true}, + {"openai/gpt-5", true}, + {"openai/gpt-5.5-pro", true}, + {"deepseek/deepseek-reasoner", true}, + // models that accept sampling params — must NOT suppress + {"openai/gpt-4o", false}, + {"openai/gpt-4o-mini", false}, + {"anthropic/claude-sonnet-4.6", false}, + {"google/gemini-3-flash-preview", false}, + {"", false}, + } + for _, c := range cases { + if got := suppressesSamplingParams(c.model); got != c.want { + t.Errorf("suppressesSamplingParams(%q) = %v, want %v", c.model, got, c.want) + } + } +} + +func TestApplyNonSamplingParams_OmitsTemperature(t *testing.T) { + conf := &openai.ChatModelConfig{} + temp := float32(0.7) + topP := float32(0.9) + applyNonSamplingParams(conf, &LLMParams{ + Temperature: &temp, + TopP: &topP, + FrequencyPenalty: 0.5, + PresencePenalty: 0.5, + MaxTokens: 2048, + }) + if conf.Temperature != nil { + t.Errorf("temperature should be omitted, got %v", *conf.Temperature) + } + if conf.TopP != nil { + t.Errorf("top_p should be omitted, got %v", *conf.TopP) + } + if conf.FrequencyPenalty != nil { + t.Errorf("frequency_penalty should be omitted, got %v", *conf.FrequencyPenalty) + } + if conf.PresencePenalty != nil { + t.Errorf("presence_penalty should be omitted, got %v", *conf.PresencePenalty) + } + // non-sampling params are still applied + if conf.MaxCompletionTokens == nil || *conf.MaxCompletionTokens != 2048 { + t.Errorf("max_completion_tokens should be 2048, got %v", conf.MaxCompletionTokens) + } +} + +func TestOrcaRouterBuilder_RegisteredAndWiresBaseConn(t *testing.T) { + // OrcaRouter must be a supported protocol via the dispatch map. + if !SupportProtocol(developer_api.ModelClass_OrcaRouter) { + t.Fatal("ModelClass_OrcaRouter not registered in modelClass2NewModelBuilder") + } + + cfg := &config.Model{ + Connection: &config.Connection{ + BaseConnInfo: &config.BaseConnectionInfo{ + BaseURL: "https://api.orcarouter.ai/v1", + APIKey: "sk-orca-test", + Model: "orcarouter/auto", + }, + }, + } + + svc, err := NewModelBuilder(developer_api.ModelClass_OrcaRouter, cfg) + if err != nil { + t.Fatalf("NewModelBuilder: %v", err) + } + if _, ok := svc.(*orcaRouterModelBuilder); !ok { + t.Fatalf("expected *orcaRouterModelBuilder, got %T", svc) + } +} diff --git a/backend/conf/model/model_meta.json b/backend/conf/model/model_meta.json index 7d83301a72..f79d886f17 100644 --- a/backend/conf/model/model_meta.json +++ b/backend/conf/model/model_meta.json @@ -5496,6 +5496,442 @@ } ] } + }, + "OrcaRouter": { + "default": { + "display_info": { + "output_tokens": 4096, + "max_tokens": 128000 + }, + "capability": { + "cot_display": false, + "function_call": true, + "image_understanding": false, + "video_understanding": false, + "audio_understanding": false, + "support_multi_modal": false, + "prefill_resp": false + }, + "parameters": [ + { + "name": "temperature", + "label": "Temperature", + "desc": "**Temperature**:\n\n- When you increase this value, the model outputs more diverse and innovative content; when you decrease it, the model outputs less diverse content that strictly follows the given instructions.\n- It is recommended not to adjust this value with \"Top p\" at the same time.", + "type": 1, + "min": "0", + "max": "1", + "precision": 1, + "default_val": { + "default_val": "1", + "creative": "1", + "balance": "0.8", + "precise": "0.3" + }, + "options": [], + "param_class": { + "class_id": 1, + "label": "Generation diversity" + } + }, + { + "name": "max_tokens", + "label": "Response max length", + "desc": "You can specify the maximum length of the tokens output through this value. Typically, 100 tokens are approximately equal to 150 Chinese characters.", + "type": 2, + "min": "1", + "max": "4096", + "precision": 0, + "default_val": { + "default_val": "4096" + }, + "options": [], + "param_class": { + "class_id": 2, + "label": "Input and output settings" + } + } + ] + }, + "orcarouter/auto": { + "display_info": { + "output_tokens": 4096, + "max_tokens": 128000 + }, + "capability": { + "cot_display": true, + "function_call": true, + "image_understanding": false, + "video_understanding": false, + "audio_understanding": false, + "support_multi_modal": false, + "prefill_resp": false, + "reasoning": true + }, + "parameters": [ + { + "name": "max_tokens", + "label": "Response max length", + "desc": "You can specify the maximum length of the tokens output through this value. Typically, 100 tokens are approximately equal to 150 Chinese characters.", + "type": 2, + "min": "1", + "max": "4096", + "precision": 0, + "default_val": { + "default_val": "4096" + }, + "options": [], + "param_class": { + "class_id": 2, + "label": "Input and output settings" + } + } + ] + }, + "openai/gpt-5": { + "display_info": { + "output_tokens": 4096, + "max_tokens": 400000 + }, + "capability": { + "cot_display": true, + "function_call": true, + "image_understanding": false, + "video_understanding": false, + "audio_understanding": false, + "support_multi_modal": false, + "prefill_resp": false, + "reasoning": true + }, + "parameters": [ + { + "name": "max_tokens", + "label": "Response max length", + "desc": "You can specify the maximum length of the tokens output through this value. Typically, 100 tokens are approximately equal to 150 Chinese characters.", + "type": 2, + "min": "1", + "max": "4096", + "precision": 0, + "default_val": { + "default_val": "4096" + }, + "options": [], + "param_class": { + "class_id": 2, + "label": "Input and output settings" + } + } + ] + }, + "google/gemini-3-flash-preview": { + "display_info": { + "output_tokens": 4096, + "max_tokens": 1048576 + }, + "capability": { + "cot_display": false, + "function_call": true, + "image_understanding": false, + "video_understanding": false, + "audio_understanding": false, + "support_multi_modal": false, + "prefill_resp": false, + "reasoning": false + }, + "parameters": [ + { + "name": "temperature", + "label": "Temperature", + "desc": "**Temperature**:\n\n- When you increase this value, the model outputs more diverse and innovative content; when you decrease it, the model outputs less diverse content that strictly follows the given instructions.\n- It is recommended not to adjust this value with \"Top p\" at the same time.", + "type": 1, + "min": "0", + "max": "1", + "precision": 1, + "default_val": { + "default_val": "1", + "creative": "1", + "balance": "0.8", + "precise": "0.3" + }, + "options": [], + "param_class": { + "class_id": 1, + "label": "Generation diversity" + } + }, + { + "name": "max_tokens", + "label": "Response max length", + "desc": "You can specify the maximum length of the tokens output through this value. Typically, 100 tokens are approximately equal to 150 Chinese characters.", + "type": 2, + "min": "1", + "max": "4096", + "precision": 0, + "default_val": { + "default_val": "4096" + }, + "options": [], + "param_class": { + "class_id": 2, + "label": "Input and output settings" + } + } + ] + }, + "anthropic/claude-opus-4.7": { + "display_info": { + "output_tokens": 4096, + "max_tokens": 200000 + }, + "capability": { + "cot_display": true, + "function_call": true, + "image_understanding": false, + "video_understanding": false, + "audio_understanding": false, + "support_multi_modal": false, + "prefill_resp": false, + "reasoning": true + }, + "parameters": [ + { + "name": "max_tokens", + "label": "Response max length", + "desc": "You can specify the maximum length of the tokens output through this value. Typically, 100 tokens are approximately equal to 150 Chinese characters.", + "type": 2, + "min": "1", + "max": "4096", + "precision": 0, + "default_val": { + "default_val": "4096" + }, + "options": [], + "param_class": { + "class_id": 2, + "label": "Input and output settings" + } + } + ] + }, + "grok/grok-4.3": { + "display_info": { + "output_tokens": 4096, + "max_tokens": 256000 + }, + "capability": { + "cot_display": false, + "function_call": true, + "image_understanding": false, + "video_understanding": false, + "audio_understanding": false, + "support_multi_modal": false, + "prefill_resp": false, + "reasoning": false + }, + "parameters": [ + { + "name": "temperature", + "label": "Temperature", + "desc": "**Temperature**:\n\n- When you increase this value, the model outputs more diverse and innovative content; when you decrease it, the model outputs less diverse content that strictly follows the given instructions.\n- It is recommended not to adjust this value with \"Top p\" at the same time.", + "type": 1, + "min": "0", + "max": "1", + "precision": 1, + "default_val": { + "default_val": "1", + "creative": "1", + "balance": "0.8", + "precise": "0.3" + }, + "options": [], + "param_class": { + "class_id": 1, + "label": "Generation diversity" + } + }, + { + "name": "max_tokens", + "label": "Response max length", + "desc": "You can specify the maximum length of the tokens output through this value. Typically, 100 tokens are approximately equal to 150 Chinese characters.", + "type": 2, + "min": "1", + "max": "4096", + "precision": 0, + "default_val": { + "default_val": "4096" + }, + "options": [], + "param_class": { + "class_id": 2, + "label": "Input and output settings" + } + } + ] + }, + "deepseek/deepseek-v4-pro": { + "display_info": { + "output_tokens": 4096, + "max_tokens": 128000 + }, + "capability": { + "cot_display": false, + "function_call": true, + "image_understanding": false, + "video_understanding": false, + "audio_understanding": false, + "support_multi_modal": false, + "prefill_resp": false, + "reasoning": false + }, + "parameters": [ + { + "name": "temperature", + "label": "Temperature", + "desc": "**Temperature**:\n\n- When you increase this value, the model outputs more diverse and innovative content; when you decrease it, the model outputs less diverse content that strictly follows the given instructions.\n- It is recommended not to adjust this value with \"Top p\" at the same time.", + "type": 1, + "min": "0", + "max": "1", + "precision": 1, + "default_val": { + "default_val": "1", + "creative": "1", + "balance": "0.8", + "precise": "0.3" + }, + "options": [], + "param_class": { + "class_id": 1, + "label": "Generation diversity" + } + }, + { + "name": "max_tokens", + "label": "Response max length", + "desc": "You can specify the maximum length of the tokens output through this value. Typically, 100 tokens are approximately equal to 150 Chinese characters.", + "type": 2, + "min": "1", + "max": "4096", + "precision": 0, + "default_val": { + "default_val": "4096" + }, + "options": [], + "param_class": { + "class_id": 2, + "label": "Input and output settings" + } + } + ] + }, + "minimax/minimax-m2.7": { + "display_info": { + "output_tokens": 4096, + "max_tokens": 1000000 + }, + "capability": { + "cot_display": false, + "function_call": true, + "image_understanding": false, + "video_understanding": false, + "audio_understanding": false, + "support_multi_modal": false, + "prefill_resp": false, + "reasoning": false + }, + "parameters": [ + { + "name": "temperature", + "label": "Temperature", + "desc": "**Temperature**:\n\n- When you increase this value, the model outputs more diverse and innovative content; when you decrease it, the model outputs less diverse content that strictly follows the given instructions.\n- It is recommended not to adjust this value with \"Top p\" at the same time.", + "type": 1, + "min": "0", + "max": "1", + "precision": 1, + "default_val": { + "default_val": "1", + "creative": "1", + "balance": "0.8", + "precise": "0.3" + }, + "options": [], + "param_class": { + "class_id": 1, + "label": "Generation diversity" + } + }, + { + "name": "max_tokens", + "label": "Response max length", + "desc": "You can specify the maximum length of the tokens output through this value. Typically, 100 tokens are approximately equal to 150 Chinese characters.", + "type": 2, + "min": "1", + "max": "4096", + "precision": 0, + "default_val": { + "default_val": "4096" + }, + "options": [], + "param_class": { + "class_id": 2, + "label": "Input and output settings" + } + } + ] + }, + "qwen/qwen3.6-flash": { + "display_info": { + "output_tokens": 4096, + "max_tokens": 1000000 + }, + "capability": { + "cot_display": false, + "function_call": true, + "image_understanding": false, + "video_understanding": false, + "audio_understanding": false, + "support_multi_modal": false, + "prefill_resp": false, + "reasoning": false + }, + "parameters": [ + { + "name": "temperature", + "label": "Temperature", + "desc": "**Temperature**:\n\n- When you increase this value, the model outputs more diverse and innovative content; when you decrease it, the model outputs less diverse content that strictly follows the given instructions.\n- It is recommended not to adjust this value with \"Top p\" at the same time.", + "type": 1, + "min": "0", + "max": "1", + "precision": 1, + "default_val": { + "default_val": "1", + "creative": "1", + "balance": "0.8", + "precise": "0.3" + }, + "options": [], + "param_class": { + "class_id": 1, + "label": "Generation diversity" + } + }, + { + "name": "max_tokens", + "label": "Response max length", + "desc": "You can specify the maximum length of the tokens output through this value. Typically, 100 tokens are approximately equal to 150 Chinese characters.", + "type": 2, + "min": "1", + "max": "4096", + "precision": 0, + "default_val": { + "default_val": "4096" + }, + "options": [], + "param_class": { + "class_id": 2, + "label": "Input and output settings" + } + } + ] + } } } } \ No newline at end of file diff --git a/backend/conf/model/template/model_template_orcarouter.yaml b/backend/conf/model/template/model_template_orcarouter.yaml new file mode 100644 index 0000000000..065187f0f0 --- /dev/null +++ b/backend/conf/model/template/model_template_orcarouter.yaml @@ -0,0 +1,160 @@ +id: 72010 +name: OrcaRouter Auto +icon_uri: default_icon/orcarouter.png +icon_url: "" +description: + zh: OrcaRouter 是 OpenAI 兼容的智能路由聚合网关。orcarouter/auto 会按策略(成本/质量/延迟/自适应)自动为每个请求挑选上游模型;一个 API key 即可访问全部上游。完整模型清单见 https://www.orcarouter.ai/models 。 + en: OrcaRouter is an OpenAI-compatible adaptive routing gateway. The orcarouter/auto router automatically picks an upstream model per request by policy (cost/quality/latency/adaptive); one API key reaches every upstream. See https://www.orcarouter.ai/models for the full catalog. +default_parameters: + - name: temperature + label: + zh: 生成随机性 + en: Temperature + desc: + zh: '- **temperature**: 调高温度会使得模型的输出更多样性和创新性,反之,降低温度会使输出内容更加遵循指令要求但减少多样性。建议不要与“Top p”同时调整。' + en: '**Temperature**:\n\n- When you increase this value, the model outputs more diverse and innovative content; when you decrease it, the model outputs less diverse content that strictly follows the given instructions.\n- It is recommended not to adjust this value with \"Top p\" at the same time.' + type: float + min: "0" + max: "1" + default_val: + balance: "0.8" + creative: "1" + default_val: "1.0" + precise: "0.3" + precision: 1 + options: [] + style: + widget: slider + label: + zh: 生成多样性 + en: Generation diversity + - name: max_tokens + label: + zh: 最大回复长度 + en: Response max length + desc: + zh: 控制模型输出的Tokens 长度上限。通常 100 Tokens 约等于 150 个中文汉字。 + en: You can specify the maximum length of the tokens output through this value. Typically, 100 tokens are approximately equal to 150 Chinese characters. + type: int + min: "1" + max: "4096" + default_val: + default_val: "4096" + options: [] + style: + widget: slider + label: + zh: 输入及输出设置 + en: Input and output settings + - name: top_p + label: + zh: Top P + en: Top P + desc: + zh: '- **Top p 为累计概率**: 模型在生成输出时会从概率最高的词汇开始选择,直到这些词汇的总概率累积达到Top p 值。这样可以限制模型只选择这些高概率的词汇,从而控制输出内容的多样性。建议不要与“生成随机性”同时调整。' + en: '**Top P**:\n\n- An alternative to sampling with temperature, where only tokens within the top p probability mass are considered. For example, 0.1 means only the top 10% probability mass tokens are considered.\n- We recommend altering this or temperature, but not both.' + type: float + min: "0" + max: "1" + default_val: + default_val: "0.7" + precision: 2 + options: [] + style: + widget: slider + label: + zh: 生成多样性 + en: Generation diversity + - name: frequency_penalty + label: + zh: 重复语句惩罚 + en: Frequency penalty + desc: + zh: '- **frequency penalty**: 当该值为正时,会阻止模型频繁使用相同的词汇和短语,从而增加输出内容的多样性。' + en: '**Frequency Penalty**: When positive, it discourages the model from repeating the same words and phrases, thereby increasing the diversity of the output.' + type: float + min: "-2" + max: "2" + default_val: + default_val: "0" + precision: 2 + options: [] + style: + widget: slider + label: + zh: 生成多样性 + en: Generation diversity + - name: presence_penalty + label: + zh: 重复主题惩罚 + en: Presence penalty + desc: + zh: '- **presence penalty**: 当该值为正时,会阻止模型频繁讨论相同的主题,从而增加输出内容的多样性' + en: '**Presence Penalty**: When positive, it prevents the model from discussing the same topics repeatedly, thereby increasing the diversity of the output.' + type: float + min: "-2" + max: "2" + default_val: + default_val: "0" + precision: 2 + options: [] + style: + widget: slider + label: + zh: 生成多样性 + en: Generation diversity + - name: response_format + label: + zh: 输出格式 + en: Response format + desc: + zh: '- **文本**: 使用普通文本格式回复\n- **Markdown**: 将引导模型使用Markdown格式输出回复\n- **JSON**: 将引导模型使用JSON格式输出' + en: '**Response Format**:\n\n- **Text**: Replies in plain text format\n- **Markdown**: Uses Markdown format for replies\n- **JSON**: Uses JSON format for replies' + type: int + min: "" + max: "" + default_val: + default_val: "0" + options: + - label: Text + value: "0" + - label: Markdown + value: "1" + - label: JSON + value: "2" + style: + widget: radio_buttons + label: + zh: 输入及输出设置 + en: Input and output settings +meta: + protocol: orcarouter + capability: + function_call: true + input_modal: + - text + - image + input_tokens: 128000 + json_mode: false + max_tokens: 128000 + output_modal: + - text + output_tokens: 16384 + prefix_caching: false + reasoning: false + prefill_response: false + conn_config: + base_url: "https://api.orcarouter.ai/v1" + api_key: "" + timeout: 0s + model: "orcarouter/auto" + temperature: 0.7 + frequency_penalty: 0 + presence_penalty: 0 + max_tokens: 4096 + max_completion_tokens: 4096 + top_p: 1 + top_k: 0 + stop: [] + custom: {} + status: 0 diff --git a/docker/volumes/minio/default_icon/orcarouter.png b/docker/volumes/minio/default_icon/orcarouter.png new file mode 100644 index 0000000000000000000000000000000000000000..1c9e9cd64457a06cff8e5ccd0e63ca4d06f3712e GIT binary patch literal 88936 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 O0000