{"record":{"id":"9b7fe49b12215758","repo":"apache/seatunnel","slug":"openai-package-required-for-ai-provider-openai-in","errorCode":null,"errorMessage":"openai package required for AI_PROVIDER=openai. Install it: pip install openai","messagePattern":"openai package required for AI_PROVIDER=openai\\. Install it: pip install openai","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"seatunnel-cli/seatunnel_cli/llm_provider.py","lineNumber":705,"sourceCode":"            stop_reason = \"tool_use\"\n\n        return {\n            \"output\": {\"message\": {\"role\": \"assistant\", \"content\": content}},\n            \"stopReason\": stop_reason,\n        }\n\n\n\n# ─── OpenAI Provider ───\n\nclass OpenAIProvider(LLMProvider):\n    \"\"\"OpenAI Chat Completions API provider.\"\"\"\n\n    def __init__(self):\n        try:\n            import openai\n        except ImportError:\n            raise ImportError(\n                \"openai package required for AI_PROVIDER=openai. \"\n                \"Install it: pip install openai\"\n            )\n\n        api_key = os.environ.get(\"OPENAI_API_KEY\")\n        base_url = os.environ.get(\"OPENAI_BASE_URL\")  # Supports compatible APIs\n        if not api_key:\n            raise ValueError(\"OPENAI_API_KEY environment variable is required for AI_PROVIDER=openai\")\n\n        client_kwargs = {\"api_key\": api_key}\n        if base_url:\n            client_kwargs[\"base_url\"] = base_url\n        self._client = openai.OpenAI(**client_kwargs)\n        self._model_id = os.environ.get(\"OPENAI_MODEL\", \"gpt-4o\")\n        self._fast_model_id = os.environ.get(\"OPENAI_SMALL_FAST_MODEL\", \"gpt-4o-mini\")\n        self._echo_reasoning_content = _env_bool(\"OPENAI_ECHO_REASONING_CONTENT\", True)\n\n    @property","sourceCodeStart":687,"sourceCodeEnd":723,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-cli/seatunnel_cli/llm_provider.py#L687-L723","documentation":"Raised by OpenAIProvider.__init__ when the optional openai Python package is absent while AI_PROVIDER=openai is configured. The provider lazily imports the dependency, so the config selection is the input at fault, not missing core functionality.","triggerScenarios":"AI_PROVIDER=openai selects OpenAIProvider and 'import openai' fails in __init__ because the package is not installed in the environment.","commonSituations":"Fresh venv/container without the openai package; switched AI_PROVIDER from another provider; very old CLI where openai was not a dependency.","solutions":["Run: pip install openai in the environment running the CLI","Install via the CLI's LLM extra if available","Verify with 'python -c \"import openai\"' using the same interpreter"],"exampleFix":"// before\nexport AI_PROVIDER=openai\nseatunnel-cli ...   # ImportError\n// after\npip install openai\nexport AI_PROVIDER=openai","handlingStrategy":"try-catch","validationCode":"python -c \"import openai\" || pip install openai","typeGuard":null,"tryCatchPattern":"try:\n    provider = OpenAIProvider()\nexcept ImportError as e:\n    print(f'Missing LLM dependency: {e}. Run: pip install openai')\n    sys.exit(2)","preventionTips":["Install the openai package in the CLI's interpreter","Pin openai version compatible with the CLI","Run an import smoke test in CI","Install the matching extra when switching AI_PROVIDER"],"tags":["python","llm","dependency","openai"],"backgroundTag":"missing-optional-dependency","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}