Zum Inhalt springen

Chatbot UI via Streamlit

    Anfragen 1:1 via Streamlit an ChatGPT weiterleiten und die Antwort anzeigen.

    import os
    import json
    import streamlit as st
    from openai import OpenAI

    # Absoluter Pfad zur Konfigurationsdatei
    config_path = r"C:\sources\ki\streamlit\config.json" # Angegebener Pfad

    # Lese die Konfigurationsdatei
    try:
    with open(config_path, 'r') as config_file:
    config = json.load(config_file)
    api_key = config.get("OPENAI_API_KEY")
    except FileNotFoundError:
    st.error("Die Konfigurationsdatei 'config.json' wurde nicht gefunden. Bitte stellen Sie sicher, dass sie im richtigen Verzeichnis vorhanden ist.")
    st.stop()
    except json.JSONDecodeError:
    st.error("Die Konfigurationsdatei 'config.json' ist ungültig. Bitte stellen Sie sicher, dass sie korrekt formatiert ist.")
    st.stop()

    # Setze den OpenAI API-Schlüssel aus der Konfigurationsdatei
    client = OpenAI(api_key=api_key)

    st.title("ChatGPT-like clone")

    # Setze ein Standardmodell
    if "openai_model" not in st.session_state:
    st.session_state["openai_model"] = "gpt-3.5-turbo"

    # Initialisiere den Chatverlauf
    if "messages" not in st.session_state:
    st.session_state.messages = []

    # Zeige Chatnachrichten aus dem Verlauf bei erneutem Ausführen der App an
    for message in st.session_state.messages:
    with st.chat_message(message["role"]):
    st.markdown(message["content"])

    # Akzeptiere Benutzereingaben
    if prompt := st.chat_input("Was ist los?"):
    # Füge die Benutzernachricht zum Chatverlauf hinzu
    st.session_state.messages.append({"role": "user", "content": prompt})
    # Zeige die Benutzernachricht im Chat-Nachrichten-Container an
    with st.chat_message("user"):
    st.markdown(prompt)

    # Zeige die Antwort des Assistenten im Chat-Nachrichten-Container an
    with st.chat_message("assistant"):
    # Stelle sicher, dass mindestens eine Nachricht vorhanden ist, bevor die API-Aufruf gemacht wird
    if st.session_state.messages:
    try:
    stream = client.chat.completions.create(
    model=st.session_state["openai_model"],
    messages=[
    {"role": m["role"], "content": m["content"]}
    for m in st.session_state.messages
    ],
    stream=True,
    )
    response = st.write_stream(stream)
    st.session_state.messages.append({"role": "assistant", "content": response})
    except Exception as e:
    st.error(f"Ein Fehler ist aufgetreten: {e}")
    else:
    st.warning("Keine Nachrichten zum Senden an das Modell.")
    app.py
    {
    "OPENAI_API_KEY": "sk.........iz"
    }
    config.json

    streamlit run ChatUI.py