Code
cookbook/11_models/google/gemini/s3_url_file_input.py
Copy
Ask AI
"""S3 pre-signed URL input with Gemini.
Pass files from S3 using pre-signed URLs without downloading.
Supports files up to 100MB. Requires Gemini 3.x models.
"""
import boto3
from agno.agent import Agent
from agno.media import File
from agno.models.google import Gemini
s3_client = boto3.client("s3")
presigned_url = s3_client.generate_presigned_url(
"get_object",
Params={
"Bucket": "agno-public",
"Key": "recipes/ThaiRecipes.pdf",
},
ExpiresIn=3600,
)
agent = Agent(
model=Gemini(id="gemini-3-flash-preview"),
markdown=True,
)
agent.print_response(
"What is this document about? Answer in one sentence.",
files=[
File(
url=presigned_url,
mime_type="application/pdf",
)
],
)
Usage
1
Set up your virtual environment
Copy
Ask AI
uv venv --python 3.12
source .venv/bin/activate
2
Set your credentials
Copy
Ask AI
export GOOGLE_API_KEY=xxx
export AWS_ACCESS_KEY_ID=xxx
export AWS_SECRET_ACCESS_KEY=xxx
3
Install dependencies
Copy
Ask AI
pip install -U google-genai agno boto3
4
Run Agent
Copy
Ask AI
python cookbook/11_models/google/gemini/s3_url_file_input.py