ai-app-creator / app.py
Tobias Geisler
better chatbot creation flow
6ba3c65
raw
history blame
2.58 kB
import gradio as gr
from tabs.chat import create_chat_tab, load_chatbot
from tabs.create_chatbot import create_chatbot_tab
from tabs.admin import create_admin_tab
def create_app():
with gr.Blocks(
title="codora KI-App-Ersteller v0",
head="""
<script>
function copyToClipboard(elementId) {
var copyText = document.getElementById(elementId).querySelector('textarea').value;
navigator.clipboard.writeText(copyText).then(function() {
alert("Text kopiert: " + copyText);
}, function(err) {
console.error("Konnte Text nicht kopieren: ", err);
});
}
</script>
"""
) as demo:
gr.Markdown("# codora KI-App-Ersteller v0")
chatbot_id_input = gr.Textbox(label="Chatbot-ID eingeben")
load_button = gr.Button("Chatbot laden")
load_message = gr.Textbox(label="Lademeldung", interactive=False)
gr.Examples(
examples=["shiny-platypus-699", "delightful-red-panda-273", "glowing-toucan-982", "mellow-toucan-512", "upbeat-elephant-433"],
inputs=chatbot_id_input,
label="Beispiel-Chatbots"
)
with gr.Tabs():
with gr.Tab("Chat"):
chat_tab = create_chat_tab(chatbot_id_input, load_button, load_message)
with gr.Tab("Chatbot erstellen"):
create_tab = create_chatbot_tab()
with gr.Tab("Admin"):
create_admin_tab()
@demo.load(inputs=[chatbot_id_input], outputs=[chat_tab['title'], chatbot_id_input, chat_tab['share_link'], load_message])
def load_chatbot_on_start(chatbot_id, request: gr.Request):
params = request.query_params
if "chatbot_id" in params:
chatbot_id = params["chatbot_id"]
return load_chatbot(chatbot_id)
return (
gr.update(value="Willkommen beim Chatbot"),
gr.update(value="", visible=True),
gr.update(value=""),
gr.update(value="")
)
# Add event listener to automatically load newly created chatbot
create_tab["chatbot_id_output"].change(
fn=load_chatbot,
inputs=[create_tab["chatbot_id_output"]],
outputs=[chat_tab['title'], chatbot_id_input, chat_tab['share_link'], load_message]
)
return demo
demo = create_app()
if __name__ == "__main__":
demo.launch()