Spaces:
Sleeping
Sleeping
File size: 4,215 Bytes
71736e8 f148d8c 5d557f1 f148d8c 71736e8 5d557f1 f148d8c 5d557f1 f148d8c 5d557f1 f148d8c 5d557f1 168235c 9e052e8 168235c fd868fe 71736e8 9e991a9 5d557f1 f148d8c 5d557f1 168235c 5d557f1 168235c 5d557f1 71736e8 168235c 71736e8 5d557f1 168235c 5d557f1 |
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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
import gradio as gr
import logging
from database import get_chatbot
import concurrent.futures
# Setup logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
def load_chatbot(chatbot_id):
logger.info(f"Attempting to load chatbot with ID: {chatbot_id}")
try:
chatbot = get_chatbot(chatbot_id)
if chatbot:
logger.info(f"Chatbot {chatbot_id} loaded successfully")
return (
gr.update(value=f"# {chatbot.name}\n\nWillkommen bei {chatbot.name}"),
gr.update(value=chatbot_id, visible=True),
gr.update(value=f"https://huggingface.co/spaces/codora/ai-app-creator?chatbot_id={chatbot_id}"),
gr.update(value="Chatbot erfolgreich geladen.")
)
logger.warning(f"Chatbot {chatbot_id} not found or inactive")
return (
gr.update(value="# Chatbot\n\nWillkommen beim Chatbot"),
gr.update(value="", visible=True),
gr.update(value=""),
gr.update(value="Ungültige Chatbot-ID oder Chatbot nicht aktiv.")
)
except Exception as e:
logger.error(f"Error loading chatbot {chatbot_id}: {str(e)}")
return (
gr.update(value="# Chatbot\n\nWillkommen beim Chatbot"),
gr.update(value="", visible=True),
gr.update(value=""),
gr.update(value=f"Ein Fehler ist aufgetreten: {str(e)}")
)
def load_chatbot_with_timeout(chatbot_id, timeout=5):
with concurrent.futures.ThreadPoolExecutor() as executor:
future = executor.submit(load_chatbot, chatbot_id)
try:
result = future.result(timeout=timeout)
return result
except concurrent.futures.TimeoutError:
logger.error(f"Timeout while loading chatbot {chatbot_id}")
return (
gr.update(value="# Chatbot\n\nWillkommen beim Chatbot"),
gr.update(value="", visible=True),
gr.update(value=""),
gr.update(value="Zeitüberschreitung beim Laden des Chatbots.")
)
except Exception as e:
logger.error(f"Unexpected error while loading chatbot {chatbot_id}: {str(e)}")
return (
gr.update(value="# Chatbot\n\nWillkommen beim Chatbot"),
gr.update(value="", visible=True),
gr.update(value=""),
gr.update(value=f"Ein unerwarteter Fehler ist aufgetreten: {str(e)}")
)
def create_chat_tab():
chatbot_id_input = gr.Textbox(label="Chatbot-ID eingeben")
# Add examples right below the chatbot ID input field
examples = gr.Examples(
examples=["courteous-duckling-628", "delightful-red-panda-273", "glowing-toucan-982", "mellow-toucan-512", "upbeat-elephant-433", "shiny-platypus-699"],
inputs=chatbot_id_input,
label="Beispiel-Chatbots"
)
load_button = gr.Button("Chatbot laden")
load_message = gr.Textbox(label="Lademeldung", interactive=False)
chatbot_title = gr.Markdown("# Chatbot\n\nWillkommen beim Chatbot")
chat_interface = gr.ChatInterface(
chat_with_bot,
additional_inputs=[chatbot_id_input],
)
share_link = gr.Textbox(label="Link zum Teilen", interactive=False, elem_id="share_link")
load_button.click(
fn=load_chatbot_with_timeout,
inputs=[chatbot_id_input],
outputs=[chatbot_title, chatbot_id_input, share_link, load_message]
)
# Add a custom HTML button for copying the share URL to the clipboard
copy_button = gr.HTML("""
<button onclick="copyToClipboard('share_link')">In die Zwischenablage kopieren</button>
""")
return {
"chatbot_id_input": chatbot_id_input,
"load_button": load_button,
"load_message": load_message,
"title": chatbot_title,
"interface": chat_interface,
"share_link": share_link,
"copy_button": copy_button,
"examples": examples
}
def chat_with_bot(message, history, chatbot_id):
from utils.openai_utils import chat_with_bot as openai_chat_with_bot
return openai_chat_with_bot(message, history, chatbot_id)
|