# LLM

An agent talks to a model through an `LLMClient`. Pick a provider client, then add routing, caching and cost tracking around it as your app needs them.

- [Providers](providers.md): the shipped clients, their constructors and keys, and how to add your own.
- [Routing](routing.md): pick a model per request by size, cost or capability.
- [Configuration](configuration.md): change an agent's provider, model or tuning from a JSON file or the environment, without recompiling.
- [Caching](caching.md): cache responses, exactly or by meaning.
- [Cost](cost.md): track spend per agent and session, and enforce budgets.
- [LLM calls](../observability/llm-calls.md): capture every LLM call as an `LLMCallLog` event with prompt, response, usage, cost and timing.
- [Audio](audio.md): speech-to-text and translation with `WhisperClient`.

For text to speech, see [Images and speech](../tools/images-and-speech.md).
