Fix chatbot

#1
by djcotto - opened
No description provided.

Zusammenfassung der Änderungen

Chat-Kern (Fehlerbehebungen)

  • Streaming-Inhalte werden zu Text geglättet. ChatBedrockConverse liefert Chunks als Liste von Blöcken ([{"type":"text",...}]), nicht als String — Gradio erwartet aber einen String. Neu: chunk_text().
  • Multimodale Nachrichten funktionieren überhaupt erst. Bei multimodal=True übergibt Gradio ein {"text","files"}-Dict, und Datei-Turns im Verlauf als Tupel bzw. {"path":…}-Dict. Beides lief vorher ungeprüft in HumanMessage(content=…). Uploads werden jetzt in echte Bedrock-image/document-Blöcke übersetzt; Dateien aus früheren Turns werden als Platzhalter referenziert statt bei jedem Turn neu hochgeladen.
  • System-Prompt zählt aufs Zeichenbudget. Er wurde vorher nach dem Trimmen davorgesetzt und konnte das Fenster sprengen.
  • Teilantwort bleibt bei Streaming-Fehlern erhalten, statt durch die Fehlermeldung ersetzt zu werden.
  • Trimming arbeitet paarweise (Frage + Antwort statt Einzelnachrichten). Reiner Refactor

Konfiguration & Sicherheit

  • TEMPERATURE wird mit float() statt eval() gelesen.
  • strtobool aus der privaten setuptools._distutils-API entfernt (dadurch fällt setuptools als Abhängigkeit weg).
  • Auth-Variablen umbenannt zu DEVALBOT_USER / DEVALBOT_PW; der Start bricht ab, wenn eine fehlt. Vorher konnte das Linux-USER still zum App-Login werden und ein fehlendes PW ergab (name, None).
  • Leere Umgebungsvariablen gelten als „nicht gesetzt" und lassen den Start nicht mehr scheitern.

Modellwechsel

  • Defaults auf anthropic / eu.anthropic.claude-sonnet-4-6.
  • MAX_HISTORY_CHARS: 60.000 → 500.000 (~125k Tokens). Sonnet 4.6 hat ein 1M-Token-Fenster (≈ 4M Zeichen); begrenzend sind hier nicht das Fenster, sondern Kosten und Latenz, weil jeder Turn den ganzen Verlauf erneut sendet. 500k ist bewusst rund ein Achtel des Fensters.

UI

  • Upload-Feld nimmt mehrere Dateien und filtert auf 15 unterstützte Endungen (PNG/JPEG/GIF/WebP, PDF, DOC/DOCX, XLS/XLSX, CSV, HTML, MD, TXT). Vorher: eine Datei, beliebiger Typ — die dann abgelehnt wurde.
  • MULTIMODAL standardmäßig an.
  • Label „Chatbot" ausgeblendet.
  • Fußzeile („Built with Gradio", „Use via API") per CSS entfernt, zusätzlich show_api=False.
  • Chatfenster füllt die Fensterhöhe (fill_height=True plus scale=1 am Chatbot).

Abhängigkeiten & Hygiene

  • requirements.txt exakt gepinnt und auf die drei direkt importierten Pakete reduziert: gradio==5.34.2, langchain-core==1.5.3, langchain-aws==1.6.4. Entfallen: anthropic, langchain, langchain-community, setuptools, boto3/botocore, fastapi/uvicorn/aiofiles (kommen transitiv mit).
  • utils.py (ungenutzt) und toter Import in bedrock_client.py gelöscht; pycache, *.pyc, .gradio/ ignoriert.

Was für das Deployment angepasst werden muss

Blockierend — ohne das startet der Space nicht:

  1. Space-Secrets umbenennen: USER → DEVALBOT_USER, PW → DEVALBOT_PW. Umbenennen und Push müssen zusammen passieren.
  2. Alte PROVIDER/MODEL_ID-Variablen im Space prüfen. Steht dort noch mistral bzw. mistral.mistral-large-2402-v1:0, überschreibt das die neuen Code-Defaults — der Space läuft dann weiter auf dem alten Modell. Entweder löschen (dann greifen die Defaults) oder auf anthropic / eu.anthropic.claude-sonnet-4-6 setzen.
  3. Bedrock-Modellzugang für Claude Sonnet 4.6 in eu-west-1 freischalten und die IAM-Policy auf das Inference-Profile-ARN erweitern. Die bestehenden Keys haben höchstwahrscheinlich nur Zugriff auf Mistral.

Zu prüfen:

  1. MULTIMODAL: falls im Space explizit auf false gesetzt, entfernen — sonst bleiben Uploads unsichtbar.
  2. MAX_HISTORY_CHARS: 500.000 Zeichen pro Turn sind bewusst großzügig und kosten entsprechend. Bei knappem Budget niedriger setzen.
  3. langchain-aws springt von >=0.2.17 auf gepinnt 1.6.4 — ein Major-Sprung gegenüber dem, was der Space bisher auflöst. Nach dem Deploy einmal eine Textnachricht und einen Upload durchschicken zum Test.
  4. README-Frontmatter: sdk_version: 5.34.2 und gradio==5.34.2 müssen synchron bleiben, wenn Gradio angehoben wird.
djcotto changed pull request status to open
evaluator42 changed pull request status to merged

Sign up or log in to comment