mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-18 20:30:51 +08:00
**feat(executor, translator): enhance token handling and payload processing**
- Improved Antigravity executor to handle `thinkingConfig` adjustments and default `thinkingBudget` when `thinkingLevel` is removed. - Updated translator response handling to set default values for output token counts when specific token data is missing.
This commit is contained in:
@@ -544,12 +544,21 @@ func geminiToAntigravity(modelName string, payload []byte) []byte {
|
|||||||
|
|
||||||
template, _ = sjson.Delete(template, "request.safetySettings")
|
template, _ = sjson.Delete(template, "request.safetySettings")
|
||||||
template, _ = sjson.Set(template, "request.toolConfig.functionCallingConfig.mode", "VALIDATED")
|
template, _ = sjson.Set(template, "request.toolConfig.functionCallingConfig.mode", "VALIDATED")
|
||||||
|
template, _ = sjson.Delete(template, "request.generationConfig.maxOutputTokens")
|
||||||
|
if !strings.HasPrefix(modelName, "gemini-3-") {
|
||||||
|
if thinkingLevel := gjson.Get(template, "request.generationConfig.thinkingConfig.thinkingLevel"); thinkingLevel.Exists() {
|
||||||
|
template, _ = sjson.Delete(template, "request.generationConfig.thinkingConfig.thinkingLevel")
|
||||||
|
template, _ = sjson.Set(template, "request.generationConfig.thinkingConfig.thinkingBudget", -1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
gjson.Get(template, "request.contents").ForEach(func(key, content gjson.Result) bool {
|
gjson.Get(template, "request.contents").ForEach(func(key, content gjson.Result) bool {
|
||||||
if content.Get("role").String() == "model" {
|
if content.Get("role").String() == "model" {
|
||||||
content.Get("parts").ForEach(func(partKey, part gjson.Result) bool {
|
content.Get("parts").ForEach(func(partKey, part gjson.Result) bool {
|
||||||
if part.Get("functionCall").Exists() {
|
if part.Get("functionCall").Exists() {
|
||||||
template, _ = sjson.Set(template, fmt.Sprintf("request.contents.%d.parts.%d.thoughtSignature", key.Int(), partKey.Int()), "skip_thought_signature_validator")
|
template, _ = sjson.Set(template, fmt.Sprintf("request.contents.%d.parts.%d.thoughtSignature", key.Int(), partKey.Int()), "skip_thought_signature_validator")
|
||||||
|
} else if part.Get("thoughtSignature").Exists() {
|
||||||
|
template, _ = sjson.Set(template, fmt.Sprintf("request.contents.%d.parts.%d.thoughtSignature", key.Int(), partKey.Int()), "skip_thought_signature_validator")
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -433,12 +433,18 @@ func ConvertGeminiResponseToOpenAIResponses(_ context.Context, modelName string,
|
|||||||
// output tokens
|
// output tokens
|
||||||
if v := um.Get("candidatesTokenCount"); v.Exists() {
|
if v := um.Get("candidatesTokenCount"); v.Exists() {
|
||||||
completed, _ = sjson.Set(completed, "response.usage.output_tokens", v.Int())
|
completed, _ = sjson.Set(completed, "response.usage.output_tokens", v.Int())
|
||||||
|
} else {
|
||||||
|
completed, _ = sjson.Set(completed, "response.usage.output_tokens", 0)
|
||||||
}
|
}
|
||||||
if v := um.Get("thoughtsTokenCount"); v.Exists() {
|
if v := um.Get("thoughtsTokenCount"); v.Exists() {
|
||||||
completed, _ = sjson.Set(completed, "response.usage.output_tokens_details.reasoning_tokens", v.Int())
|
completed, _ = sjson.Set(completed, "response.usage.output_tokens_details.reasoning_tokens", v.Int())
|
||||||
|
} else {
|
||||||
|
completed, _ = sjson.Set(completed, "response.usage.output_tokens_details.reasoning_tokens", 0)
|
||||||
}
|
}
|
||||||
if v := um.Get("totalTokenCount"); v.Exists() {
|
if v := um.Get("totalTokenCount"); v.Exists() {
|
||||||
completed, _ = sjson.Set(completed, "response.usage.total_tokens", v.Int())
|
completed, _ = sjson.Set(completed, "response.usage.total_tokens", v.Int())
|
||||||
|
} else {
|
||||||
|
completed, _ = sjson.Set(completed, "response.usage.total_tokens", 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user