{"record":{"id":"d5fd703b81ddf358","repo":"HKUDS/Vibe-Trading","slug":"vibe-trading-deepseek-adapter-native-requires-lang","errorCode":null,"errorMessage":"VIBE_TRADING_DEEPSEEK_ADAPTER=native requires langchain-deepseek","messagePattern":"VIBE_TRADING_DEEPSEEK_ADAPTER=native requires langchain-deepseek","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"agent/src/providers/llm.py","lineNumber":1453,"sourceCode":"        return _build_anthropic(\n            model=name,\n            temperature=temperature,\n            callbacks=callbacks,\n            effort=get_env_config().llm.langchain_reasoning_effort.strip().lower(),\n        )\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","sourceCodeStart":1435,"sourceCodeEnd":1471,"githubUrl":"https://github.com/HKUDS/Vibe-Trading/blob/80ffdda44c5c4db0dd84d70e051cca591cea67df/agent/src/providers/llm.py#L1435-L1471","documentation":"The DeepSeek provider was explicitly configured to use its native adapter (VIBE_TRADING_DEEPSEEK_ADAPTER=native), but the native adapter construction returned None, meaning langchain-deepseek is unavailable. Because the user demanded native mode, the library refuses to silently fall back to ChatOpenAI.","triggerScenarios":"Setting VIBE_TRADING_DEEPSEEK_ADAPTER=native with provider=deepseek while langchain-deepseek is not installed or fails to import; native adapter build helper returns None for a non-anthropic provider.","commonSituations":"Opting into the native DeepSeek adapter for newer model support without adding the dependency; a partial upgrade where the adapter module exists but its dependency is missing.","solutions":["Install langchain-deepseek: pip install langchain-deepseek","Or unset/relax the pin: remove VIBE_TRADING_DEEPSEEK_ADAPTER (or set it to the fallback mode) so the OpenAI-compatible path is used","Verify: python -c \"import langchain_deepseek\""],"exampleFix":"# before\nexport VIBE_TRADING_DEEPSEEK_ADAPTER=native\n# (langchain-deepseek not installed)\n\n# after\npip install langchain-deepseek\nexport VIBE_TRADING_DEEPSEEK_ADAPTER=native","handlingStrategy":"validation","validationCode":"if os.environ.get('VIBE_TRADING_DEEPSEEK_ADAPTER') == 'native':\n    import langchain_deepseek  # raises ImportError early if missing","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only set adapter=native when the dependency is pinned in your lockfile","Document the extra dependency wherever the env var is documented"],"tags":["deepseek","missing-dependency","configuration","llm-provider"],"backgroundTag":"missing-optional-dependency","analyzedSha":"80ffdda44c5c4db0dd84d70e051cca591cea67df","analyzedAt":"2026-08-28T12:46:38.989Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}