ソースを参照

fix: 云端 embedding 模型根据类型选择正确端点

multimodal 模型用 multimodal-embedding 端点
文本 embedding 模型用 text-embedding 端点
修复 qwen3-vl-embedding 等文本模型调用 400 错误

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
mengboxin137-blip 9 時間 前
コミット
3fc2b51c06
1 ファイル変更21 行追加11 行削除
  1. 21 11
      backend/app/services/openai_compat_service.py

+ 21 - 11
backend/app/services/openai_compat_service.py

@@ -1050,21 +1050,31 @@ class OpenAICompatService:
                     )
             else:
                 # 云端模型处理
-                api_url = "https://dashscope.aliyuncs.com/api/v1/services/embeddings/multimodal-embedding/multimodal-embedding"
+                # 根据模型类型选择端点:多模态 embedding vs 文本 embedding
+                is_multimodal = "multimodal" in model.model_code.lower()
+                if is_multimodal:
+                    api_url = "https://dashscope.aliyuncs.com/api/v1/services/embeddings/multimodal-embedding/multimodal-embedding"
+                    payload = {
+                        "model": model.model_code,
+                        "input": {
+                            "texts": texts
+                        },
+                        "parameters": {
+                            "text_type": "query"
+                        }
+                    }
+                else:
+                    api_url = "https://dashscope.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding"
+                    payload = {
+                        "model": model.model_code,
+                        "input": texts
+                    }
+                    if request.dimensions:
+                        payload["dimensions"] = request.dimensions
                 headers = {
                     "Content-Type": "application/json",
                     "Authorization": f"Bearer {effective_api_key}"
                 }
-                
-                payload = {
-                    "model": model.model_code,
-                    "input": {
-                        "texts": texts
-                    },
-                    "parameters": {
-                        "text_type": "query"
-                    }
-                }
                 if request.dimensions:
                     payload["parameters"]["dimension"] = request.dimensions