FujiwaraChoki/MoneyPrinterV2 · error · RuntimeError

No Ollama model selected. Call select_model() first or pass

Error message

No Ollama model selected. Call select_model() first or pass model_name.

What it means

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.

Source

Thrown at src/llm_provider.py:54

    Returns the currently selected model, or None if none has been selected.
    """
    return _selected_model


def generate_text(prompt: str, model_name: str = None) -> str:
    """
    Generates text using the local Ollama server.

    Args:
        prompt (str): User prompt
        model_name (str): Optional model name override

    Returns:
        response (str): Generated text
    """
    model = model_name or _selected_model
    if not model:
        raise RuntimeError(
            "No Ollama model selected. Call select_model() first or pass model_name."
        )

    response = _client().chat(
        model=model,
        messages=[{"role": "user", "content": prompt}],
    )

    return response["message"]["content"].strip()

View on GitHub (pinned to 5192af8eca)

Solutions

  1. Call select_model('llama3') (or your model) once at startup before generate_text
  2. Or pass model_name explicitly: generate_text(prompt, model_name='llama3')
  3. Persist/restore the selected model in config so restarts keep it
  4. Add a startup assertion that _selected_model is set

Example fix

# before
text = generate_text(prompt)
# after
from src import llm_provider
llm_provider.select_model("llama3")
text = llm_provider.generate_text(prompt)
# or
text = llm_provider.generate_text(prompt, model_name="llama3")
Defensive patterns

Strategy: validation

Validate before calling

from src import llm_provider
if not (llm_provider._selected_model or explicit_model):
    llm_provider.select_model("llama3")

Type guard

def has_model_selected() -> bool:
    from src import llm_provider
    return bool(llm_provider._selected_model)

Try / catch

try:
    text = llm_provider.generate_text(prompt)
except RuntimeError as e:
    if "No Ollama model" in str(e):
        llm_provider.select_model("llama3")
        text = llm_provider.generate_text(prompt)

Prevention

When it happens

Trigger: 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.

Common situations: 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.


AI-assisted analysis of FujiwaraChoki/MoneyPrinterV2@5192af8eca (2026-08-28). Data as JSON: /api/errors/70456f44b29b801c. Report an issue: GitHub.