diff --git a/provider/geminiprovider/agent.go b/provider/geminiprovider/agent.go index 048210bf..766820b3 100644 --- a/provider/geminiprovider/agent.go +++ b/provider/geminiprovider/agent.go @@ -773,12 +773,14 @@ func toFinishReason(reason genai.FinishReason) string { case genai.FinishReasonMaxTokens: return "length" case genai.FinishReasonSafety, genai.FinishReasonRecitation, + genai.FinishReasonLanguage, genai.FinishReasonBlocklist, genai.FinishReasonProhibitedContent, genai.FinishReasonSPII, genai.FinishReasonImageSafety, genai.FinishReasonImageProhibitedContent, genai.FinishReasonImageRecitation: return "content_filter" - case genai.FinishReasonMalformedFunctionCall, genai.FinishReasonTooManyToolCalls: + case genai.FinishReasonMalformedFunctionCall, genai.FinishReasonTooManyToolCalls, + genai.FinishReasonUnexpectedToolCall: return "tool_calls" default: return "" diff --git a/provider/geminiprovider/agent_test.go b/provider/geminiprovider/agent_test.go index 7e2ccff2..73a008ae 100644 --- a/provider/geminiprovider/agent_test.go +++ b/provider/geminiprovider/agent_test.go @@ -2497,11 +2497,13 @@ func TestFinishReason_NonStreaming(t *testing.T) { {"stop", "STOP", "stop"}, {"max_tokens", "MAX_TOKENS", "length"}, {"safety", "SAFETY", "content_filter"}, + {"language", "LANGUAGE", "content_filter"}, {"image_safety", "IMAGE_SAFETY", "content_filter"}, {"image_prohibited_content", "IMAGE_PROHIBITED_CONTENT", "content_filter"}, {"image_recitation", "IMAGE_RECITATION", "content_filter"}, {"malformed_function_call", "MALFORMED_FUNCTION_CALL", "tool_calls"}, {"too_many_tool_calls", "TOO_MANY_TOOL_CALLS", "tool_calls"}, + {"unexpected_tool_call", "UNEXPECTED_TOOL_CALL", "tool_calls"}, {"unmapped", "OTHER", ""}, } for _, tt := range tests {