Files
crewAI/lib
Greyson LaLonde 851df79a82 fix: defer native LLM client construction when credentials are missing
All native LLM providers built their SDK clients inside
`@model_validator(mode="after")`, which required the API key at
`LLM(...)` construction time. Instantiating an LLM at module scope
(e.g. `chat_llm=LLM(model="openai/gpt-4o-mini")` on a `@crew` method)
crashed during downstream crew-metadata extraction with a confusing
`ImportError: Error importing native provider: 1 validation error...`
before the process env vars were ever consulted.

Wrap eager client construction in a try/except in each provider and
add `_get_sync_client` / `_get_async_client` methods that build on
first use. OpenAI call sites are routed through the lazy getters so
calls made without eager construction still work. The descriptive
"X_API_KEY is required" errors are re-raised from the lazy path at
first real call.

Update two Azure tests that asserted the old eager-error contract to
assert the new lazy-error contract.
2026-04-11 05:48:42 +08:00
..
2026-04-10 21:51:51 +08:00