{"record":{"id":"ed3867d4282423be","repo":"microsoft/semantic-kernel","slug":"the-openai-model-id-is-required-ed3867","errorCode":null,"errorMessage":"The OpenAI model ID is required.","messagePattern":"The OpenAI model ID is required\\.","errorType":"exception","errorClass":"ServiceInitializationError","httpStatus":null,"severity":"critical","filePath":"python/semantic_kernel/connectors/ai/open_ai/services/open_ai_chat_completion.py","lineNumber":67,"sourceCode":"                to environment variables. (Optional)\n            env_file_encoding (str | None): The encoding of the environment settings file. (Optional)\n            instruction_role (str | None): The role to use for 'instruction' messages, for example,\n        \"\"\"\n        try:\n            openai_settings = OpenAISettings(\n                api_key=api_key,\n                org_id=org_id,\n                chat_model_id=ai_model_id,\n                env_file_path=env_file_path,\n                env_file_encoding=env_file_encoding,\n            )\n        except ValidationError as ex:\n            raise ServiceInitializationError(\"Failed to create OpenAI settings.\", ex) from ex\n\n        if not async_client and not openai_settings.api_key:\n            raise ServiceInitializationError(\"The OpenAI API key is required.\")\n        if not openai_settings.chat_model_id:\n            raise ServiceInitializationError(\"The OpenAI model ID is required.\")\n\n        super().__init__(\n            ai_model_id=openai_settings.chat_model_id,\n            api_key=openai_settings.api_key.get_secret_value() if openai_settings.api_key else None,\n            org_id=openai_settings.org_id,\n            service_id=service_id,\n            ai_model_type=OpenAIModelTypes.CHAT,\n            default_headers=default_headers,\n            client=async_client,\n            instruction_role=instruction_role,\n        )\n\n    @classmethod\n    def from_dict(cls, settings: dict[str, Any]) -> \"OpenAIChatCompletion\":\n        \"\"\"Initialize an Open AI service from a dictionary of settings.\n\n        Args:\n            settings: A dictionary of settings for the service.","sourceCodeStart":49,"sourceCodeEnd":85,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/ai/open_ai/services/open_ai_chat_completion.py#L49-L85","documentation":"Raised during OpenAIChatCompletion construction when the resolved OpenAISettings object has a falsy chat_model_id. The service builds its settings from constructor args, .env file, and environment variables (in that precedence), then refuses to start without a model name because every downstream request requires it.","triggerScenarios":"Instantiating OpenAIChatCompletionBase (or AzureOpenAIChatCompletion) without passing ai_model_id AND without setting OPENAI_CHAT_MODEL_ID / the .env equivalent. The ai_model_id constructor arg is None, env var is unset, and .env file is absent or does not contain a chat model id.","commonSituations":"Forgetting to set OPENAI_CHAT_MODEL_ID in .env after cloning a repo; renaming the env var during a config refactor; deploying to a new environment without copying .env; passing only api_key but not the model name in code.","solutions":["Set the OPENAI_CHAT_MODEL_ID environment variable (or add it to your .env file), e.g. OPENAI_CHAT_MODEL_ID=gpt-4o","Pass ai_model_id explicitly to the constructor: OpenAIChatCompletion(api_key=..., ai_model_id='gpt-4o')","Verify your .env file path and encoding match the env_file_path / env_file_encoding arguments if you are loading from a custom location"],"exampleFix":"# before\nservice = OpenAIChatCompletion(api_key=os.environ['OPENAI_API_KEY'])\n# after\nservice = OpenAIChatCompletion(\n    api_key=os.environ['OPENAI_API_KEY'],\n    ai_model_id='gpt-4o',\n)","handlingStrategy":"validation","validationCode":"import os\nfrom semantic_kernel.connectors.ai.open_ai import OpenAISettings\n\nsettings = OpenAISettings()\nif not settings.chat_model_id:\n    raise ValueError('OPENAI_CHAT_MODEL_ID is not set. Configure it in .env or pass ai_model_id.')","typeGuard":null,"tryCatchPattern":"from semantic_kernel.exceptions.service_exceptions import ServiceInitializationError\n\ntry:\n    service = OpenAIChatCompletion(api_key=key)\nexcept ServiceInitializationError as e:\n    if 'model ID is required' in str(e):\n        # load model from alternate source and retry\n        ...","preventionTips":["Centralize model-id configuration in a single .env or config loader so all services read the same source","Add a startup health-check that validates required OpenAI settings before the app accepts traffic"],"tags":["openai","configuration","chat-completion","model-id"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}