Back to Baml

LLM Clients (client)

fern/03-reference/baml/client-llm.mdx

0.223.01.3 KB
Original Source

Clients are used to configure how LLMs are called, like so:

rust
function MakeHaiku(topic: string) -> string {
  client "openai/gpt-4o"
  prompt #"
    Write a haiku about {{ topic }}.
  "#
}

<provider>/<model> shorthand for the Named Client version of MyClient:

rust
client<llm> MyClient {
  provider "openai"
  options {
    model "gpt-5"
    // api_key defaults to env.OPENAI_API_KEY
  }
}

function MakeHaiku(topic: string) -> string {
  client MyClient
  prompt #"
    Write a haiku about {{ topic }}.
  "#
}

Consult the provider documentation for a list of supported providers and models, and the default options.

If you want to override options like api_key to use a different environment variable, or you want to point base_url to a different endpoint, you should use the latter form.

<Tip> If you want to specify which client to use at runtime, in your Python/TS/Ruby code, you can use the [client registry](/ref/baml_client/client-registry) to do so.

This can come in handy if you're trying to, say, send 10% of your requests to a different model. </Tip>

Fields

<Markdown src="/snippets/client-constructor.mdx" /> <ParamField path="retry_policy"> The name of the retry policy. See [Retry Policy](/ref/llm-client-strategies/retry-policy). </ParamField>