{"record":{"id":"40a9318d39b3149f","repo":"langchain-ai/deepagents","slug":"profile-key-key-r-has-an-empty-provider-or-model","errorCode":null,"errorMessage":"Profile key {key!r} has an empty provider or model half; expected 'provider:model'.","messagePattern":"Profile key (.+?) has an empty provider or model half; expected 'provider:model'\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"libs/deepagents/deepagents/profiles/_keys.py","lineNumber":39,"sourceCode":"    Raises:\n        ValueError: If `key` is empty, contains leading/trailing whitespace,\n            has more than one `:`, has whitespace adjacent to `:`, or has\n            an empty half on either side of `:`.\n    \"\"\"\n    if not key:\n        msg = \"Profile key must be a non-empty string.\"\n        raise ValueError(msg)\n    if key != key.strip():\n        msg = f\"Profile key {key!r} has leading or trailing whitespace; expected 'provider' or 'provider:model'.\"\n        raise ValueError(msg)\n    if key.count(\":\") > 1:\n        msg = f\"Profile key {key!r} has more than one ':'; expected 'provider' or 'provider:model'.\"\n        raise ValueError(msg)\n    if \":\" in key:\n        provider, _, model = key.partition(\":\")\n        if not provider or not model:\n            msg = f\"Profile key {key!r} has an empty provider or model half; expected 'provider:model'.\"\n            raise ValueError(msg)\n        if provider != provider.strip() or model != model.strip():\n            msg = f\"Profile key {key!r} has whitespace adjacent to ':'; expected 'provider:model' with no spaces around ':'.\"\n            raise ValueError(msg)\n","sourceCodeStart":21,"sourceCodeEnd":43,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/deepagents/deepagents/profiles/_keys.py#L21-L43","documentation":"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:'.","triggerScenarios":"Registering with ':gpt-4', 'anthropic:', or ':' — typically a variable holding one half was empty.","commonSituations":"String formatting with an unset provider or model variable; config where the model line is blank but the colon separator remains.","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."],"exampleFix":"// before\nkey = f\"{provider}:\"  # provider may be empty\n// after\nkey = f\"{provider}:{model}\" if provider and model else provider","handlingStrategy":"validation","validationCode":"provider, sep, model = key.partition(\":\")\nif sep and (not provider or not model):\n    raise ValueError(f\"profile key {key!r} needs both provider and model\")","typeGuard":null,"tryCatchPattern":"try:\n    register_provider_profile(key)\nexcept ValueError as e:\n    if \"empty provider or model half\" in str(e):\n        logging.error(\"fix key: %s\", e)\n    else:\n        raise","preventionTips":["Build keys from checked variables; omit ':' when model is absent","Add unit tests for key construction helpers"],"tags":["python","profiles","validation"],"backgroundTag":"invalid-profile-key","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}