{"record":{"id":"70456f44b29b801c","repo":"FujiwaraChoki/MoneyPrinterV2","slug":"no-ollama-model-selected-call-select-model-firs","errorCode":null,"errorMessage":"No Ollama model selected. Call select_model() first or pass model_name.","messagePattern":"No Ollama model selected\\. Call select_model\\(\\) first or pass model_name\\.","errorType":"error_code","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"src/llm_provider.py","lineNumber":54,"sourceCode":"    Returns the currently selected model, or None if none has been selected.\n    \"\"\"\n    return _selected_model\n\n\ndef generate_text(prompt: str, model_name: str = None) -> str:\n    \"\"\"\n    Generates text using the local Ollama server.\n\n    Args:\n        prompt (str): User prompt\n        model_name (str): Optional model name override\n\n    Returns:\n        response (str): Generated text\n    \"\"\"\n    model = model_name or _selected_model\n    if not model:\n        raise RuntimeError(\n            \"No Ollama model selected. Call select_model() first or pass model_name.\"\n        )\n\n    response = _client().chat(\n        model=model,\n        messages=[{\"role\": \"user\", \"content\": prompt}],\n    )\n\n    return response[\"message\"][\"content\"].strip()\n","sourceCodeStart":36,"sourceCodeEnd":64,"githubUrl":"https://github.com/FujiwaraChoki/MoneyPrinterV2/blob/5192af8eca97759f941834b947e3ceb209da0649/src/llm_provider.py#L36-L64","documentation":"RuntimeError from llm_provider.generate_text when both the model_name argument and the module-level _selected_model are empty, so there is no Ollama model to send the chat request to. It is a usage/ordering error: select_model() (or an explicit model_name) must precede generation.","triggerScenarios":"Calling generate_text(prompt) without ever calling select_model() earlier in the process, or after _selected_model was reset to None/empty; equally affects callers generate_response and generate_post.","commonSituations":"New integration forgetting the one-time select_model() bootstrap, model selection step skipped on an error path, or config key for the default model missing so selection silently no-ops.","solutions":["Call select_model('llama3') (or your model) once at startup before generate_text","Or pass model_name explicitly: generate_text(prompt, model_name='llama3')","Persist/restore the selected model in config so restarts keep it","Add a startup assertion that _selected_model is set"],"exampleFix":"# before\ntext = generate_text(prompt)\n# after\nfrom src import llm_provider\nllm_provider.select_model(\"llama3\")\ntext = llm_provider.generate_text(prompt)\n# or\ntext = llm_provider.generate_text(prompt, model_name=\"llama3\")","handlingStrategy":"validation","validationCode":"from src import llm_provider\nif not (llm_provider._selected_model or explicit_model):\n    llm_provider.select_model(\"llama3\")","typeGuard":"def has_model_selected() -> bool:\n    from src import llm_provider\n    return bool(llm_provider._selected_model)","tryCatchPattern":"try:\n    text = llm_provider.generate_text(prompt)\nexcept RuntimeError as e:\n    if \"No Ollama model\" in str(e):\n        llm_provider.select_model(\"llama3\")\n        text = llm_provider.generate_text(prompt)","preventionTips":["Call select_model() once during app bootstrap","Pass model_name explicitly in ad-hoc scripts","Assert model selection in preflight before batch generation"],"tags":["ollama","llm","initialization","missing-model"],"backgroundTag":"missing-initialization-state","analyzedSha":"5192af8eca97759f941834b947e3ceb209da0649","analyzedAt":"2026-08-28T10:31:46.474Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}