Set Environment Variables

Environment Variables in BAML

Sometimes you’ll see environment variables used in BAML, like in clients:

1client<llm> GPT4o {
2 provider baml-openai-chat
3 options {
4 model gpt-4o
5 api_key env.OPENAI_API_KEY
6 }
7}

To set environment variables:

Once you open a .baml file, in VSCode, you should see a small button over every BAML function: Open Playground.

Then you should be able to set environment variables in the settings tab.

Or type BAML Playground in the VSCode Command Bar (CMD + Shift + P or CTRL + Shift + P) to open the playground.

BAML will expect these to be set already in your program before you import the baml_client in Python/ TS / etc.

Any of the following strategies for setting env vars are compatible with BAML:

  • setting them in your shell before running your program
  • in your Dockerfile
  • in your next.config.js
  • in your Kubernetes manifest
  • from secrets-store.csi.k8s.io
  • from a secrets provider such as Infisical / Doppler
  • from a .env file (using dotenv cli)
  • using account credentials for ephemeral token generation (e.g. Vertex AI Auth Tokens)
$export MY_SUPER_SECRET_API_KEY="..."
>python my_program_using_baml.py

Requires BAML Version 0.57+

If you don’t want BAML to try to auto-load your env vars, you can call manually reset_baml_env_vars with the current environment variables.

1from baml_client import b
2from baml_client import reset_baml_env_vars
3import os
4import dotenv
5
6dotenv.load_dotenv()
7reset_baml_env_vars(dict(os.environ))

Dynamically setting LLM API Keys

You can set the API key for an LLM dynamically by passing in the key as a header or as a parameter (depending on the provider), using the ClientRegistry.

Built with