{"record":{"id":"fd00f0bc3362b478","repo":"run-llama/llama_index","slug":"unknown-chat-mode-chat-mode","errorCode":null,"errorMessage":"Unknown chat mode: {chat_mode}","messagePattern":"Unknown chat mode: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"llama-index-core/llama_index/core/indices/base.py","lineNumber":591,"sourceCode":"\n        elif chat_mode in [ChatMode.CONDENSE_PLUS_CONTEXT, ChatMode.BEST]:\n            from llama_index.core.chat_engine import CondensePlusContextChatEngine\n\n            return CondensePlusContextChatEngine.from_defaults(\n                retriever=self.as_retriever(**kwargs),\n                llm=llm,\n                **kwargs,\n            )\n\n        elif chat_mode == ChatMode.SIMPLE:\n            from llama_index.core.chat_engine import SimpleChatEngine\n\n            return SimpleChatEngine.from_defaults(\n                llm=llm,\n                **kwargs,\n            )\n        else:\n            raise ValueError(f\"Unknown chat mode: {chat_mode}\")\n\n\n# legacy\nBaseGPTIndex = BaseIndex\n","sourceCodeStart":573,"sourceCodeEnd":596,"githubUrl":"https://github.com/run-llama/llama_index/blob/afd0fef371831f9bda13e5af7167cf4e981278ab/llama-index-core/llama_index/core/indices/base.py#L573-L596","documentation":"as_chat_engine dispatches on the chat_mode enum and falls through to ValueError(f\"Unknown chat mode: {chat_mode}\") when the value matches none of the supported branches (CONDENSE_QUESTION, CONDENSE_PLUS_CONTEXT, SIMPLE, CONTEXT, etc. — and the removed REACT/OPENAI are caught earlier with their own message). Note the message uses literal {chat_mode} formatting only if f-string interpolation is bypassed; normally the actual value appears.","triggerScenarios":"Passing an invalid string like chat_mode='condense' (the enum member name is CONDENSE_QUESTION); passing a stale enum value removed in an upgrade; passing a value from a different library's ChatMode enum.","commonSituations":"Typos or wrong casing in chat_mode strings; mixing ChatMode enums from different llama-index module paths across versions; hallucinated mode names copied from outdated snippets.","solutions":["Import the enum and use its members: from llama_index.core.chat_engine import ChatMode; chat_mode=ChatMode.CONDENSE_QUESTION.","Check the ChatMode enum definition for your installed version to see available modes.","If you intended an agent-style chat, migrate to agent.workflow classes (see error 167).","Omit chat_mode entirely to use the default (CONDENSE_QUESTION)."],"exampleFix":"# before\nengine = index.as_chat_engine(chat_mode=\"condense\")  # Unknown chat mode\n\n# after\nfrom llama_index.core.chat_engine import ChatMode\nengine = index.as_chat_engine(chat_mode=ChatMode.CONDENSE_QUESTION)","handlingStrategy":"validation","validationCode":"from llama_index.core.chat_engine import ChatMode\nvalid = set(ChatMode)\nif chat_mode not in valid:\n    raise ValueError(f\"chat_mode must be one of {sorted(m.name for m in valid)}\")","typeGuard":"def is_valid_chat_mode(mode) -> bool:\n    from llama_index.core.chat_engine import ChatMode\n    return mode in set(ChatMode)","tryCatchPattern":"try:\n    engine = index.as_chat_engine(chat_mode=chat_mode)\nexcept ValueError as e:\n    if \"Unknown chat mode\" in str(e):\n        engine = index.as_chat_engine()  # fall back to default mode\n    else:\n        raise","preventionTips":["Always pass ChatMode enum members, not hand-typed strings.","Log the available ChatMode values when surfacing mode pickers in UIs."],"tags":["chat-engine","enum","validation","dispatch"],"backgroundTag":null,"analyzedSha":"afd0fef371831f9bda13e5af7167cf4e981278ab","analyzedAt":"2026-08-15T05:42:58.429Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}