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")