diff --git a/src/cai/sdk/agents/models/openai_chatcompletions.py b/src/cai/sdk/agents/models/openai_chatcompletions.py index 2e28e8e8..f09ea929 100644 --- a/src/cai/sdk/agents/models/openai_chatcompletions.py +++ b/src/cai/sdk/agents/models/openai_chatcompletions.py @@ -12,6 +12,7 @@ from collections.abc import AsyncIterator, Iterable from dataclasses import dataclass, field from typing import TYPE_CHECKING, Any, Literal, cast, overload +import uuid import litellm import tiktoken from openai import NOT_GIVEN, AsyncOpenAI, AsyncStream, NotGiven @@ -969,6 +970,15 @@ class OpenAIChatCompletionsModel(Model): if not hasattr(self, "_pending_tool_calls"): self._pending_tool_calls = {} + + # Fix Google Gemini OpenAI compatibility issues. + # When using the OpenAI-compatible API to call tools with Google Gemini + # tool_call.id is returned as an empty string. + if "openai/gemini" in os.getenv("CAI_MODEL"): + for tool_call in assistant_msg.tool_calls: + if tool_call.id is None or tool_call.id == "": + tool_call.id = uuid.uuid4().hex[:16] + for tool_call in assistant_msg.tool_calls: # Handle empty arguments before storing tool_args = tool_call.function.arguments