mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-19 04:40:52 +08:00
Enhance Gemini request handling with fallback support for contents
- Added conditional logic to support `contents` as a fallback to `generateContentRequest`. - Improved template construction and ensured proper cleanup of request fields. - Introduced debug logging for troubleshooting request generation.
This commit is contained in:
@@ -246,7 +246,7 @@ func (h *APIHandlers) geminiCountTokens(c *gin.Context, rawJson []byte) {
|
|||||||
c.Header("Content-Type", "application/json")
|
c.Header("Content-Type", "application/json")
|
||||||
|
|
||||||
alt := h.getAlt(c)
|
alt := h.getAlt(c)
|
||||||
|
// orgRawJson := rawJson
|
||||||
modelResult := gjson.GetBytes(rawJson, "model")
|
modelResult := gjson.GetBytes(rawJson, "model")
|
||||||
modelName := modelResult.String()
|
modelName := modelResult.String()
|
||||||
cliCtx, cliCancel := context.WithCancel(context.Background())
|
cliCtx, cliCancel := context.WithCancel(context.Background())
|
||||||
@@ -273,8 +273,13 @@ func (h *APIHandlers) geminiCountTokens(c *gin.Context, rawJson []byte) {
|
|||||||
log.Debugf("Request use account: %s, project id: %s", cliClient.GetEmail(), cliClient.GetProjectID())
|
log.Debugf("Request use account: %s, project id: %s", cliClient.GetEmail(), cliClient.GetProjectID())
|
||||||
|
|
||||||
template := `{"request":{}}`
|
template := `{"request":{}}`
|
||||||
|
if gjson.GetBytes(rawJson, "generateContentRequest").Exists() {
|
||||||
template, _ = sjson.SetRaw(template, "request", gjson.GetBytes(rawJson, "generateContentRequest").Raw)
|
template, _ = sjson.SetRaw(template, "request", gjson.GetBytes(rawJson, "generateContentRequest").Raw)
|
||||||
template, _ = sjson.Delete(template, "generateContentRequest")
|
template, _ = sjson.Delete(template, "generateContentRequest")
|
||||||
|
} else if gjson.GetBytes(rawJson, "contents").Exists() {
|
||||||
|
template, _ = sjson.SetRaw(template, "request.contents", gjson.GetBytes(rawJson, "contents").Raw)
|
||||||
|
template, _ = sjson.Delete(template, "contents")
|
||||||
|
}
|
||||||
rawJson = []byte(template)
|
rawJson = []byte(template)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -286,6 +291,9 @@ func (h *APIHandlers) geminiCountTokens(c *gin.Context, rawJson []byte) {
|
|||||||
c.Status(err.StatusCode)
|
c.Status(err.StatusCode)
|
||||||
_, _ = c.Writer.Write([]byte(err.Error.Error()))
|
_, _ = c.Writer.Write([]byte(err.Error.Error()))
|
||||||
cliCancel()
|
cliCancel()
|
||||||
|
// log.Debugf(err.Error.Error())
|
||||||
|
// log.Debugf(string(rawJson))
|
||||||
|
// log.Debugf(string(orgRawJson))
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user