Audio Input (Upload the file)
Upload an audio file with the Gemini Files API and pass the uploaded file to an agent.
Use File(external=...) for a Google Files API object. Audio.content accepts raw bytes, so it cannot hold the uploaded SDK file object.
Code
from pathlib import Path
from agno.agent import Agent
from agno.media import File
from agno.models.google import Gemini
from google.genai.types import UploadFileConfig
model = Gemini(id="gemini-3.5-flash")
agent = Agent(
model=model,
markdown=True,
)
# Please download a sample audio file to test this Agent and upload using:
audio_path = Path(__file__).parent.joinpath("sample.mp3")
if not audio_path.is_file():
raise FileNotFoundError(f"Place a sample MP3 at {audio_path}")
audio_file = None
remote_file_name = f"files/{audio_path.stem.lower()}"
try:
audio_file = model.get_client().files.get(name=remote_file_name)
except Exception as e:
print(f"Error getting file {audio_path.stem}: {e}")
pass
if not audio_file:
try:
audio_file = model.get_client().files.upload(
file=audio_path,
config=UploadFileConfig(name=audio_path.stem, display_name=audio_path.stem),
)
print(f"Uploaded audio: {audio_file}")
except Exception as e:
raise RuntimeError("Audio upload failed; no agent request was sent") from e
if audio_file is None:
raise RuntimeError("No uploaded audio is available")
agent.print_response(
"Tell me about this audio",
files=[File(external=audio_file)],
stream=True,
)Usage
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateSet your API key
export GOOGLE_API_KEY=xxxInstall dependencies
uv pip install -U google-genai agnoPrepare an audio file
Put a real MP3 named sample.mp3 in the same directory as the Python script, or update audio_path to your file.
Run Agent
Save the code above as audio_input_file_upload.py, then run:
python audio_input_file_upload.py