langchain-ai/deepagents · error · ValueError
Profile key {key!r} has an empty provider or model half; exp
Error message
Profile key {key!r} has an empty provider or model half; expected 'provider:model'. What it means
For 'provider:model' keys, both halves must be non-empty. validate_profile_key raises when partition(':') yields an empty provider or model, e.g. ':model' or 'provider:'.
Source
Thrown at libs/deepagents/deepagents/profiles/_keys.py:39
Raises:
ValueError: If `key` is empty, contains leading/trailing whitespace,
has more than one `:`, has whitespace adjacent to `:`, or has
an empty half on either side of `:`.
"""
if not key:
msg = "Profile key must be a non-empty string."
raise ValueError(msg)
if key != key.strip():
msg = f"Profile key {key!r} has leading or trailing whitespace; expected 'provider' or 'provider:model'."
raise ValueError(msg)
if key.count(":") > 1:
msg = f"Profile key {key!r} has more than one ':'; expected 'provider' or 'provider:model'."
raise ValueError(msg)
if ":" in key:
provider, _, model = key.partition(":")
if not provider or not model:
msg = f"Profile key {key!r} has an empty provider or model half; expected 'provider:model'."
raise ValueError(msg)
if provider != provider.strip() or model != model.strip():
msg = f"Profile key {key!r} has whitespace adjacent to ':'; expected 'provider:model' with no spaces around ':'."
raise ValueError(msg)
View on GitHub (pinned to a1af029e6e)
Solutions
- Provide both a non-empty provider and a non-empty model.
- Omit the ':' entirely if no model is needed (use plain 'provider').
- Guard against empty variables before building the key.
Example fix
// before
key = f"{provider}:" # provider may be empty
// after
key = f"{provider}:{model}" if provider and model else provider Defensive patterns
Strategy: validation
Validate before calling
provider, sep, model = key.partition(":")
if sep and (not provider or not model):
raise ValueError(f"profile key {key!r} needs both provider and model") Try / catch
try:
register_provider_profile(key)
except ValueError as e:
if "empty provider or model half" in str(e):
logging.error("fix key: %s", e)
else:
raise Prevention
- Build keys from checked variables; omit ':' when model is absent
- Add unit tests for key construction helpers
When it happens
Trigger: Registering with ':gpt-4', 'anthropic:', or ':' — typically a variable holding one half was empty.
Common situations: String formatting with an unset provider or model variable; config where the model line is blank but the colon separator remains.
Related errors
- Profile key must be a non-empty string.
- Profile key {key!r} has more than one ':'; expected 'provide
- modes can only be provided when agent is a factory
- models can only be provided when agent is a factory
- -32602
AI-assisted analysis of langchain-ai/deepagents@a1af029e6e (2026-08-29).
Data as JSON: /api/errors/40a9318d39b3149f.
Report an issue: GitHub.