mirror of
https://github.com/katanemo/plano.git
synced 2026-04-25 00:36:34 +02:00
feat(provider): add xiaomi as first-class provider
This commit is contained in:
parent
76ff353c1e
commit
f092cd4917
6 changed files with 45 additions and 0 deletions
|
|
@ -21,6 +21,7 @@ SUPPORTED_PROVIDERS_WITHOUT_BASE_URL = [
|
|||
"groq",
|
||||
"mistral",
|
||||
"openai",
|
||||
"xiaomi",
|
||||
"gemini",
|
||||
"anthropic",
|
||||
"together_ai",
|
||||
|
|
|
|||
|
|
@ -901,6 +901,33 @@ static_resources:
|
|||
validation_context:
|
||||
trusted_ca:
|
||||
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
||||
- name: xiaomi
|
||||
connect_timeout: {{ upstream_connect_timeout | default('5s') }}
|
||||
type: LOGICAL_DNS
|
||||
dns_lookup_family: V4_ONLY
|
||||
lb_policy: ROUND_ROBIN
|
||||
load_assignment:
|
||||
cluster_name: xiaomi
|
||||
endpoints:
|
||||
- lb_endpoints:
|
||||
- endpoint:
|
||||
address:
|
||||
socket_address:
|
||||
address: api.xiaomimimo.com
|
||||
port_value: 443
|
||||
hostname: "api.xiaomimimo.com"
|
||||
transport_socket:
|
||||
name: envoy.transport_sockets.tls
|
||||
typed_config:
|
||||
"@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
|
||||
sni: api.xiaomimimo.com
|
||||
common_tls_context:
|
||||
tls_params:
|
||||
tls_minimum_protocol_version: TLSv1_2
|
||||
tls_maximum_protocol_version: TLSv1_3
|
||||
validation_context:
|
||||
trusted_ca:
|
||||
filename: {{ upstream_tls_ca_path | default('/etc/ssl/certs/ca-certificates.crt') }}
|
||||
- name: mistral_7b_instruct
|
||||
connect_timeout: 0.5s
|
||||
type: STRICT_DNS
|
||||
|
|
|
|||
|
|
@ -188,6 +188,7 @@ properties:
|
|||
- groq
|
||||
- mistral
|
||||
- openai
|
||||
- xiaomi
|
||||
- gemini
|
||||
routing_preferences:
|
||||
type: array
|
||||
|
|
@ -235,6 +236,7 @@ properties:
|
|||
- groq
|
||||
- mistral
|
||||
- openai
|
||||
- xiaomi
|
||||
- gemini
|
||||
routing_preferences:
|
||||
type: array
|
||||
|
|
|
|||
|
|
@ -339,6 +339,8 @@ pub enum LlmProviderType {
|
|||
Mistral,
|
||||
#[serde(rename = "openai")]
|
||||
OpenAI,
|
||||
#[serde(rename = "xiaomi")]
|
||||
Xiaomi,
|
||||
#[serde(rename = "gemini")]
|
||||
Gemini,
|
||||
#[serde(rename = "xai")]
|
||||
|
|
@ -370,6 +372,7 @@ impl Display for LlmProviderType {
|
|||
LlmProviderType::Gemini => write!(f, "gemini"),
|
||||
LlmProviderType::Mistral => write!(f, "mistral"),
|
||||
LlmProviderType::OpenAI => write!(f, "openai"),
|
||||
LlmProviderType::Xiaomi => write!(f, "xiaomi"),
|
||||
LlmProviderType::XAI => write!(f, "xai"),
|
||||
LlmProviderType::TogetherAI => write!(f, "together_ai"),
|
||||
LlmProviderType::AzureOpenAI => write!(f, "azure_openai"),
|
||||
|
|
|
|||
|
|
@ -316,6 +316,12 @@ fn fetch_all_models() -> Result<ProviderModels, Box<dyn std::error::Error>> {
|
|||
"https://open.bigmodel.cn/api/paas/v4/models",
|
||||
"z-ai",
|
||||
),
|
||||
(
|
||||
"xiaomi",
|
||||
"MIMO_API_KEY",
|
||||
"https://api.xiaomimimo.com/v1/models",
|
||||
"xiaomi",
|
||||
),
|
||||
];
|
||||
|
||||
// Fetch from OpenAI-compatible providers
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ fn load_provider_models() -> &'static HashMap<String, Vec<String>> {
|
|||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub enum ProviderId {
|
||||
OpenAI,
|
||||
Xiaomi,
|
||||
Mistral,
|
||||
Deepseek,
|
||||
Groq,
|
||||
|
|
@ -51,6 +52,7 @@ impl TryFrom<&str> for ProviderId {
|
|||
fn try_from(value: &str) -> Result<Self, Self::Error> {
|
||||
match value.to_lowercase().as_str() {
|
||||
"openai" => Ok(ProviderId::OpenAI),
|
||||
"xiaomi" => Ok(ProviderId::Xiaomi),
|
||||
"mistral" => Ok(ProviderId::Mistral),
|
||||
"deepseek" => Ok(ProviderId::Deepseek),
|
||||
"groq" => Ok(ProviderId::Groq),
|
||||
|
|
@ -84,6 +86,7 @@ impl ProviderId {
|
|||
ProviderId::TogetherAI => "together",
|
||||
ProviderId::Gemini => "google",
|
||||
ProviderId::OpenAI => "openai",
|
||||
ProviderId::Xiaomi => "xiaomi",
|
||||
ProviderId::Anthropic => "anthropic",
|
||||
ProviderId::Mistral => "mistralai",
|
||||
ProviderId::Deepseek => "deepseek",
|
||||
|
|
@ -132,6 +135,7 @@ impl ProviderId {
|
|||
// OpenAI-compatible providers only support OpenAI chat completions
|
||||
(
|
||||
ProviderId::OpenAI
|
||||
| ProviderId::Xiaomi
|
||||
| ProviderId::Groq
|
||||
| ProviderId::Mistral
|
||||
| ProviderId::Deepseek
|
||||
|
|
@ -150,6 +154,7 @@ impl ProviderId {
|
|||
|
||||
(
|
||||
ProviderId::OpenAI
|
||||
| ProviderId::Xiaomi
|
||||
| ProviderId::Groq
|
||||
| ProviderId::Mistral
|
||||
| ProviderId::Deepseek
|
||||
|
|
@ -213,6 +218,7 @@ impl Display for ProviderId {
|
|||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
ProviderId::OpenAI => write!(f, "OpenAI"),
|
||||
ProviderId::Xiaomi => write!(f, "xiaomi"),
|
||||
ProviderId::Mistral => write!(f, "Mistral"),
|
||||
ProviderId::Deepseek => write!(f, "Deepseek"),
|
||||
ProviderId::Groq => write!(f, "Groq"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue