LiteLLM Tool Use
Call YFinance tools from a LiteLLM agent with sync, streaming, and async runs.
"""
Litellm Tool Use
================
Cookbook example for `litellm/tool_use.py`.
"""
import asyncio
from agno.agent import Agent
from agno.models.litellm import LiteLLM
from agno.tools.yfinance import YFinanceTools
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
openai_agent = Agent(
model=LiteLLM(
id="gpt-5.6-luna",
name="LiteLLM",
),
markdown=True,
tools=[YFinanceTools()],
)
# Ask a question that would likely trigger tool use
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
# --- Sync ---
openai_agent.print_response("How is TSLA stock doing right now?")
# --- Sync + Streaming ---
openai_agent.print_response("Whats happening in France?", stream=True)
# --- Async ---
asyncio.run(openai_agent.aprint_response("What is happening in France?"))Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno litellm yfinanceSet your OpenAI credentials
Use an OpenAI API key with access to the requested model. The LiteLLM SDK calls the provider directly. An existing LITELLM_API_KEY overrides provider-specific credentials, so clear it for this example.
unset LITELLM_API_KEY
export OPENAI_API_KEY="your_provider_api_key_here"Set compatible sampling options
Add temperature=None, top_p=None to every LiteLLM(...) using id="gpt-5.6-luna" or id="openai/gpt-5.6-luna" in your saved file. The adapter defaults to temperature=0.7 and top_p=1.0; the LiteLLM SDK rejects those sampling settings for this model's default reasoning mode before sending a request.
Run the example
Save the code above as tool_use.py, then run:
python tool_use.pyFull source: cookbook/90_models/litellm/tool_use.py