Spaces:
Running
Running
File size: 6,238 Bytes
43139c6 |
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 107 |
import gradio as gr
# Define some pre-written templates for Tab 1
templates = {
"Friendly Chatbot": "You are a helpful, friendly chatbot that engages in light-hearted conversations.",
"Technical Assistant": "You are a technical assistant specialized in answering questions related to Python programming.",
"Nutrition Advisor": "You provide evidence-based advice on nutrition and healthy eating habits.",
}
# Define some agentic workflows for Tab 2
agentic_workflows = {
"Blog Post Generator": "This agent is designed to help generate a blog post based on user input.",
"Document Summarizer": "This agent summarizes long documents by extracting key points.",
"Task Manager": "This agent helps you organize tasks and provides step-by-step guidance."
}
# Chatbot logic for custom instructions or pre-written templates
def chatbot_response(system_instructions, user_query):
if "friendly" in system_instructions.lower():
return f"Friendly Chatbot says: Hi there! 😊 How can I assist you today?"
elif "technical" in system_instructions.lower():
return f"Technical Assistant says: Sure! Here's some information on Python: {user_query}"
elif "nutrition" in system_instructions.lower():
return f"Nutrition Advisor says: Here's some advice about healthy eating: {user_query}"
else:
return f"Custom Chatbot says: {user_query}"
# Chatbot conversation function
def chatbot_conversation(system_instructions, chat_history, user_query):
response = chatbot_response(system_instructions, user_query)
chat_history.append((user_query, response))
return chat_history, ""
# Chatbot conversation for predefined agentic workflows
def agentic_chatbot_conversation(workflow_instructions, chat_history, user_query):
response = f"Agent Workflow ({workflow_instructions}) says: {user_query}"
chat_history.append((user_query, response))
return chat_history, ""
# Function to update the interface when a selection is made from the dropdown (Tab 1)
def update_interface(template_name, custom_instructions):
if template_name == "Custom Instructions":
return gr.update(visible=True), gr.update(visible=False)
else:
template_content = templates.get(template_name, "")
return gr.update(visible=False), gr.update(visible=True, value=template_content)
# Build the Gradio interface with Tabs
with gr.Blocks(css=".gradio-container {background-color: #F0F0F0;} .gr-button {background-color: #1E3A8A; color: white;} .gr-textbox textarea {font-size: 16px;} .gr-markdown {font-size: 18px; color: #1E3A8A;}") as demo:
# Add Tabs
with gr.Tabs():
# Tab 1: Custom Instructions or Pre-Written Templates
with gr.Tab("Custom Instructions Chatbot"):
gr.Markdown("""
<div style='background-color:#E0E0E0; padding: 20px; border-radius: 10px;'>
<h1 style='text-align: center; color: #1E3A8A;'>SRF Innovation Labs - AI Chatbot Use Case Explorer</h1>
<p style='font-size: 18px; text-align: center; color: #1E3A8A;'>
This tool allows you to experiment with different system prompts,
giving you control over how the chatbot behaves. You can either use pre-defined templates
or write your own custom instructions.
</p>
</div>
""")
# Section to select system instructions from dropdown
gr.Markdown("<h2 style='color: #1E3A8A;'>Chatbot Setup</h2>")
template_name = gr.Dropdown(choices=["Custom Instructions"] + list(templates.keys()), label="Choose Instructions", value="Friendly Chatbot")
custom_instructions = gr.Textbox(label="Custom Instructions", visible=False, placeholder="Write your own instructions here...")
template_display = gr.Textbox(label="Template Content", interactive=False, visible=True)
# Chatbot interface
gr.Markdown("<h2 style='color: #1E3A8A;'>Chatbot Interaction</h2>")
chatbot = gr.Chatbot(label="Chatbot Conversation", height=300, show_label=False)
user_query = gr.Textbox(label="Your Query", placeholder="Ask a question or say something to the chatbot...")
submit_button = gr.Button("Send", elem_classes=["gr-button"])
# Update logic for Tab 1
template_name.change(fn=update_interface, inputs=[template_name, custom_instructions], outputs=[custom_instructions, template_display])
submit_button.click(fn=chatbot_conversation, inputs=[custom_instructions if template_name == "Custom Instructions" else template_display, chatbot, user_query], outputs=[chatbot, user_query])
# Tab 2: Predefined Agentic Workflows
with gr.Tab("Agentic Workflow Chatbots"):
gr.Markdown("""
<div style='background-color:#E0E0E0; padding: 20px; border-radius: 10px;'>
<h1 style='text-align: center; color: #1E3A8A;'>Agentic Workflow Explorer</h1>
<p style='font-size: 18px; text-align: center; color: #1E3A8A;'>
Explore predefined agentic workflows that execute specific tasks, such as generating blog posts,
summarizing documents, or managing tasks.
</p>
</div>
""")
# Dropdown for selecting agentic workflows
workflow_name = gr.Dropdown(choices=list(agentic_workflows.keys()), label="Choose Agent Workflow", value="Blog Post Generator")
workflow_display = gr.Textbox(label="Workflow Description", interactive=False, visible=True)
workflow_chatbot = gr.Chatbot(label="Agent Workflow Conversation", height=300, show_label=False)
workflow_user_query = gr.Textbox(label="Your Query", placeholder="Ask the agent to perform a task...")
workflow_submit_button = gr.Button("Send", elem_classes=["gr-button"])
# Chatbot interaction for agentic workflows
workflow_submit_button.click(fn=agentic_chatbot_conversation, inputs=[workflow_name, workflow_chatbot, workflow_user_query], outputs=[workflow_chatbot, workflow_user_query])
# Launch the app
demo.launch()
|