mirror of
https://github.com/QuantumNous/new-api.git
synced 2026-04-19 11:08:37 +00:00
Merge pull request #1834 from QuantumNous/gemini-embedding-001
feat: 支持 gemini-embedding-001
This commit is contained in:
@@ -215,8 +215,8 @@ func (a *Adaptor) DoRequest(c *gin.Context, info *relaycommon.RelayInfo, request
|
|||||||
|
|
||||||
func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo) (usage any, err *types.NewAPIError) {
|
func (a *Adaptor) DoResponse(c *gin.Context, resp *http.Response, info *relaycommon.RelayInfo) (usage any, err *types.NewAPIError) {
|
||||||
if info.RelayMode == constant.RelayModeGemini {
|
if info.RelayMode == constant.RelayModeGemini {
|
||||||
if strings.HasSuffix(info.RequestURLPath, ":embedContent") ||
|
if strings.Contains(info.RequestURLPath, ":embedContent") ||
|
||||||
strings.HasSuffix(info.RequestURLPath, ":batchEmbedContents") {
|
strings.Contains(info.RequestURLPath, ":batchEmbedContents") {
|
||||||
return NativeGeminiEmbeddingHandler(c, resp, info)
|
return NativeGeminiEmbeddingHandler(c, resp, info)
|
||||||
}
|
}
|
||||||
if info.IsStream {
|
if info.IsStream {
|
||||||
|
|||||||
@@ -21,7 +21,11 @@ func GetAndValidateRequest(c *gin.Context, format types.RelayFormat) (request dt
|
|||||||
case types.RelayFormatOpenAI:
|
case types.RelayFormatOpenAI:
|
||||||
request, err = GetAndValidateTextRequest(c, relayMode)
|
request, err = GetAndValidateTextRequest(c, relayMode)
|
||||||
case types.RelayFormatGemini:
|
case types.RelayFormatGemini:
|
||||||
request, err = GetAndValidateGeminiRequest(c)
|
if strings.Contains(c.Request.URL.Path, ":embedContent") || strings.Contains(c.Request.URL.Path, ":batchEmbedContents") {
|
||||||
|
request, err = GetAndValidateGeminiEmbeddingRequest(c)
|
||||||
|
} else {
|
||||||
|
request, err = GetAndValidateGeminiRequest(c)
|
||||||
|
}
|
||||||
case types.RelayFormatClaude:
|
case types.RelayFormatClaude:
|
||||||
request, err = GetAndValidateClaudeRequest(c)
|
request, err = GetAndValidateClaudeRequest(c)
|
||||||
case types.RelayFormatOpenAIResponses:
|
case types.RelayFormatOpenAIResponses:
|
||||||
@@ -288,7 +292,6 @@ func GetAndValidateTextRequest(c *gin.Context, relayMode int) (*dto.GeneralOpenA
|
|||||||
}
|
}
|
||||||
|
|
||||||
func GetAndValidateGeminiRequest(c *gin.Context) (*dto.GeminiChatRequest, error) {
|
func GetAndValidateGeminiRequest(c *gin.Context) (*dto.GeminiChatRequest, error) {
|
||||||
|
|
||||||
request := &dto.GeminiChatRequest{}
|
request := &dto.GeminiChatRequest{}
|
||||||
err := common.UnmarshalBodyReusable(c, request)
|
err := common.UnmarshalBodyReusable(c, request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -304,3 +307,12 @@ func GetAndValidateGeminiRequest(c *gin.Context) (*dto.GeminiChatRequest, error)
|
|||||||
|
|
||||||
return request, nil
|
return request, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetAndValidateGeminiEmbeddingRequest(c *gin.Context) (*dto.GeminiEmbeddingRequest, error) {
|
||||||
|
request := &dto.GeminiEmbeddingRequest{}
|
||||||
|
err := common.UnmarshalBodyReusable(c, request)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return request, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -178,6 +178,7 @@ var defaultModelRatio = map[string]float64{
|
|||||||
"gemini-2.5-flash-lite-preview-thinking-*": 0.05,
|
"gemini-2.5-flash-lite-preview-thinking-*": 0.05,
|
||||||
"gemini-2.5-flash-lite-preview-06-17": 0.05,
|
"gemini-2.5-flash-lite-preview-06-17": 0.05,
|
||||||
"gemini-2.5-flash": 0.15,
|
"gemini-2.5-flash": 0.15,
|
||||||
|
"gemini-embedding-001": 0.075,
|
||||||
"text-embedding-004": 0.001,
|
"text-embedding-004": 0.001,
|
||||||
"chatglm_turbo": 0.3572, // ¥0.005 / 1k tokens
|
"chatglm_turbo": 0.3572, // ¥0.005 / 1k tokens
|
||||||
"chatglm_pro": 0.7143, // ¥0.01 / 1k tokens
|
"chatglm_pro": 0.7143, // ¥0.01 / 1k tokens
|
||||||
|
|||||||
Reference in New Issue
Block a user