Gemini 3.6 Flash is built for agents. The 304 tok/s speed, 1M context window, built-in computer use, and aggressive caching ($0.15/1M cached input) make it one of the best options for building AI agents in 2026.
This guide covers how to build agents with Gemini 3.6 Flash: function calling, computer use, multi-agent architectures, and practical patterns. If you are new to the Gemini API, start with our Gemini 3.6 Flash API Setup Guide.
Why Gemini 3.6 Flash for Agents
Three things matter for agent performance: speed, cost, and tool use. Gemini 3.6 Flash scores well on all three.
| Metric | Gemini 3.6 Flash | Why It Matters |
|---|---|---|
| Speed | 304 tok/s | Faster agent loops, better user experience |
| Input cost | $1.50/1M | Affordable for high-volume agents |
| Cached input | $0.15/1M | 90% discount on repeated context |
| Output cost | $7.50/1M | Competitive with alternatives |
| Context window | 1M tokens | Handle large codebases and documents |
| Computer use | Built-in (83% OSWorld) | Browser and desktop automation |
| Function calling | Yes | Core agent capability |
| MCP support | Yes | Standardized tool protocol |
The cached input price is the hidden advantage. Agent workflows re-send system prompts and tool definitions on every call. At $0.15/1M, caching makes this nearly free. See our AI API Pricing Compared 2026 for the full cost breakdown.
Function Calling Basics
Function calling is how agents use tools. Define the tools, send a prompt, and the model returns which function to call with what arguments.
from google import genai
from google.genai import types
client = genai.Client(api_key="YOUR_API_KEY")
# Define tools
def search_codebase(query: str) -> str:
"""Search the codebase for files matching a query."""
# Your implementation here
return f"Found 5 files matching '{query}'"
def read_file(path: str) -> str:
"""Read the contents of a file."""
# Your implementation here
return f"Contents of {path}..."
tools = types.Tool(function_declarations=[
types.FunctionDeclaration(
name="search_codebase",
description="Search the codebase for files matching a query",
parameters=types.Schema(
type=types.Type.OBJECT,
properties={
"query": types.Schema(type=types.Type.STRING, description="Search query")
},
required=["query"]
)
),
types.FunctionDeclaration(
name="read_file",
description="Read the contents of a file",
parameters=types.Schema(
type=types.Type.OBJECT,
properties={
"path": types.Schema(type=types.Type.STRING, description="File path")
},
required=["path"]
)
)
])
# Agent loop
def run_agent(prompt: str):
messages = [{"role": "user", "content": prompt}]
while True:
response = client.models.generate_content(
model="gemini-3.6-flash",
contents=messages,
config=types.GenerateContentConfig(tools=[tools])
)
# Check for function call
if response.candidates[0].content.parts[0].function_call:
func_call = response.candidates[0].content.parts[0].function_call
# Execute the function
if func_call.name == "search_codebase":
result = search_codebase(func_call.args["query"])
elif func_call.name == "read_file":
result = read_file(func_call.args["path"])
else:
result = "Unknown function"
# Add result to conversation
messages.append(response.candidates[0].content)
messages.append(types.Part.from_function_response(
name=func_call.name,
response={"result": result}
))
else:
# No function call, return the response
return response.text
This is the basic agent loop. The model decides which tool to call, your code executes it, and the result goes back to the model. The loop continues until the model has enough information to answer.
Using MCP with Gemini
The Model Context Protocol (MCP) is a standardized way to connect AI models to tools. Gemini supports MCP through function calling.
# MCP tools are defined the same way as regular function calling tools
# The MCP protocol handles the transport layer
# For MCP-specific setup, see the MCP documentation
# Gemini's function calling API is compatible with MCP tool definitions
For a deeper dive into MCP, see our MCP Complete Developer Guide.
Computer Use
Gemini 3.6 Flash has built-in computer use. The model can interact with browser and desktop environments through screenshots.
The workflow:
- Take a screenshot of the current state
- Send the screenshot to Gemini with a task description
- Gemini returns an action (click, type, scroll, etc.)
- Your application executes the action
- Repeat until the task is complete
# Computer use requires the Gemini API with the computer_use tool enabled
# The model generates actions like:
# - click(x=100, y=200)
# - type("Hello, world!")
# - scroll(direction="down", amount=500)
# - screenshot()
# Your application executes these actions and sends back the new screenshot
Googleโs OSWorld-Verified score for 3.6 Flash is 83.0%, up from 78.4% on 3.5 Flash. This puts it in competitive territory with Claude Opus for browser automation.
For the full computer use API documentation, see the official Google docs.
Multi-Agent Architectures
For complex tasks, use multiple agents working together:
Pattern 1: Orchestrator + Workers One main agent (Gemini 3.6 Flash) coordinates multiple worker agents. The orchestrator breaks down tasks and assigns them to specialized workers.
# Orchestrator agent
orchestrator_response = client.models.generate_content(
model="gemini-3.6-flash",
contents="Break down this task into subtasks: " + user_request,
config=types.GenerateContentConfig(tools=[tools])
)
# Worker agents (can use different models for different tasks)
# - Gemini 3.6 Flash for fast, general tasks
# - Gemini 3.5 Flash-Lite for high-volume, low-cost subtasks
# - Claude Sonnet 5 for complex coding tasks
Pattern 2: Critic + Executor One agent executes tasks, another reviews the output. The critic catches errors and suggests improvements.
Pattern 3: Pipeline Agents process data in sequence. Each agent handles one stage of the pipeline.
For a comparison of which models work best for different agent roles, see our Best AI Models for Agents 2026 guide.
Caching for Cost Optimization
Agent workflows re-send the same context on every call. Use caching to reduce costs:
# The Gemini API automatically caches repeated context
# System prompts and tool definitions are cached automatically
# Cached input is $0.15/1M (90% discount)
# For explicit cache control, see the Gemini API documentation
At scale, caching can reduce your input costs by 80-90%. This is one of Geminiโs biggest advantages for agent workloads.
Error Handling
Agents need robust error handling:
try:
response = client.models.generate_content(
model="gemini-3.6-flash",
contents=messages,
config=types.GenerateContentConfig(tools=[tools])
)
except Exception as e:
# Handle API errors, rate limits, timeouts
print(f"Error: {e}")
# Implement retry logic with exponential backoff
Common issues:
- Rate limits: Implement exponential backoff
- Timeouts: Set reasonable timeouts for long-running tasks
- Invalid function calls: Validate arguments before execution
- Context window overflow: Monitor token usage and truncate if needed
Performance Tips
-
Use caching. System prompts and tool definitions should be cached. This alone can cut costs by 80-90%.
-
Batch operations. When possible, combine multiple tool calls into one request.
-
Use Flash-Lite for subtasks. Gemini 3.5 Flash-Lite at $0.30/$2.50 is great for high-volume subtasks that do not need full capability.
-
Stream responses. For user-facing agents, streaming improves perceived latency.
-
Set max_output_tokens. Do not let the model generate more tokens than needed. Set appropriate limits for each call.
My Take
Gemini 3.6 Flash is the best value for agent workloads right now. The combination of speed (304 tok/s), cost ($1.50/$7.50 with aggressive caching), and capability (1M context, computer use, function calling) is hard to beat.
The built-in computer use is the real differentiator. Other models require separate tools or plugins for browser automation. Gemini has it natively. If you are building agents that need to interact with web applications, this changes what is possible.
My one concern: Googleโs agent tooling is still maturing. Anthropicโs Claude has more polished documentation for complex agent patterns. But the raw capability is there, and the price is right.
For a broader view of the agent landscape, see our Best AI Coding Tools 2026 roundup.
FAQ
Is Gemini 3.6 Flash good for building AI agents?
Yes. The 304 tok/s speed, 1M context window, built-in computer use, and aggressive caching ($0.15/1M cached input) make it one of the best options for building AI agents in 2026. See our Gemini 3.6 Flash Complete Guide for the full specs.
How does computer use work in Gemini 3.6 Flash?
Computer use is a built-in client-side tool. The model generates actions (click, type, scroll) based on screenshots, and your application executes them. Googleโs OSWorld-Verified score for 3.6 Flash is 83.0%. See the official Google documentation for the API details.
Can I use Gemini 3.6 Flash with MCP?
Yes. Gemini supports function calling and tool use, which is compatible with the Model Context Protocol (MCP). The function calling API works with MCP tool definitions. See our MCP Complete Developer Guide for more.
How do I reduce costs for agent workflows?
Use caching. System prompts and tool definitions are cached automatically at $0.15/1M (90% discount). Also use Gemini 3.5 Flash-Lite for high-volume subtasks that do not need full capability. At $0.30/$2.50, it is 5x cheaper than 3.6 Flash.
Which Gemini model should I use for different agent roles?
Use 3.6 Flash for the orchestrator and complex tasks. Use 3.5 Flash-Lite for high-volume, low-cost subtasks. Use 3.1 Pro for long-context retrieval if needed. See our Best Gemini Model for Coding 2026 guide for the full breakdown.