GCS File Input

Summarize a PDF straight from a Google Cloud Storage gs:// URI using Gemini on Vertex AI, with no download or re-upload.

For gemini-3.7-flash on Vertex AI, current limits are 50 MB for PDF input through the API or Cloud Storage, 7 MB for text/plain, and 30 MB for Cloud Storage image input. See Gemini 3.7 Flash model limits. This example's blanket 2 GB limit and additional MIME-type claims are stale.

gcs_file_input.py
"""
Example: Analyze files directly from Google Cloud Storage (GCS).

The Gemini API now supports GCS URIs natively (up to 2GB).
No need to download or re-upload - just pass the gs:// URI directly.

Requirements:
- Vertex AI must be enabled (GCS URIs require OAuth, not API keys)
- Run: gcloud auth application-default login
- Set environment variables: GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION
- Your GCS bucket must be accessible to your credentials

Supported formats: PDF, JSON, HTML, CSS, XML, images (PNG, JPEG, WebP, GIF)
"""

from agno.agent import Agent
from agno.media import File
from agno.models.google import Gemini

# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------

# GCS requires Vertex AI (OAuth credentials), not API keys
# Set GOOGLE_CLOUD_PROJECT and GOOGLE_CLOUD_LOCATION env vars
agent = Agent(
    model=Gemini(
        id="gemini-3.7-flash",
        vertexai=True,
    ),
    markdown=True,
)

# Pass GCS URI directly - no download or re-upload needed
agent.print_response(
    "Summarize this document and extract key insights.",
    files=[
        File(
            url="gs://cloud-samples-data/generative-ai/pdf/2312.11805v3.pdf",  # Sample PDF
            mime_type="application/pdf",
        )
    ],
)

# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------

if __name__ == "__main__":
    pass

Run the Example

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Install dependencies

uv pip install -U agno google-genai

Export environment variables

export GOOGLE_CLOUD_LOCATION="global"
export GOOGLE_CLOUD_PROJECT="your_google_cloud_project_here"

Authenticate with Google Cloud

Sign in with Application Default Credentials:

gcloud auth application-default login

Run the example

Save the code above as gcs_file_input.py, then run:

python gcs_file_input.py

Full source: cookbook/90_models/google/gemini/gcs_file_input.py