Spaces:
Sleeping
Sleeping
File size: 4,123 Bytes
cbf542b c330ab7 1c25119 cbf542b cf9c43b b9365f6 cf9c43b c330ab7 aa74a15 bf00f6c cbf542b bf00f6c ca87944 b171990 cbf542b c330ab7 cbf542b a7bc7e2 c330ab7 39c31d8 0ff4b91 cbf542b cf9c43b f63a613 cbf542b d43375c 5235c72 d43375c 491aac8 ca87944 dcca7ef d43375c cf9c43b c330ab7 cbf542b a329b2a 6881398 cbf542b 62bb4bc cbf542b a7bc7e2 cbf542b a7bc7e2 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 81 82 83 84 85 |
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"):
"""
Holt die Audio-Antwort von der API.
"""
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.encode())
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 CHECKBOY IS TURE!")
response_audio = audio_response(bot_message, voice="Sophia")
print("response_audio:")
print(response_audio)
messages.append({"role": "assistant", "content": (gr.Audio(response_audio.encode()) if "Ein Fehler mit der GET_AUDIO_API" not in response_audio else bot_message)})
print("2. Messages:\n")
print(messages)
return "", messages, ""
messages.append({"role": "assistant", "content": bot_message})
print("3. 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")
clear = gr.ClearButton([chat_input, chatbot, audio_tts_checkbox], show_api=False)
chat_input.submit(bot, [chat_input, chatbot, audio_tts_checkbox], [chat_input, chatbot, audio_tts_checkbox], api_name="llm_inference")
demo.launch() |