feat(saas): 接通 embedding 模型管理全栈
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
数据库 migration 已有 is_embedding/model_type 列但全栈未使用。 打通 4 层: ModelRow → ModelInfo/CRUD → CachedModel → Admin 前端。 relay/models 端点也返回 is_embedding 字段,前端可按类型过滤。
This commit is contained in:
@@ -373,9 +373,10 @@ pub async fn list_available_models(
|
||||
_ctx: Extension<AuthContext>,
|
||||
) -> SaasResult<Json<Vec<serde_json::Value>>> {
|
||||
// 单次 JOIN 查询替代 2 次全量加载
|
||||
let rows: Vec<(String, String, String, i64, i64, bool, bool)> = sqlx::query_as(
|
||||
let rows: Vec<(String, String, String, i64, i64, bool, bool, bool, String)> = sqlx::query_as(
|
||||
"SELECT m.model_id, m.provider_id, m.alias, m.context_window,
|
||||
m.max_output_tokens, m.supports_streaming, m.supports_vision
|
||||
m.max_output_tokens, m.supports_streaming, m.supports_vision,
|
||||
m.is_embedding, m.model_type
|
||||
FROM models m
|
||||
INNER JOIN providers p ON m.provider_id = p.id
|
||||
WHERE m.enabled = true AND p.enabled = true
|
||||
@@ -385,7 +386,7 @@ pub async fn list_available_models(
|
||||
.await?;
|
||||
|
||||
let mut available: Vec<serde_json::Value> = rows.into_iter()
|
||||
.map(|(model_id, provider_id, alias, context_window, max_output_tokens, supports_streaming, supports_vision)| {
|
||||
.map(|(model_id, provider_id, alias, context_window, max_output_tokens, supports_streaming, supports_vision, is_embedding, model_type)| {
|
||||
serde_json::json!({
|
||||
"id": model_id,
|
||||
"provider_id": provider_id,
|
||||
@@ -394,6 +395,8 @@ pub async fn list_available_models(
|
||||
"max_output_tokens": max_output_tokens,
|
||||
"supports_streaming": supports_streaming,
|
||||
"supports_vision": supports_vision,
|
||||
"is_embedding": is_embedding,
|
||||
"model_type": model_type,
|
||||
})
|
||||
})
|
||||
.collect();
|
||||
|
||||
Reference in New Issue
Block a user