Google Drive Context Provider
GoogleDriveContextProvider wraps a read-only slice of `GoogleDriveTools` with `corpora="allDrives"` so a service account can see folders shared with it and files in Shared Drives.
GoogleDriveContextProvider wraps a read-only slice of GoogleDriveTools with corpora="allDrives" so a service account can see folders shared with it and files in Shared Drives. The calling agent gets a single query_<id> tool that routes through a sub-agent trained to escalate searches when the naive query comes back empty.
"""
Google Drive Context Provider
=============================
GoogleDriveContextProvider wraps a read-only slice of `GoogleDriveTools`
with `corpora="allDrives"` so a service account can see folders shared
with it and files in Shared Drives. The calling agent gets a single
`query_<id>` tool that routes through a sub-agent trained to
escalate searches when the naive query comes back empty.
Setup:
1. Create a service account in Google Cloud Console and download
its JSON key.
2. Share the Drive folders you want the agent to see with the SA
email (found in the JSON key as `client_email`).
3. Point the env at the key file:
export GOOGLE_SERVICE_ACCOUNT_FILE=/path/to/sa.json
Requires:
OPENAI_API_KEY
GOOGLE_SERVICE_ACCOUNT_FILE
"""
from __future__ import annotations
import asyncio
from agno.agent import Agent
from agno.context.gdrive import GoogleDriveContextProvider
from agno.models.openai import OpenAIResponses
# ---------------------------------------------------------------------------
# Create the provider (service-account path from env)
# ---------------------------------------------------------------------------
gdrive = GoogleDriveContextProvider(model=OpenAIResponses(id="gpt-5.6-luna"))
# ---------------------------------------------------------------------------
# Create the Agent
# ---------------------------------------------------------------------------
agent = Agent(
model=OpenAIResponses(id="gpt-5.4"),
tools=gdrive.get_tools(),
instructions=gdrive.instructions(),
markdown=True,
)
# ---------------------------------------------------------------------------
# Run the Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
print(f"\ngdrive.status() = {gdrive.status()}\n")
prompt = (
"What Google Docs can you see? Find the most recently modified "
"one, read it, and summarize it in three bullets. Cite its "
"webViewLink."
)
print(f"> {prompt}\n")
asyncio.run(agent.aprint_response(prompt))Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno google-api-python-client google-auth-httplib2 google-auth-oauthlib openaiExport environment variables
export GOOGLE_SERVICE_ACCOUNT_FILE="your_google_service_account_file_here"
export OPENAI_API_KEY="your_openai_api_key_here"Run the example
Save the code above as google_drive.py, then run:
python google_drive.pyFull source: cookbook/12_context/07_google_drive.py