{"record":{"id":"d9ae1b4cef697f0c","repo":"openai/openai-python","slug":"invalid-provider-providers-must-be-created-by-an","errorCode":null,"errorMessage":"Invalid provider. Providers must be created by an OpenAI provider factory.","messagePattern":"Invalid provider\\. Providers must be created by an OpenAI provider factory\\.","errorType":"exception","errorClass":"OpenAIError","httpStatus":null,"severity":"error","filePath":"src/openai/_provider.py","lineNumber":65,"sourceCode":"def _create_provider(definition: _ProviderDefinition) -> _Provider:  # pyright: ignore[reportUnusedFunction]\n    provider = _Provider()\n    _provider_definitions[provider] = definition\n    return provider\n\n\ndef _provider_name(provider: _Provider) -> str:  # pyright: ignore[reportUnusedFunction]\n    return _get_provider_definition(provider).name\n\n\ndef _configure_provider(provider: _Provider) -> _ProviderRuntime:  # pyright: ignore[reportUnusedFunction]\n    return _get_provider_definition(provider).configure()\n\n\ndef _get_provider_definition(provider: _Provider) -> _ProviderDefinition:\n    try:\n        return _provider_definitions[provider]\n    except (KeyError, TypeError) as exc:\n        raise OpenAIError(\"Invalid provider. Providers must be created by an OpenAI provider factory.\") from exc\n","sourceCodeStart":47,"sourceCodeEnd":66,"githubUrl":"https://github.com/openai/openai-python/blob/9917c6e28e66e90e1227b3d223c06a8c5441515a/src/openai/_provider.py#L47-L66","documentation":"The provider object passed to configuration isn't a valid provider token: _get_provider_definition() only recognizes providers created by the SDK's own provider factories (stored in _provider_definitions). Unknown keys or unhashable/invalid objects raise OpenAIError with this message.","triggerScenarios":"Passing a string, an arbitrary object, or a manually constructed/forged provider constant to a provider-related config API (e.g. with_options(provider=...) or client configuration); using a provider constant removed or renamed between SDK versions.","commonSituations":"Typos in provider names; copying provider constants from a different SDK version or another library; pickling/deserializing provider objects so identity is lost.","solutions":["Import the provider from the SDK's provider factory (e.g. openai.providers.azure / openai(...).providers.*) instead of constructing your own","Upgrade to a matching SDK version if the provider was renamed/removed","If you need a custom base URL, use base_url configuration instead of forging a provider"],"exampleFix":"// before\nclient = OpenAI(provider=\"azure\")\n// after\nfrom openai import AzureOpenAI\nclient = AzureOpenAI(...)","handlingStrategy":"validation","validationCode":"from openai._provider import _provider_definitions\n\ndef provider_is_valid(p: object) -> bool:\n    try:\n        return p in _provider_definitions\n    except TypeError:\n        return False","typeGuard":"def is_factory_provider(p: object, client) -> bool:\n    return hasattr(client, 'providers') and any(p == f() for f in client.providers.__dict__.values() if callable(f))","tryCatchPattern":"try:\n    client = OpenAI(provider=provider)\nexcept OpenAIError as e:\n    if 'Invalid provider' in str(e):\n        raise ValueError('use provider factories from openai.providers') from e\n    raise","preventionTips":["Only use provider constants obtained from the SDK itself","After upgrading, re-check provider import paths"],"tags":["python","provider","configuration","invalid-argument"],"backgroundTag":"invalid-provider-configuration","analyzedSha":"9917c6e28e66e90e1227b3d223c06a8c5441515a","analyzedAt":"2026-08-28T11:46:34.183Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}