File size: 4,118 Bytes
cbf542b
 
 
 
 
 
 
 
 
c330ab7
 
1c25119
 
 
cbf542b
cf9c43b
b9365f6
 
cf9c43b
c330ab7
aa74a15
bf00f6c
cbf542b
 
bf00f6c
d13eccd
b171990
cbf542b
c330ab7
cbf542b
d13eccd
a7bc7e2
c330ab7
 
 
39c31d8
0ff4b91
 
cbf542b
cf9c43b
f63a613
cbf542b
 
 
 
 
 
 
 
 
 
 
d43375c
d13eccd
 
491aac8
ca87944
 
d13eccd
 
 
 
 
d43375c
 
 
cbf542b
 
a329b2a
6881398
cbf542b
62bb4bc
fd1f512
 
 
348322f
a248b45
 
cbf542b
c330ab7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import os
import sys
import json
import requests
from datetime import datetime
import urllib.parse
import gradio as gr
from groq import Groq

# Konfiguration
GET_AUDIO_API = os.environ.get("GET_AUDIO_API")

GROQ_API_KEY = os.environ.get("GROQ_API_KEY_AI_ECHO_BOT")
client = Groq(api_key=GROQ_API_KEY)

print("API Keys running?")
print("GROQ KEY: " + "RUNNING" if GROQ_API_KEY != "" else "--- NOT RUNNING ---")
print("GET_AUIDO_API: " + "RUNNING\n" if GET_AUDIO_API != "" else "--- NOT RUNNING ---\n")

def audio_response(text, voice="Sophia"):
    url = f"https://{GET_AUDIO_API}/get-audio?text={urllib.parse.quote(text)}&voice={voice.lower()}"
    print("URL GET AUDIO API: " + url)
    try:
        response = requests.get(url)
        print("Response: ")
        print(response.content)  # response.content ist bereits vom Typ 'bytes'
        return response.content
    except Exception as e:
        return f"Ein Fehler mit der GET_AUDIO_API ist aufgetreten: {e}"


def bot(chat_msg, history=None, audio_tts_checkbox=False):
    """
    Prozessiert die Benutzereingabe und gibt eine Antwort zurück.
    """
    messages = []
    SYSTEMMESSAGE = "Du bist ein Sprachmodell, das Antworten so formuliert, dass sie ideal von einem Text-to-Speech-Modell gesprochen werden können. Sprich in klarem und natürlichem Deutsch, mit einem freundlichen und entspannten Ton, als würdest du dich mit einem Freund unterhalten. Achte darauf, dass deine Sätze flüssig, leicht verständlich und für das Zuhören angenehm klingen. Vermeide komplizierte Satzstrukturen, unnötige Fachbegriffe und lange Pausen. Antworte präzise und kreativ auf Nachrichten der User. Da es keine Chat-Historie gibt, sind Rückfragen nicht erforderlich." if audio_response == False else "Du bist ein Sprachmodell, das klar und verständlich in natürlichem Deutsch kommuniziert. Dein Stil soll freundlich und entspannt wirken, so als würdest du mit einem Freund sprechen. Als Discord-Bot bist du dafür da, die Unterhaltung im Chat interessant und angenehm zu gestalten. Antworte präzise und kreativ auf Nachrichten der User. Da es keine Chat-Historie gibt, sind Rückfragen nicht nötig."
    messages.append({"role": "system", "content": SYSTEMMESSAGE})
    messages.append({"role": "user", "content": chat_msg})
    print("1. Messages:\n")
    print(messages)
    try:
        completion = client.chat.completions.create(
            model="llama3-8b-8192",
            messages=messages,
            temperature=0.8,
            max_tokens=1024,
            top_p=0.9,
            stream=False,
            stop=None,
        )
        bot_message = completion.choices[0].message.content
        
        if audio_tts_checkbox == True:
            print("AUDIO TTS CHECKBOX IS TRUE!")
            response_audio = audio_response(bot_message, voice="Sophia")
            print("response_audio:")
            print(response_audio)
            # Überprüfe, ob response_audio 'bytes' ist
            if isinstance(response_audio, bytes):
                messages.append({"role": "assistant", "content": gr.Audio(response_audio)})
            else:
                messages.append({"role": "assistant", "content": bot_message})
            print("2. Messages:\n")
            print(messages)
            return "", messages, ""
    except Exception as e:
        bot_message = f"Fehler: {e}"
        messages.append({"role": "assistant", "content": bot_message})
        return "", messages, ""

with gr.Blocks(css_paths="_custom.css") as demo:
    chatbot = gr.Chatbot(type="messages")
    chat_input = gr.Textbox(placeholder="Sende eine Nachricht...", lines=1, max_lines=6, show_label=False, elem_id="chat_input")
    audio_tts_checkbox = gr.Checkbox(label="Audio Antwort generieren?", value=False, elem_classes="toggle-btn")
    submit_btn = gr.Button("Senden")
    submit_btn.click(bot, [chat_input, chatbot, audio_tts_checkbox], [chat_input, chatbot, audio_tts_checkbox], api_name="llm_submit")
    chat_input.submit(bot, [chat_input, chatbot, audio_tts_checkbox], [chat_input, chatbot, audio_tts_checkbox], api_name="llm")

demo.launch()