From b599c9eb8a4a5d1526c14ebdb02dd431a4ca99af Mon Sep 17 00:00:00 2001 From: dschlueter Date: Tue, 17 Feb 2026 22:56:02 +0100 Subject: [PATCH] Fix default model, increase timeout, improve multi-column prompt - Change default text-LLM from llama3 (not installed) to gemma3:12b - Increase LLM timeout from 120s to 300s (large models need longer) - Add explicit multi-column layout instruction to vision prompt to prevent skipping columns on dense CD back-cover tracklists Co-Authored-By: Claude Sonnet 4.5 --- src/musiksammlung/cli.py | 4 ++-- src/musiksammlung/llm_parser.py | 4 ++-- src/musiksammlung/vision_llm.py | 3 +++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/musiksammlung/cli.py b/src/musiksammlung/cli.py index afab349..820d078 100644 --- a/src/musiksammlung/cli.py +++ b/src/musiksammlung/cli.py @@ -90,7 +90,7 @@ def scan( ), languages: str = typer.Option("deu+eng", "--lang", "-l", help="OCR-Sprachen"), backend: str = typer.Option("ollama", "--backend", "-b", help="LLM-Backend"), - model: str = typer.Option("llama3", "--model", "-m", help="Text-LLM-Modell"), + model: str = typer.Option("gemma3:12b", "--model", "-m", help="Text-LLM-Modell"), base_url: str = typer.Option( "http://localhost:11434", "--url", help="LLM-API-URL" ), @@ -262,7 +262,7 @@ def process( ), languages: str = typer.Option("deu+eng", "--lang", "-l"), backend: str = typer.Option("ollama", "--backend", "-b"), - model: str = typer.Option("llama3", "--model", "-m"), + model: str = typer.Option("gemma3:12b", "--model", "-m"), base_url: str = typer.Option("http://localhost:11434", "--url"), dry_run: bool = typer.Option(False, "--dry-run"), ) -> None: diff --git a/src/musiksammlung/llm_parser.py b/src/musiksammlung/llm_parser.py index 1b0a98e..c69118c 100644 --- a/src/musiksammlung/llm_parser.py +++ b/src/musiksammlung/llm_parser.py @@ -47,7 +47,7 @@ def _call_ollama(text: str, model: str, base_url: str) -> str: ], "stream": False, }, - timeout=120.0, + timeout=300.0, ) response.raise_for_status() return response.json()["message"]["content"] @@ -71,7 +71,7 @@ def _call_openai_compatible( {"role": "user", "content": text}, ], }, - timeout=120.0, + timeout=300.0, ) response.raise_for_status() return response.json()["choices"][0]["message"]["content"] diff --git a/src/musiksammlung/vision_llm.py b/src/musiksammlung/vision_llm.py index 171d23e..1ac84a4 100644 --- a/src/musiksammlung/vision_llm.py +++ b/src/musiksammlung/vision_llm.py @@ -28,6 +28,9 @@ WICHTIG: - Wenn "CD 1", "CD 2", "Disc 1" etc. sichtbar sind, erstelle mehrere Einträge in "discs". - Ohne Disc-Angabe: eine Disc mit disc_number=1. - Lasse Zeitangaben (z.B. "3:12") und Interpretenangaben pro Track weg. +- MEHRSPALTIGE LAYOUTS: CD-Rückseiten haben oft 2, 3 oder 4 Spalten nebeneinander. + Lies ALLE Spalten vollständig von oben nach unten, bevor du zur nächsten Spalte gehst. + Überspringen oder Auslassen von Spalten ist ein häufiger Fehler — lies jede Spalte komplett. Antworte NUR mit dem JSON, ohne Erklärung. Beispiel: