Google's Gemini wraps tool calling in a slightly more object-oriented envelope. Tools are FunctionDeclaration objects bundled inside a Tool, and the response carries function_call parts with name and args (a real dict, like Anthropic).
The unique feature in google-genai is automatic function calling: instead of writing the loop yourself, you can pass real Python functions to the SDK and let it execute them and feed the results back automatically. It is convenient for prototyping and limiting for production — you give up control over error handling, parallelism, and audit trails. Use it to feel the loop, then write the loop yourself when you ship.
Gemini also exposes function-calling modes: AUTO (default), ANY (must call something), and NONE (forbid calls). The same three semantics as OpenAI's tool_choice, expressed as enum values. The mode lives inside GenerationConfig; you do not pass it as a top-level parameter.
The streaming model uses generate_content_stream and yields Candidate objects with growing parts. The function-call part arrives all at once when the model decides — Gemini does not stream argument deltas the way OpenAI does. That makes streaming-with-tool-calls easier to consume and slightly slower to first byte.