Files
Riccardo Schirone ec7031c5ef fix(common): use budgeted LITELLM_API_KEY so LITELLM_MAX_BUDGET is enforced (#550)
* fix(common): use budgeted LITELLM_API_KEY for the LLM client

create_llm() authenticated with BUTTERCUP_LITELLM_KEY, which
litellm_config.yaml defines as general_settings.master_key. LiteLLM
master keys bypass all budget/rate enforcement, so LITELLM_MAX_BUDGET
had no effect — an e2e run with --budget 1 spent ~$4.77 unthrottled
with every /chat/completions returning 200.

The budgeted virtual key (llm-user, created with max_budget=
$LITELLM_MAX_BUDGET by litellm-user-keys-setup) is already plumbed:
seed-gen/patcher entrypoints export LITELLM_API_KEY from the mounted
key file. create_llm() just never read it.

Prefer LITELLM_API_KEY when set; fall back to BUTTERCUP_LITELLM_KEY so
environments without a provisioned budgeted key are unaffected.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore(compose): document LITELLM_MAX_BUDGET in env.template (complements #550)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 15:52:14 +02:00

28 lines
953 B
Plaintext

# docker compose .env template
# LiteLLM variables
BUTTERCUP_LITELLM_KEY=sk-1234
# Max spend (USD) enforced on the generated llm-user LiteLLM key. Once the
# cumulative spend on that key exceeds this value, LiteLLM rejects further
# requests. Picked up by compose interpolation in compose.yaml; defaults to 100
# if unset. Kept low here to cap spend during local development.
LITELLM_MAX_BUDGET=15
# You only need to change variables for APIs you will use, but you need all these variables set
ANTHROPIC_API_KEY=<INSERT_KEY>
AZURE_API_BASE=<INSERT_HOST>
AZURE_API_KEY=<INSERT_KEY>
OPENAI_API_KEY=<INSERT_KEY>
GEMINI_API_KEY=<INSERT_KEY>
# (optional) LangFuse variables
LANGFUSE_HOST=<INSERT_HOST>
LANGFUSE_PUBLIC_KEY=<INSERT_KEY>
LANGFUSE_SECRET_KEY=<INSERT_KEY>
# Scantron/Competition-API GitHub PAT
# SCANTRON_GITHUB_PAT=<INSERT_PAT>
# (optional) SigNoz variables
# OTEL_EXPORTER_OTLP_ENDPOINT=<INSERT_ENDPOINT>
# OTEL_EXPORTER_OTLP_PROTOCOL=grpc