File size: 1,944 Bytes
4c05b4a 1cd99ec 4c05b4a 1cd99ec 4c05b4a 1cd99ec 4c05b4a 1cd99ec 4c05b4a 1cd99ec 4c05b4a |
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 |
import gradio as gr
from datetime import datetime, timedelta
from gemini_api import model_api, sentiment, category, ord_num, NO_ORDER
cust_qry_resp = {"senti":"", "cat":"", "num":""}
#********* UI Code ***********#
with gr.Blocks(title="Customer Support Assistant",
analytics_enabled=False) as app:
state_order_num = gr.State(NO_ORDER)
gr.Markdown("Customer Support Assistant")
# Inputs from user
with gr.Row():
cust_qry = gr.Textbox(lines=5, type="text", label="Customer Query")
btn_cust_qry = gr.Button("Analyze Query")
# Model Output
@gr.render(inputs=[cust_qry], triggers=[btn_cust_qry.click])
# Function for prediction
def invoke_model(user_input):
if len(user_input) == 0:
gr.Markdown("## No Customer Query Provided")
else:
senti = model_api(user_input, sentiment)
cat = model_api(user_input, category)
num = model_api(user_input, ord_num)
# Output response
gr.Textbox(lines=1, type="text", label="Customer Sentiment", value=senti)
gr.Textbox(lines=1, type="text", label="Order Category", value=cat)
gr.Textbox(lines=1, type="text", label="Order Number", value=num)
# Decision Rules
if num != NO_ORDER:
btn_ord_det = gr.Button("Fetch Order Details")
btn_ord_det.click(lambda x: num, state_order_num, state_order_num)
# Order Details
if senti == "NEGATIVE" and num == NO_ORDER:
with gr.Row():
gr.Textbox(lines=1, type="text", label="Next Step", value="Ask Order Number")
@gr.render(inputs=state_order_num)
def fetch_order_det(ord_num):
print("Get order Details")
if ord_num != NO_ORDER:
pur_dt = datetime.now() + timedelta(days=-2)
ord_det = f"Order Number: {ord_num}\nPurchase Date: {pur_dt}"
gr.Textbox(lines=1, type="text", label="Order Details", value=ord_det)
if __name__ == "__main__":
app.launch(server_name="0.0.0.0") |