PDF Input URL
Fetch a PDF from a URL and summarize it with a Vertex AI Claude agent.
Vertex AI accepts only base64-encoded document sources, so fetch the PDF and pass its bytes with File(content=...). File(url=...) sends a URL document source, which Vertex AI rejects.
Code
import httpx
from agno.agent import Agent
from agno.media import File
from agno.models.vertexai.claude import Claude
agent = Agent(
model=Claude(id="claude-sonnet-4-6"),
markdown=True,
)
pdf_bytes = httpx.get(
"https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"
).content
agent.print_response(
"Summarize the contents of the attached file.",
files=[
File(content=pdf_bytes),
],
)Usage
Complete the Vertex project, model enablement, permissions, and CLI prerequisites first. Use a region that serves Sonnet 4.6.
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateSet your environment variables
export CLOUD_ML_REGION="us-east5"
export GOOGLE_CLOUD_PROJECT=xxxAuthenticate your CLI session
gcloud auth application-default loginYou don't need to authenticate your CLI every time.
Install dependencies
uv pip install -U 'anthropic[vertex]' agnoRun Agent
python pdf_input_url.py