Просмотр исходного кода

Merge pull request #1368 from RedwindA/fix/embedding-test

fix: 修复Gemini渠道的向量模型测试
Calcium-Ion 5 месяцев назад
Родитель
Сommit
2911b9cd04
1 измененных файлов с 17 добавлено и 2 удалено
  1. 17 2
      controller/channel-test.go

+ 17 - 2
controller/channel-test.go

@@ -17,6 +17,7 @@ import (
 	"one-api/model"
 	"one-api/relay"
 	relaycommon "one-api/relay/common"
+	relayconstant "one-api/relay/constant"
 	"one-api/relay/helper"
 	"one-api/service"
 	"one-api/types"
@@ -165,7 +166,21 @@ func testChannel(channel *model.Channel, testModel string) testResult {
 
 	adaptor.Init(info)
 
-	convertedRequest, err := adaptor.ConvertOpenAIRequest(c, info, request)
+	var convertedRequest any
+	// 根据 RelayMode 选择正确的转换函数
+	if info.RelayMode == relayconstant.RelayModeEmbeddings {
+		// 创建一个 EmbeddingRequest
+		embeddingRequest := dto.EmbeddingRequest{
+			Input: request.Input,
+			Model: request.Model,
+		}
+		// 调用专门用于 Embedding 的转换函数
+		convertedRequest, err = adaptor.ConvertEmbeddingRequest(c, info, embeddingRequest)
+	} else {
+		// 对其他所有请求类型(如 Chat),保持原有逻辑
+		convertedRequest, err = adaptor.ConvertOpenAIRequest(c, info, request)
+	}
+
 	if err != nil {
 		return testResult{
 			context:     c,
@@ -278,7 +293,7 @@ func buildTestRequest(model string) *dto.GeneralOpenAIRequest {
 		strings.Contains(model, "bge-") {
 		testRequest.Model = model
 		// Embedding 请求
-		testRequest.Input = []string{"hello world"}
+		testRequest.Input = []any{"hello world"} // 修改为any,因为dto/openai_request.go 的ParseInput方法无法处理[]string类型
 		return testRequest
 	}
 	// 并非Embedding 模型