22 Punkte von xguru 2024-10-07 | 1 Kommentare | Auf WhatsApp teilen
  • Die meisten Unternehmen verfügen intern über wertvolle Daten
    • Analysedaten darüber, wie Kunden mit dem Produkt interagieren
    • Audit-Logs der im Produkt ausgeführten Aktionen (damit lässt sich nachvollziehen, wann Funktionen aktiviert wurden)
  • Selbst kleine Startups verfügen über nützliche Daten
    • Anhand von Support-Tickets lässt sich erkennen, welche Teile des Produkts die meiste Aufmerksamkeit benötigen; außerdem enthalten sie Feature-Anfragen
  • Vor LLMs (Large Language Models) war es schwierig, aus Daten Erkenntnisse zu gewinnen
    • Man musste ein eigenes Modell trainieren, einschließlich Feature Engineering und NLP, Modellauswahl und der am schwierigsten zu beschaffenden Trainingsdaten
  • Jetzt lässt sich das mit einfachen Prompts erledigen
    • Beispiel-Prompt: "Klassifizieren Sie das folgende Ticket in die folgenden Kategorien: Uptime, Security, Bug, Feature Request, Other"
    • Das Ergebnis ist effektiv ein einfacher Klassifikator, der schon mit kleinen Anpassungen brauchbare Leistung liefert
  • Mit Streamlit lässt sich leicht ein internes Tool bauen, mit dem jeder experimentieren kann, indem er LLMs auf Datensätze anwendet

Was wir bauen werden

  • Nutzer können Folgendes tun
    • sich anmelden
    • einen Prompt schreiben: für ein Ticket-Klassifikationssystem
    • den Prompt an einigen Beispieldaten testen und die Ausgabe einschließlich Fehlern prüfen
    • den Prompt speichern, damit andere ihn verwenden können

Kurze Einführung in Streamlit

  • Streamlit ist ein großartiges Tool, um schnell Datenanwendungen zu bauen
    • In Streamlit kann man Anwendungen mit einfachem Code schreiben
import streamlit as st  
  
prompt = st.text_area(  
    "Prompt to test (use {text} to indicate where the text should be inserted):",  
    "This is an example prompt:\\n\\n{text}",  
)  
  
prompt_with_data = f"{prompt}".format(  
    text="`Example data to be placed into prompt`"  
)  
  
st.write(prompt_with_data)  
  • Ergebnis der Codeausführung: Streamlit erzeugt automatisch ein interaktives Frontend
  • Wenn der Nutzer den Prompt-Text in text_area aktualisiert, wird der restliche Python-Code automatisch erneut ausgeführt

Leistungsstarke Funktionen von Streamlit

  • Streamlit ist ein sehr leistungsfähiges Tool zum Erstellen interaktiver Werkzeuge wie Dashboards
    • Verschiedene Komponenten sind verfügbar: Pandas-DataFrames lassen sich als Tabellen rendern oder per Button Aktionen auslösen
    • Utilities zum Laden externer Daten, zum Verwalten von Secrets und zum Caching von Daten sind enthalten, wodurch die Interaktion mit Daten deutlich leistungsfähiger wird

Schritt 1: Daten laden und visualisieren

  • Mit Streamlit werden hart codierte Daten geladen und als Tabelle gerendert
  • Über die Datei .streamlit/secrets.toml wird Streamlit mitgeteilt, wie eine Verbindung zu einer PostgreSQL-Datenbank hergestellt wird
  • psycopg2-binary wird installiert und die Funktion load_data_sample() aktualisiert, damit Daten aus PostgreSQL geladen werden
  • Streamlit kann sich mit verschiedenen Datenquellen verbinden, etwa Snowflake und Google Sheets
  • Für das Caching wird st.cache_resource typischerweise für Verbindungen und st.cache_data für teure Abfrageergebnisse verwendet

Schritt 2: Daten mit einem Prompt ausführen

  • Ein Prompt wird vom Nutzer entgegengenommen und auf die geladenen Daten angewendet
  • Der Prompt muss gültiges JSON im Format {"urgent": false, "categories": ["CategoryA", "CategoryB"]} ausgeben
  • Der DataFrame wird transformiert und um die Spalten urgent, categories und error (bei Fehlern) erweitert
  • OpenAI-Aufrufe werden gecacht, um Zeit und Kosten zu sparen
  • Es wird ein Button hinzugefügt, um den Prompt erneut auf die Daten auszuführen

Schritt 3: Authentifizierung hinzufügen

  • Mit PropelAuth wird Streamlit um Authentifizierung erweitert
  • Es wird eine Datei propelauth.py erstellt, die ein auth-Objekt exportiert
  • Oben im Skript wird der Nutzer geladen oder die Skriptausführung gestoppt
  • In der Datenabfrage kann die Nutzer-ID verwendet werden, damit nur Daten sichtbar sind, auf die Zugriff besteht

Schritt 4: Prompt speichern

  • Es wird ein Button hinzugefügt, mit dem Nutzer ihren Prompt speichern können
  • Die Datenbankverbindung wird geladen und der Prompt in die Tabelle prompts eingefügt
  • Der Prompt wird gespeichert, indem Nutzer-ID und Prompt als Parameter übergeben werden

1 Kommentare

 
xguru 2024-10-07

Ich hatte es 2020 kurz unter Streamlit - Python-Code einfach in Custom-ML-Tools verwandeln vorgestellt, und 2022 hat Snowflake Streamlit für 800 Mio. US-Dollar übernommen.

Vor Kurzem wurde auch ein mit Streamlit erstelltes Tool einmal bei Show GN vorgestellt.
MP3 Tag Editor (Python Streamlit +FastAPI) on Docker