Spaces:
Running
Running
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:
- Space-Secrets umbenennen: USER → DEVALBOT_USER, PW → DEVALBOT_PW. Umbenennen und Push müssen zusammen passieren.
- 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.
- 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:
- MULTIMODAL: falls im Space explizit auf false gesetzt, entfernen — sonst bleiben Uploads unsichtbar.
- MAX_HISTORY_CHARS: 500.000 Zeichen pro Turn sind bewusst großzügig und kosten entsprechend. Bei knappem Budget niedriger setzen.
- 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.
- 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