ki: return_model-Flag + ki_model in wiki_rassen; Evaluator filtert Claude-Einträge raus
This commit is contained in:
parent
d80abf07e5
commit
eea1de6d95
4 changed files with 14 additions and 5 deletions
|
|
@ -917,6 +917,7 @@ def _migrate(conn_factory):
|
||||||
("vorkommen_de", "TEXT"),
|
("vorkommen_de", "TEXT"),
|
||||||
("wikipedia_url_de","TEXT"),
|
("wikipedia_url_de","TEXT"),
|
||||||
("ki_enriched", "INTEGER DEFAULT 0"),
|
("ki_enriched", "INTEGER DEFAULT 0"),
|
||||||
|
("ki_model", "TEXT"),
|
||||||
]:
|
]:
|
||||||
try:
|
try:
|
||||||
conn.execute(f"ALTER TABLE wiki_rassen ADD COLUMN {col} {typedef}")
|
conn.execute(f"ALTER TABLE wiki_rassen ADD COLUMN {col} {typedef}")
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,7 @@ async def complete(
|
||||||
requires_premium: bool = False,
|
requires_premium: bool = False,
|
||||||
user_is_premium: bool = False,
|
user_is_premium: bool = False,
|
||||||
json_mode: bool = False,
|
json_mode: bool = False,
|
||||||
|
return_model: bool = False,
|
||||||
) -> str:
|
) -> str:
|
||||||
"""
|
"""
|
||||||
KI-Completion. Wählt automatisch den richtigen Backend.
|
KI-Completion. Wählt automatisch den richtigen Backend.
|
||||||
|
|
@ -99,18 +100,21 @@ async def complete(
|
||||||
|
|
||||||
# Cloud-Aufruf: nur wenn Premium UND cloud-Modus
|
# Cloud-Aufruf: nur wenn Premium UND cloud-Modus
|
||||||
if requires_premium and user_is_premium and KI_MODE == "cloud":
|
if requires_premium and user_is_premium and KI_MODE == "cloud":
|
||||||
return await _cloud_complete(prompt, system, max_tokens, json_mode)
|
text = await _cloud_complete(prompt, system, max_tokens, json_mode)
|
||||||
|
return (text, CLOUD_MODEL) if return_model else text
|
||||||
|
|
||||||
# Lokaler Aufruf: Entwicklung + Free-User
|
# Lokaler Aufruf: Entwicklung + Free-User
|
||||||
if KI_MODE in ("local", "cloud"):
|
if KI_MODE in ("local", "cloud"):
|
||||||
try:
|
try:
|
||||||
return await _local_complete(prompt, system, max_tokens, json_mode)
|
text = await _local_complete(prompt, system, max_tokens, json_mode)
|
||||||
|
return (text, LOCAL_MODEL) if return_model else text
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"Lokales KI-Modell nicht erreichbar: {e}")
|
logger.warning(f"Lokales KI-Modell nicht erreichbar: {e}")
|
||||||
# Cloud-Fallback: im cloud-Modus immer, sonst nur für Premium-User
|
# Cloud-Fallback: im cloud-Modus immer, sonst nur für Premium-User
|
||||||
if ANTHROPIC_KEY and (KI_MODE == "cloud" or (requires_premium and user_is_premium)):
|
if ANTHROPIC_KEY and (KI_MODE == "cloud" or (requires_premium and user_is_premium)):
|
||||||
logger.info("Fallback auf Cloud-KI.")
|
logger.info("Fallback auf Cloud-KI.")
|
||||||
return await _cloud_complete(prompt, system, max_tokens, json_mode)
|
text = await _cloud_complete(prompt, system, max_tokens, json_mode)
|
||||||
|
return (text, CLOUD_MODEL) if return_model else text
|
||||||
raise KIUnavailableError(
|
raise KIUnavailableError(
|
||||||
"KI-Modell momentan nicht erreichbar. Bitte später erneut versuchen."
|
"KI-Modell momentan nicht erreichbar. Bitte später erneut versuchen."
|
||||||
) from e
|
) from e
|
||||||
|
|
|
||||||
|
|
@ -228,11 +228,12 @@ async def enrich_breeds(limit: int = 10) -> int:
|
||||||
prompt = _PROMPT_TEMPLATE.format(name=name, herkunft=herkunft)
|
prompt = _PROMPT_TEMPLATE.format(name=name, herkunft=herkunft)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
raw = await complete(
|
raw, used_model = await complete(
|
||||||
prompt,
|
prompt,
|
||||||
system=_SYSTEM,
|
system=_SYSTEM,
|
||||||
max_tokens=600,
|
max_tokens=600,
|
||||||
requires_premium=False,
|
requires_premium=False,
|
||||||
|
return_model=True,
|
||||||
)
|
)
|
||||||
except KIUnavailableError as e:
|
except KIUnavailableError as e:
|
||||||
logger.warning("KI nicht verfügbar, Anreicherung abgebrochen: %s", e)
|
logger.warning("KI nicht verfügbar, Anreicherung abgebrochen: %s", e)
|
||||||
|
|
@ -258,6 +259,7 @@ async def enrich_breeds(limit: int = 10) -> int:
|
||||||
if "temperament" in updates:
|
if "temperament" in updates:
|
||||||
updates["temperament"] = translate_temperament(updates["temperament"])
|
updates["temperament"] = translate_temperament(updates["temperament"])
|
||||||
updates["ki_enriched"] = 1
|
updates["ki_enriched"] = 1
|
||||||
|
updates["ki_model"] = used_model
|
||||||
|
|
||||||
cols = ", ".join(f"{k}=?" for k in updates)
|
cols = ", ".join(f"{k}=?" for k in updates)
|
||||||
values = list(updates.values()) + [rasse_id]
|
values = list(updates.values()) + [rasse_id]
|
||||||
|
|
|
||||||
|
|
@ -62,9 +62,11 @@ async def evaluate_enrichment(sample_size: int = 20) -> dict:
|
||||||
"""SELECT name, beschreibung, vorkommen_de, groesse,
|
"""SELECT name, beschreibung, vorkommen_de, groesse,
|
||||||
gewicht_min_kg, gewicht_max_kg, lebensdauer,
|
gewicht_min_kg, gewicht_max_kg, lebensdauer,
|
||||||
aktivitaet, erfahrung, kinder_geeignet,
|
aktivitaet, erfahrung, kinder_geeignet,
|
||||||
wohnung_geeignet, temperament
|
wohnung_geeignet, temperament, ki_model
|
||||||
FROM wiki_rassen
|
FROM wiki_rassen
|
||||||
WHERE ki_enriched = 1
|
WHERE ki_enriched = 1
|
||||||
|
AND ki_model IS NOT NULL
|
||||||
|
AND ki_model NOT LIKE 'claude%'
|
||||||
ORDER BY RANDOM()
|
ORDER BY RANDOM()
|
||||||
LIMIT ?""",
|
LIMIT ?""",
|
||||||
(sample_size,),
|
(sample_size,),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue