282 lines
17 KiB
YAML
282 lines
17 KiB
YAML
# User-visible chat, SSE and stream lifecycle messages.
|
|
# Protocol tokens, status enum values and debug comments intentionally stay in code.
|
|
parameters:
|
|
retriex.chat_messages.config:
|
|
sse:
|
|
empty_prompt: 'Bitte gib eine Frage ein.'
|
|
job_create_failed: 'Der Antwort-Job konnte nicht erstellt werden: {error}'
|
|
job_missing: 'Der Antwort-Job wurde nicht gefunden.'
|
|
stream_interrupted: 'Die Verbindung zum Antwort-Stream wurde unterbrochen.'
|
|
stream_aborted: 'Stream abgebrochen: {error}'
|
|
stream_aborted_event: '❌ {message}'
|
|
unknown_stream_error: 'Unbekannter Streamfehler.'
|
|
history_failure: 'Systemhinweis: Antwort konnte nicht abgeschlossen werden. Ursache: {message}'
|
|
fatal_server_error: '❌ Fataler Serverfehler: {message} in {file}:{line}'
|
|
fatal_unknown_error: 'unknown error'
|
|
fatal_unknown_file: 'unknown file'
|
|
fatal_unknown_line: '?'
|
|
stream_failed_with_message: 'Der Antwort-Stream ist fehlgeschlagen: {message}'
|
|
stream_failed_retry: 'Der Antwort-Stream ist fehlgeschlagen. Bitte sende die Anfrage erneut.'
|
|
stream_interrupted_retry: 'Der Antwort-Stream wurde durch einen Verbindungsabbruch unterbrochen. Bitte sende die Anfrage erneut, falls die Antwort unvollständig ist.'
|
|
job_stale: 'Der Antwort-Job liefert seit längerer Zeit keine neuen Daten. Der Stream wurde beendet, damit die Oberfläche nicht hängen bleibt.'
|
|
claim:
|
|
expired: 'Der Antwort-Job ist abgelaufen. Bitte sende die Anfrage erneut.'
|
|
invalid: 'Der Antwort-Job ist ungültig. Bitte sende die Anfrage erneut.'
|
|
lock_failed: 'Der Antwort-Job ist gerade gesperrt. Bitte sende die Anfrage erneut, falls keine Antwort erscheint.'
|
|
running: 'Der Antwort-Stream läuft bereits oder wurde nach einem Verbindungsabbruch erneut geöffnet. Bitte sende die Anfrage erneut, falls die Antwort unvollständig ist.'
|
|
interrupted: 'Der Antwort-Stream wurde durch einen Verbindungsabbruch unterbrochen. Bitte sende die Anfrage erneut, falls die Antwort unvollständig ist.'
|
|
completed: 'Der Antwort-Stream wurde bereits abgeschlossen. Bitte sende eine neue Anfrage, wenn du eine weitere Antwort brauchst.'
|
|
missing: 'Der Antwort-Job wurde nicht gefunden. Falls deine Verbindung kurz unterbrochen war, sende die Anfrage bitte erneut.'
|
|
storage:
|
|
directory_create_failed: 'Stream job directory could not be created.'
|
|
write_failed: 'Stream job could not be written.'
|
|
|
|
frontend:
|
|
document:
|
|
title: 'AI Agent'
|
|
ui:
|
|
header_title: 'KI-Agent'
|
|
footer_disclaimer: 'powered by mitho® | RetrieX kann fehlerhafte Ausgaben machen. RetrieX verwendet alle Daten zum Trainieren seiner Modelle.'
|
|
buttons:
|
|
clear: 'Diesen Chat löschen'
|
|
send: 'Send'
|
|
abort: 'Abbrechen'
|
|
options:
|
|
aria_label: 'Chat-Anzeigeoptionen'
|
|
status_info: 'Statusinfo anzeigen'
|
|
input:
|
|
prompt_placeholder: 'Stelle eine Frage'
|
|
assistant:
|
|
loader: 'Antwort wird vorbereitet…'
|
|
aborted: '[aborted]'
|
|
history_cleared: 'History cleared.'
|
|
source_chips:
|
|
live_shop_data: 'Live-Shopdaten'
|
|
run_meta:
|
|
completed_title: 'Abgeschlossen'
|
|
interrupted_title: 'Antwort wurde unterbrochen'
|
|
completed_status: 'Status: abgeschlossen'
|
|
interrupted_status: 'Status: unterbrochen'
|
|
completed_empty_source: 'keine belastbare Datenbasis'
|
|
interrupted_empty_source: 'nicht vollständig geprüft'
|
|
pending_source_marker: 'wird geprüft'
|
|
stream:
|
|
incomplete: 'Der Antwort-Stream wurde beendet, bevor die Antwort abgeschlossen werden konnte.'
|
|
job_not_found_retry: 'Der Antwort-Job wurde nicht mehr gefunden. Bitte sende die Anfrage erneut.'
|
|
failed_retry: 'Der Antwort-Stream ist fehlgeschlagen. Bitte sende die Anfrage erneut.'
|
|
interrupted_retry: 'Der Antwort-Stream wurde durch einen Verbindungsabbruch unterbrochen. Bitte sende die Anfrage erneut, falls die Antwort unvollständig ist.'
|
|
missing_retry: 'Der Antwort-Job wurde nicht gefunden. Bitte sende die Anfrage erneut.'
|
|
stale_retry: 'Der Antwort-Job liefert seit längerer Zeit keine neuen Daten. Der Stream wurde beendet.'
|
|
connection_interrupted_retry: 'Die Verbindung zum Antwort-Stream wurde unterbrochen. Bitte sende die Anfrage erneut, falls die Antwort unvollständig ist.'
|
|
guards:
|
|
no_concrete_shop_response_markers:
|
|
- 'keine konkrete shop-suchanfrage erkannt'
|
|
- 'shop-suche noch nicht belastbar auflösen'
|
|
- 'shop-suche noch nicht belastbar aufloesen'
|
|
|
|
agent:
|
|
input_normalization:
|
|
heartbeat_message: Ich optimiere die Anfrage…
|
|
messages:
|
|
empty_prompt: ❌ Empty prompt.
|
|
analyze_request: Ich analysiere deine Anfrage...
|
|
check_internet_sources: Ich prüfe auf Internetquellen...
|
|
retrieve_knowledge: Ich hole relevante Daten aus meinem RAG-Wissen...
|
|
optimize_search: Ich optimiere die Recherche...
|
|
no_concrete_shop_query: Ich kann die Shop-Suche noch nicht belastbar auflösen. Bitte nenne das Produkt, den Messparameter oder das Zubehör etwas konkreter.
|
|
fetch_search_data_template: 'Ich rufe Recherchedaten ab (type: %s)'
|
|
analyze_all_information: Ich analysiere alle Informationen...
|
|
thinking_while_streaming: Denke nach...
|
|
no_llm_data_received: ❌ Es wurden keine Daten vom LLM empfangen.
|
|
shop_repair_check: Erweiterte Shopsuche wird geprüft…
|
|
shop_query_optimization_heartbeat: Shop-Suchanfrage wird optimiert…
|
|
generic_internal_error: ❌ Bei der Verarbeitung der Anfrage ist ein interner Fehler aufgetreten.
|
|
debug_internal_error_prefix: '❌ Interner Fehler: '
|
|
technical_error_detail_template: '<br><small>Technischer Fehler: {message}</small>'
|
|
final_answer_guard:
|
|
truncation_message: |2-
|
|
|
|
Hinweis: Die Antwort wurde gekürzt, weil eine wiederholte oder zu lange Ausgabe erkannt wurde. Bitte starten Sie bei Bedarf eine präzisere Nachfrage.
|
|
shop_runtime:
|
|
direct_answer:
|
|
intro: ''
|
|
no_results: ''
|
|
sorted_by_length_note: ''
|
|
min_length_filter_note: ''
|
|
max_length_filter_note: ''
|
|
no_llm_fallback:
|
|
messages:
|
|
shop_only: 'Ich finde dazu im RAG-Wissen keine belastbare Fachinformation. Aus den Shopdaten ergeben sich folgende Treffer; technische Eignung bitte prüfen:'
|
|
shop_with_knowledge: 'Es liegen RAG-/Kontexttreffer und Shopdaten vor. Ohne LLM leite ich daraus keine technische Eignung ab. Die Shopdaten zeigen folgende Treffer; technische Eignung bitte prüfen:'
|
|
accessory_only_for_main_device: Die Shop-Treffer wirken wie Zubehör/Verbrauchsmaterial und nicht wie eine angefragte Messanlage oder ein Hauptgerät. Ich werte sie deshalb nicht als passende Hauptlösung.
|
|
escalation: Für eine verbindliche Produktauswahl sollte der konkrete Anwendungsfall durch Vertrieb oder Support geprüft werden.
|
|
knowledge_only: Ich habe Treffer im RAG-Wissen gefunden, aber ohne LLM kann ich daraus keine belastbare fachliche Antwort synthetisieren. Ich gebe deshalb keine sichere Produktaussage aus. Bitte aktiviere das LLM oder konkretisiere die Frage für eine gezielte Prüfung.
|
|
no_data: Ich finde dazu keine belastbaren Daten in den vorliegenden Quellen. Bitte nenne Produkt, Messparameter, Zubehör oder Anwendungsfall genauer.
|
|
no_shop_results_with_knowledge: Ich finde RAG-/Kontexttreffer, aber keine passenden Shop-Treffer zur aktuellen Suchanfrage. Das ist keine Aussage, dass es das Produkt nicht gibt. Ohne LLM gebe ich keine technische Negativaussage aus; bitte prüfe den Suchbegriff oder den Anwendungsfall gezielter.
|
|
no_shop_results_no_knowledge: Ich finde weder belastbares RAG-Wissen noch passende Shop-Treffer zur aktuellen Suchanfrage. Das ist keine sichere Negativaussage. Bitte nenne Produkt, Messparameter oder Zubehör konkreter.
|
|
shop_unavailable_with_knowledge: Live-Shopdaten konnten nicht geladen werden. Ich kann keine Aussage zu aktueller Verfügbarkeit, Preis oder Shop-Portfolio treffen. Wenn das RAG-Wissen einen direkten Fachbeleg enthält, wird die fachliche Antwort davon getrennt betrachtet.
|
|
shop_unavailable_no_knowledge: Live-Shopdaten konnten nicht geladen werden und die RAG-Treffer enthalten keinen direkten Fachbeleg zur Anfrage. Ich kann daraus keine verlässliche Produkt-, Verfügbarkeits- oder Portfolioaussage ableiten.
|
|
product_fields:
|
|
unreadable_results_message: '- Es wurden Shop-Treffer übergeben, aber keine lesbaren Produktdaten gefunden.'
|
|
unnamed_product: Unbenanntes Shop-Produkt
|
|
product_number_template: Art.-Nr. {value}
|
|
manufacturer_template: 'Hersteller: {value}'
|
|
price_template: 'Preis: {value}'
|
|
availability_template: 'Verfügbar: {value}'
|
|
availability_yes: ja
|
|
availability_no: nein
|
|
url_template: 'URL: {value}'
|
|
incompatible_role_note: 'Hinweis: Zubehör/Verbrauchsartikel; nicht als Messanlage/Gerät bestätigt'
|
|
line_template: '{index}. {parts}'
|
|
separator: ' | '
|
|
unavailable_reason_template: '{message} Ursache: {reason}'
|
|
production_ui:
|
|
stage_labels:
|
|
preparing_answer: Antwort wird vorbereitet
|
|
shop_routing_detected: Shop-Routing erkannt
|
|
rag_searched: RAG-Wissen wurde durchsucht
|
|
shop_search_preparing: Shop-Suche wird vorbereitet
|
|
more_context_needed: Mehr Kontext nötig
|
|
shop_search_running: Shop wird durchsucht
|
|
shop_unavailable: Shopdaten nicht verfügbar
|
|
shop_completed: Shop-Suche abgeschlossen
|
|
answer_generating: Antwort wird generiert
|
|
completed: Abgeschlossen
|
|
interrupted: Antwort wurde unterbrochen
|
|
confidence_labels:
|
|
checking_evidence: Beleglage wird geprüft
|
|
checking_shop_data: Shopdaten werden geprüft
|
|
more_context_needed: mehr Kontext nötig
|
|
interrupted: nicht abgeschlossen
|
|
direct: fachlich belegt
|
|
aggregate_missing: geprüfte Quellen, keine passende Zählinformation
|
|
weak: RAG-Näherungstreffer, kein direkter Fachbeleg
|
|
default: noch keine belastbaren Treffer
|
|
direct_shop_check: fachlich belegt; Shopdaten werden geprüft
|
|
aggregate_missing_shop_check: geprüfte Quellen ohne Zählinformation; Shopdaten werden geprüft
|
|
weak_shop_check: RAG-Näherungstreffer; Shopdaten werden geprüft
|
|
default_shop_check: Shopdaten werden geprüft
|
|
aggregate_missing_shop_unavailable: geprüfte Quellen ohne Zählinformation; Shopdaten nicht verfügbar
|
|
aggregate_missing_no_count: geprüfte Quellen, keine passende Zählinformation
|
|
shop_unavailable_with_knowledge: fachlich belegt; Shopdaten nicht verfügbar
|
|
shop_unavailable: Shopdaten nicht verfügbar
|
|
rag_and_shop: RAG + Shopdaten
|
|
shop_only: nur Shopdaten
|
|
rag_no_shop_hits: RAG-Wissen, keine Shop-Treffer
|
|
no_reliable_data: keine belastbaren Daten
|
|
no_reliable_hits: noch keine belastbaren Treffer
|
|
text:
|
|
live_shop_source_plain_label: Live-Shopdaten
|
|
run_status_eyebrow: RetrieX-Status
|
|
evidence_prefix: 'Beleglage: '
|
|
data_basis_label: Datenbasis
|
|
data_basis_empty_completed: keine belastbare Datenbasis
|
|
data_basis_empty_running: wird geprüft
|
|
rag_hits_checking: 'RAG-Treffer: wird geprüft'
|
|
shop_hits_loading: 'Shop-Treffer: wird geladen'
|
|
shop_hits_unavailable: 'Shop-Treffer: nicht verfügbar'
|
|
shop_hits_no_query: 'Shop-Treffer: keine Suchquery'
|
|
shop_hits_not_requested: 'Shop-Treffer: nicht angefragt'
|
|
status_completed: 'Status: abgeschlossen'
|
|
status_running: 'Status: läuft'
|
|
shop_results_eyebrow: Shop-Ergebnisse
|
|
shop_results_title: Shop-Ergebnisse
|
|
evaluated_query_label: Ausgewertete Suchquery
|
|
unnamed_product: Unbenanntes Produkt
|
|
field_not_provided: nicht übermittelt
|
|
product_number_label: Artikelnummer
|
|
price_label: Preis
|
|
availability_label: Verfügbarkeit
|
|
manufacturer_label: Hersteller
|
|
relevance_label: Relevanz
|
|
availability_yes: verfügbar
|
|
availability_no: nicht verfügbar
|
|
availability_unknown: Shopstatus nicht übermittelt
|
|
followup_eyebrow: Folgeaktionen
|
|
followup_title: Was möchtest du als Nächstes tun?
|
|
shop_meta_fallback_query: keine Suchquery ermittelt
|
|
shop_meta_query_mode_optimized: optimiert
|
|
shop_meta_query_mode_direct: direkt
|
|
shop_meta_default_intent: commerce
|
|
shop_meta_title_unavailable: Shopdaten nicht verfügbar
|
|
shop_meta_title_completed: Shop-Suche abgeschlossen
|
|
shop_meta_title_running: Shop-Suche wird ausgeführt
|
|
shop_meta_status_completed: 'Status: abgeschlossen'
|
|
shop_meta_status_running: 'Status: läuft'
|
|
shop_meta_result_unavailable: 'Shoptreffer: nicht verfügbar'
|
|
shop_meta_result_loading: 'Shoptreffer: wird geladen'
|
|
shop_meta_repair_used: 'Erweiterte Suche: genutzt'
|
|
shop_meta_repair_checked: 'Erweiterte Suche: geprüft'
|
|
shop_meta_eyebrow: Shop-Suche
|
|
shop_meta_query_label: Gesendete Suchquery
|
|
shop_meta_query_prefix: 'Query: '
|
|
shop_meta_intent_prefix: 'Intent: '
|
|
shop_unavailable_default_reason: Keine Detailmeldung vom Shopware-Server.
|
|
shop_unavailable_title: Shopdaten konnten nicht geladen werden
|
|
shop_unavailable_text_prefix: 'RetrieX antwortet ohne Live-Shopdaten weiter. Ursache: '
|
|
no_llm_history_default: Es wurden keine Daten vom LLM empfangen.
|
|
history_notice_default_title: Systemhinweis
|
|
history_notice_shop_unavailable_title: Shopdaten konnten nicht geladen werden
|
|
history_notice_answer_incomplete_title: Antwort konnte nicht abgeschlossen werden
|
|
templates:
|
|
rag_hits_count: 'RAG-Treffer: {count}'
|
|
shop_hits_count: 'Shop-Treffer: {count}'
|
|
shop_results_summary: '{count} Shop-Treffer ausgewertet'
|
|
shop_results_top_displayed_suffix: ' · Top {max} angezeigt'
|
|
shop_results_repair_suffix: ' · erweiterte Shopsuche genutzt'
|
|
relevance_matched_queries: 'Gefunden über: {queries}'
|
|
relevance_highlight: 'Passender Shop-Hinweis: {highlight}'
|
|
relevance_match_source: 'Trefferquelle: {source}'
|
|
relevance_query: 'Passend zur Suchquery: {query}'
|
|
relevance_default: Aus den Live-Shopdaten übernommen
|
|
shop_meta_result_count: 'Shoptreffer: {count}'
|
|
history_notice_without_detail: 'Systemhinweis: {title}.'
|
|
history_notice_with_detail: 'Systemhinweis: {title}. Ursache: {detail}'
|
|
history_response_system_notice: 'Systemhinweis: {message}'
|
|
follow_up_actions:
|
|
enabled: true
|
|
commerce:
|
|
- label: Im Shop suchen
|
|
prompt: Suche im Shop nach {shop_query}.
|
|
action_type: shop_search
|
|
shop_results:
|
|
- label: Preis anzeigen
|
|
prompt: Zeige mir die Preise zu {shop_price_query}.
|
|
action_type: price_details
|
|
hide_when_answer_matches_any:
|
|
- '/\b(?:preis(?:angabe|information|e)?|preise?)\b.{0,100}\b(?:nicht|kein(?:e|en)?|ohne)\b.{0,100}\b(?:angegeben|vorhanden|enthalten|ausgewiesen|gefunden|verfügbar|verfuegbar)\b/iu'
|
|
- '/\b(?:nicht|kein(?:e|en)?|ohne)\b.{0,100}\b(?:preis(?:angabe|information|e)?|preise?)\b/iu'
|
|
- '/\bpreis(?:angabe|information|e)?\b.{0,100}\bauf anfrage\b/iu'
|
|
- label: Nur Zubehör anzeigen
|
|
prompt: Suche im Shop nach {shop_query} und zeige daraus nur Zubehör.
|
|
action_type: role_filter
|
|
target_role: accessory_or_consumable
|
|
- label: Nur Geräte anzeigen
|
|
prompt: Suche im Shop nach {shop_query} und zeige daraus nur Geräte.
|
|
action_type: role_filter
|
|
target_role: main_device
|
|
knowledge:
|
|
- label: Technische Details anzeigen
|
|
prompt: Zeige nur zusätzliche technische Details zu {answer_anchor}.
|
|
action_type: technical_details
|
|
requires_answer_anchor: true
|
|
hide_when_answer_detail_score_at_least: 2
|
|
hide_when_answer_matches_any:
|
|
- '/\b(?:Grenzwert(?:e)?|Messbereich(?:e)?|Messparameter|Indikator(?:typ)?|Einsatzgebiet(?:e)?|Technische Einordnung|Technische Eignung|Produkt-?Nummer|Verfügbar|Verfuegbar|Preisinformation|Preisangabe)\b/iu'
|
|
source_labels:
|
|
external_url: Externe URL
|
|
rag_knowledge: RAG Wissen
|
|
conversation_history: Chatverlauf
|
|
shop_system: Shopsystem
|
|
extended_shop_search: Erweiterte Shopsuche
|
|
used_sources_prefix: 'Genutzte Quellen: '
|
|
sources_prefix: 'Quellen: '
|
|
html:
|
|
source_badge_template: <span class="badge bg-info text-black">%s</span>
|
|
error_template: |
|
|
<div class="retriex-alert retriex-alert--error"><div class="retriex-alert__icon">❌</div><div class="retriex-alert__content"><div class="retriex-alert__title">Hinweis</div><div class="retriex-alert__text">%s</div></div></div>
|
|
think_template: |
|
|
<span class="text-info think">%s</span>
|
|
info_template: "\n\n<span class=\"text-info fw-bolder\">%s</span>\n"
|
|
debug_template: "\n\nDEBUG: <code>%s</code>\n"
|