{"record":{"id":"02cb92fbb77fad86","repo":"khoj-ai/khoj","slug":"invalid-conversation-settings-configure-some-chat","errorCode":null,"errorMessage":"Invalid conversation settings. Configure some chat model on server.","messagePattern":"Invalid conversation settings\\. Configure some chat model on server\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"critical","filePath":"src/khoj/database/adapters/__init__.py","lineNumber":1752,"sourceCode":"            )\n        else:\n            chat_model = await ConversationAdapters.aget_chat_model(user)\n\n        if chat_model is None:\n            chat_model = await ConversationAdapters.aget_default_chat_model()\n\n        if (\n            chat_model.model_type\n            in [\n                ChatModel.ModelType.ANTHROPIC,\n                ChatModel.ModelType.OPENAI,\n                ChatModel.ModelType.GOOGLE,\n            ]\n        ) and chat_model.ai_model_api:\n            return chat_model\n\n        else:\n            raise ValueError(\"Invalid conversation settings. Configure some chat model on server.\")\n\n    @staticmethod\n    async def aget_text_to_image_model_config():\n        return await TextToImageModelConfig.objects.filter().prefetch_related(\"ai_model_api\").afirst()\n\n    @staticmethod\n    def get_text_to_image_model_config():\n        return TextToImageModelConfig.objects.filter().first()\n\n    @staticmethod\n    def get_text_to_image_model_options():\n        return TextToImageModelConfig.objects.all()\n\n    @staticmethod\n    def get_user_text_to_image_model_config(user: KhojUser):\n        config = UserTextToImageModelConfig.objects.filter(user=user).first()\n        if not config:\n            default_config = ConversationAdapters.get_text_to_image_model_config()","sourceCodeStart":1734,"sourceCodeEnd":1770,"githubUrl":"https://github.com/khoj-ai/khoj/blob/ae229ca894c0b80ad84664afcfdde523b5e87057/src/khoj/database/adapters/__init__.py#L1734-L1770","documentation":"ConversationAdapters.get_chat_model (or sibling chat-model resolution) raises ValueError when the stored chat model config does not match any supported provider (offline/OpenAI/Anthropic/Google) or lacks an ai_model_api reference. It means the server's chat model configuration is unusable.","triggerScenarios":"ChatModelConfig row with an unexpected model_type, or a row whose ai_model_api_id is null; also when no default chat model is configured at all and fallback resolution fails.","commonSituations":"Fresh installs without a configured chat model; DB rows edited manually or left behind by older khoj versions; API key config deleted while the model row remains.","solutions":["Open server admin config and (re)configure a valid chat model (e.g. set a default model with its AI model API key/endpoint).","Verify the ChatModelConfig row's model_type is one of the supported provider values and ai_model_api is set.","If upgrading khoj, re-run setup/migrations so default chat model options are seeded."],"exampleFix":"# before\nchat_model = ConversationAdapters.get_chat_model()  # ValueError\n\n# after\nfrom khoj.database.adapters import ConversationAdapters\nfrom khoj.database.models import ChatModel, AiModelApi\napi, _ = AiModelApi.objects.get_or_create(api_key=API_KEY, name=\"OpenAI\")\nChatModel.objects.get_or_create(name=\"gpt-4o\", model_type=ChatModel.ModelType.OPENAI, ai_model_api=api)\nchat_model = ConversationAdapters.get_chat_model()","handlingStrategy":"fallback","validationCode":"from khoj.database.models import ChatModel, AiModelApi\n\ndef chat_model_configured() -> bool:\n    return ChatModel.objects.exclude(ai_model_api=None).exists() and AiModelApi.objects.exists()\n\nif not chat_model_configured():\n    # run setup wizard / admin config before serving chat","typeGuard":null,"tryCatchPattern":"try:\n    chat_model = ConversationAdapters.get_chat_model()\nexcept ValueError as e:\n    if \"Configure some chat model\" in str(e):\n        return JSONResponse({\"detail\": \"Server chat model not configured\"}, status_code=503)\n    raise","preventionTips":["Complete server setup (admin panel) before exposing chat endpoints.","After upgrades, verify ChatModelConfig rows have valid model_type and ai_model_api.","Add a startup health check that a usable chat model resolves."],"tags":["khoj","chat-model","configuration","server-setup","django"],"backgroundTag":"missing-required-configuration","analyzedSha":"ae229ca894c0b80ad84664afcfdde523b5e87057","analyzedAt":"2026-08-27T03:32:41.843Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}