{"record":{"id":"c262474f9ab16a07","repo":"HKUDS/Vibe-Trading","slug":"langchain-openai-is-not-installed","errorCode":null,"errorMessage":"langchain-openai is not installed","messagePattern":"langchain-openai is not installed","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"critical","filePath":"agent/src/providers/llm.py","lineNumber":1458,"sourceCode":"        )\n\n    if provider == \"deepseek\":\n        adapter_mode = _deepseek_adapter_mode()\n        if adapter_mode != \"openai-compatible\":\n            native_llm = _build_native_deepseek(\n                model=name,\n                temperature=temperature,\n                callbacks=callbacks,\n            )\n            if native_llm is not None:\n                return native_llm\n            if adapter_mode == \"native\":\n                raise RuntimeError(\n                    \"VIBE_TRADING_DEEPSEEK_ADAPTER=native requires langchain-deepseek\"\n                )\n\n    if ChatOpenAI is None:\n        raise RuntimeError(\"langchain-openai is not installed\")\n    # MiniMax requires temperature in (0.0, 1.0] — clamp to 0.01 when the\n    # default 0.0 is used to avoid an API validation error.\n    if provider == \"minimax\" and temperature <= 0.0:\n        temperature = 0.01\n    # Kimi reasoning models reject any temperature other than 1\n    # (\"invalid temperature: only 1 is allowed for this model\").\n    if (\n        caps.name in {\"moonshot\", \"kimi-coding\"}\n        and _KIMI_FORCED_TEMPERATURE_RE.match(name)\n        and temperature != 1.0\n    ):\n        logger.info(\"Forcing temperature=1.0 for %s (provider requirement)\", name)\n        temperature = 1.0\n    effort = get_env_config().llm.langchain_reasoning_effort.strip().lower()\n    # Moonshot/DeepSeek official APIs emit reasoning by default and ignore this field.\n    configured_responses_api = get_env_config().llm.langchain_use_responses_api\n    use_responses_api = uses_responses_api(provider, configured_responses_api)\n    creds = get_llm_credentials(provider, name)","sourceCodeStart":1440,"sourceCodeEnd":1476,"githubUrl":"https://github.com/HKUDS/Vibe-Trading/blob/80ffdda44c5c4db0dd84d70e051cca591cea67df/agent/src/providers/llm.py#L1440-L1476","documentation":"The generic OpenAI-compatible path in build_llm needs ChatOpenAI from langchain-openai, but the module import failed (symbol is None). This is the core dependency of the library's LLM stack, so no fallback exists.","triggerScenarios":"Any build_llm call for an OpenAI-compatible provider (openai, minimax, kimi, deepseek fallback, etc.) when langchain-openai is missing or its import raised.","commonSituations":"Broken virtualenv after dependency upgrades; langchain/openai package version conflict causing ImportError at module load; slim production image built without the agent extras.","solutions":["Install/repair: pip install langchain-openai","If already installed, diagnose the underlying import failure: python -c \"from langchain_openai import ChatOpenAI\" and fix the reported version conflict (often reinstall langchain-core to matching version)","Recreate the virtualenv if dependency resolution is beyond repair"],"exampleFix":"# before\nRuntimeError: langchain-openai is not installed\n\n# after\npip install -U langchain-openai langchain-core","handlingStrategy":"validation","validationCode":"try:\n    from langchain_openai import ChatOpenAI  # noqa: F401\nexcept ImportError as e:\n    raise SystemExit(f'Dependency check failed: {e}')","typeGuard":null,"tryCatchPattern":"try:\n    llm = build_llm()\nexcept RuntimeError as e:\n    if 'langchain-openai' in str(e):\n        logging.exception('install langchain-openai and restart'); raise","preventionTips":["Pin langchain-openai/langchain-core to compatible versions","Add an import smoke test to CI for the core LLM stack"],"tags":["openai","missing-dependency","pip","llm-provider"],"backgroundTag":"missing-dependency","analyzedSha":"80ffdda44c5c4db0dd84d70e051cca591cea67df","analyzedAt":"2026-08-28T12:46:38.989Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}