feat: Aufgaben mit Abbildungen (docling-Markdown), mit Gegenprobe beim Ablesen
Eingebettete Base64-Bilder und Bilddateien werden aus dem Aufgabentext gelöst und nur der Verstehensstufe als Bild übergeben; sie überträgt jede Abbildung in Text. Eine zweite, unabhängige Lesung wird Zahl für Zahl verglichen (bei Abweichung entscheidet eine dritte, sonst reliable=False). Alle weiteren Stufen rechnen mit der Übertragung, der Report zeigt Original und Übertragung nebeneinander. LLM_MODEL_UNDERSTANDING wählt das Bildmodell. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
915c79c1c8
commit
b07dd16143
1 changed files with 484 additions and 36 deletions
|
|
@ -24,13 +24,16 @@ EINFACHES_VERSTAENDNIS = TaskUnderstanding(
|
|||
class FakeSession:
|
||||
"""Liefert vorgegebene Antworten je Antwort-Typ in fester Reihenfolge."""
|
||||
|
||||
def __init__(self, specs, reviews, codes=(), understandings=None):
|
||||
def __init__(self, specs, reviews, codes=(), understandings=None, readings=()):
|
||||
from core.model_schema import FigureReading
|
||||
self.queues = {
|
||||
OptimizationModelSpecification: list(specs),
|
||||
AssumptionReview: list(reviews),
|
||||
SolverCode: list(codes),
|
||||
TaskUnderstanding: list(understandings if understandings is not None else []),
|
||||
FigureReading: list(readings),
|
||||
}
|
||||
self.contents = [] # (Stufe, Inhalt der letzten Nachricht) – prüft, wer Bilder zu sehen bekommt
|
||||
self.usage = LLMUsage(model="fake", provider="fake")
|
||||
self.calls = {kind: 0 for kind in self.queues}
|
||||
self.steps = []
|
||||
|
|
@ -42,6 +45,7 @@ class FakeSession:
|
|||
|
||||
def create(self, response_model, messages, step="unbenannt"):
|
||||
self.letzter_prompt = messages[-1]["content"]
|
||||
self.contents.append((step, messages[-1]["content"]))
|
||||
if step == "Extraktion":
|
||||
self.tasks.append(messages[-1]["content"])
|
||||
self.calls[response_model] += 1
|
||||
|
|
|
|||
Loading…
Reference in a new issue