ソースを参照

feat: update dto for embeddings

RedwindA 7 ヶ月 前
コミット
f242220132
2 ファイル変更5 行追加15 行削除
  1. 2 2
      dto/gemini.go
  2. 3 13
      relay/channel/gemini/adaptor.go

+ 2 - 2
dto/gemini.go

@@ -218,7 +218,7 @@ type GeminiEmbeddingRequest struct {
 }
 
 type GeminiBatchEmbeddingRequest struct {
-	Requests []GeminiEmbeddingRequest `json:"requests"`
+	Requests []*GeminiEmbeddingRequest `json:"requests"`
 }
 
 type GeminiEmbeddingResponse struct {
@@ -226,7 +226,7 @@ type GeminiEmbeddingResponse struct {
 }
 
 type GeminiBatchEmbeddingResponse struct {
-	Embeddings []ContentEmbedding `json:"embeddings"`
+	Embeddings []*ContentEmbedding `json:"embeddings"`
 }
 
 type ContentEmbedding struct {

+ 3 - 13
relay/channel/gemini/adaptor.go

@@ -119,7 +119,6 @@ func (a *Adaptor) GetRequestURL(info *relaycommon.RelayInfo) (string, error) {
 			action = "batchEmbedContents"
 		}
 		return fmt.Sprintf("%s/%s/models/%s:%s", info.BaseUrl, version, info.UpstreamModelName, action), nil
-		return fmt.Sprintf("%s/%s/models/%s:batchEmbedContents", info.BaseUrl, version, info.UpstreamModelName), nil
 	}
 
 	action := "generateContent"
@@ -164,6 +163,9 @@ func (a *Adaptor) ConvertEmbeddingRequest(c *gin.Context, info *relaycommon.Rela
 	if len(inputs) == 0 {
 		return nil, errors.New("input is empty")
 	}
+	// We always build a batch-style payload with `requests`, so ensure we call the
+	// batch endpoint upstream to avoid payload/endpoint mismatches.
+	info.IsGeminiBatchEmbedding = true
 	// process all inputs
 	geminiRequests := make([]map[string]interface{}, 0, len(inputs))
 	for _, input := range inputs {
@@ -234,18 +236,6 @@ func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info *relaycom
 		return GeminiChatHandler(c, info, resp)
 	}
 
-	//if usage.(*dto.Usage).CompletionTokenDetails.ReasoningTokens > 100 {
-	//	// 没有请求-thinking的情况下,产生思考token,则按照思考模型计费
-	//	if !strings.HasSuffix(info.OriginModelName, "-thinking") &&
-	//		!strings.HasSuffix(info.OriginModelName, "-nothinking") {
-	//		thinkingModelName := info.OriginModelName + "-thinking"
-	//		if operation_setting.SelfUseModeEnabled || helper.ContainPriceOrRatio(thinkingModelName) {
-	//			info.OriginModelName = thinkingModelName
-	//		}
-	//	}
-	//}
-
-	return nil, types.NewError(errors.New("not implemented"), types.ErrorCodeBadResponseBody)
 }
 
 func (a *Adaptor) GetModelList() []string {