mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-03 13:00:52 +08:00
fix(runtime): treat non-empty finishReason as terminal
This commit is contained in:
@@ -486,7 +486,7 @@ func FilterSSEUsageMetadata(payload []byte) []byte {
|
|||||||
return bytes.Join(lines, []byte("\n"))
|
return bytes.Join(lines, []byte("\n"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// StripUsageMetadataFromJSON drops usageMetadata unless finishReason is "stop".
|
// StripUsageMetadataFromJSON drops usageMetadata unless finishReason is present (terminal).
|
||||||
// It handles both formats:
|
// It handles both formats:
|
||||||
// - Aistudio: candidates.0.finishReason
|
// - Aistudio: candidates.0.finishReason
|
||||||
// - Antigravity: response.candidates.0.finishReason
|
// - Antigravity: response.candidates.0.finishReason
|
||||||
@@ -501,15 +501,15 @@ func StripUsageMetadataFromJSON(rawJSON []byte) ([]byte, bool) {
|
|||||||
if !finishReason.Exists() {
|
if !finishReason.Exists() {
|
||||||
finishReason = gjson.GetBytes(jsonBytes, "response.candidates.0.finishReason")
|
finishReason = gjson.GetBytes(jsonBytes, "response.candidates.0.finishReason")
|
||||||
}
|
}
|
||||||
stopReason := finishReason.Exists() && strings.ToLower(strings.TrimSpace(finishReason.String())) == "stop"
|
terminalReason := finishReason.Exists() && strings.TrimSpace(finishReason.String()) != ""
|
||||||
|
|
||||||
usageMetadata := gjson.GetBytes(jsonBytes, "usageMetadata")
|
usageMetadata := gjson.GetBytes(jsonBytes, "usageMetadata")
|
||||||
if !usageMetadata.Exists() {
|
if !usageMetadata.Exists() {
|
||||||
usageMetadata = gjson.GetBytes(jsonBytes, "response.usageMetadata")
|
usageMetadata = gjson.GetBytes(jsonBytes, "response.usageMetadata")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop chunk: keep as-is.
|
// Terminal chunk: keep as-is.
|
||||||
if stopReason {
|
if terminalReason {
|
||||||
return rawJSON, false
|
return rawJSON, false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -556,7 +556,8 @@ func isStopChunkWithoutUsage(jsonBytes []byte) bool {
|
|||||||
if !finishReason.Exists() {
|
if !finishReason.Exists() {
|
||||||
finishReason = gjson.GetBytes(jsonBytes, "response.candidates.0.finishReason")
|
finishReason = gjson.GetBytes(jsonBytes, "response.candidates.0.finishReason")
|
||||||
}
|
}
|
||||||
if !finishReason.Exists() || strings.ToLower(strings.TrimSpace(finishReason.String())) != "stop" {
|
trimmed := strings.TrimSpace(finishReason.String())
|
||||||
|
if !finishReason.Exists() || trimmed == "" {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return !hasUsageMetadata(jsonBytes)
|
return !hasUsageMetadata(jsonBytes)
|
||||||
|
|||||||
Reference in New Issue
Block a user