Cloudflare AI Gateway: tool use
Give a Cloudflare AI Gateway agent web search with WebSearchTools and stream the tool-calling run.
Runs a Workers AI chat model through Cloudflare AI Gateway's OpenAI-compatible /compat endpoint with a tool. The OpenAI tools / tool_calls schema is forwarded as-is by the gateway; the upstream Workers AI model must support function calling. @cf/zai-org/glm-4.7-flash does.
The current Agno Cloudflare adapter uses AI Gateway's /compat/chat/completions endpoint. Cloudflare deprecates this endpoint for single-model calls while keeping it working for existing integrations. Dynamic routes still require it. For new direct model integrations, follow Cloudflare's current REST API guide.
"""
Cloudflare AI Gateway — tool use
================================
Runs a Workers AI chat model through Cloudflare AI Gateway's OpenAI-compatible
``/compat`` endpoint with a tool. The OpenAI ``tools`` / ``tool_calls`` schema
is forwarded as-is by the gateway; the upstream Workers AI model must support
function calling. ``@cf/zai-org/glm-4.7-flash`` does.
Requires:
- CLOUDFLARE_API_TOKEN
- CLOUDFLARE_ACCOUNT_ID
Optional:
- CLOUDFLARE_AI_GATEWAY_ID (defaults to ``default``)
Install:
uv pip install ddgs
"""
import asyncio
from agno.agent import Agent
from agno.models.cloudflare import Cloudflare
from agno.tools.websearch import WebSearchTools
agent = Agent(
model=Cloudflare(id="@cf/zai-org/glm-4.7-flash"),
tools=[WebSearchTools()],
markdown=True,
add_datetime_to_context=True,
)
if __name__ == "__main__":
# --- Sync ---
agent.print_response("Whats happening in France?")
# --- Sync + Streaming ---
agent.print_response("Whats happening in France?", stream=True)
# --- Async + Streaming ---
asyncio.run(agent.aprint_response("Whats happening in France?", stream=True))Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno ddgs openaiSet up Cloudflare access
Use a Cloudflare account and an API token with the permissions required for AI Gateway and Workers AI. The default gateway is created on the first request; set CLOUDFLARE_AI_GATEWAY_ID only to use another existing gateway.
export CLOUDFLARE_ACCOUNT_ID="your_cloudflare_account_id_here"
export CLOUDFLARE_API_TOKEN="your_cloudflare_api_token_here"Workers AI examples use this Cloudflare token. Other providers can require stored provider keys or supported unified billing; configure the selected route in the gateway before switching to it.
Run the example
Save the code above as tool_use.py, then run:
python tool_use.pyFull source: cookbook/90_models/cloudflare/tool_use.py