guptavishal79 commited on
Commit
89d73de
·
1 Parent(s): d364047

generate add

Browse files
Files changed (2) hide show
  1. app.py +28 -7
  2. gemini_api.py +19 -0
app.py CHANGED
@@ -1,7 +1,7 @@
1
  import gradio as gr
2
  from datetime import datetime, timedelta
3
 
4
- from gemini_api import model_api, sentiment, category, ord_num, NO_ORDER, NO_ITEM, food_return, cloth_return, item_identy, item_match
5
  from openai_api import model_api as openai_model_api, sentiment as openai_sentiment
6
 
7
  cust_qry_resp = {"senti":"", "cat":"", "num":""}
@@ -16,6 +16,8 @@ with gr.Blocks(title="Customer Support Assistant",
16
  state_ret_pol_cat = gr.State([None, None])
17
  # Item, Category
18
  state_match_item = gr.State([None, None])
 
 
19
 
20
  gr.Markdown("# Customer Support Assistant")
21
  llm_api = gr.Radio(["gemini-1.0-pro", "gpt-3.5-turbo"], label="Choose LLM", value="gemini-1.0-pro")
@@ -39,10 +41,14 @@ with gr.Blocks(title="Customer Support Assistant",
39
  cat = model_api(user_input, category)
40
  num = model_api(user_input, ord_num)
41
  item = model_api(user_input, item_identy)
 
 
 
 
42
  # Output response
43
  gr.Textbox(lines=1, type="text", label="Customer Sentiment", value=senti)
44
  gr.Textbox(lines=1, type="text", label="Order Category", value=cat)
45
- gr.Textbox(lines=1, type="text", label="Order Number", value=num)
46
  gr.Textbox(lines=1, type="text", label="Order Item", value=item)
47
 
48
  # Decision Rules
@@ -50,7 +56,7 @@ with gr.Blocks(title="Customer Support Assistant",
50
  if senti in ["NEGATIVE", "MIXED"]:
51
  if num != NO_ORDER:
52
  btn_ord_det = gr.Button("Fetch Order Details")
53
- btn_ord_det.click(lambda x: [num, senti, cat, user_input, item], state_order_num, state_order_num)
54
  else:
55
  with gr.Row():
56
  gr.Textbox(lines=1, type="text", label="Next Step", value="Ask Order Number")
@@ -92,19 +98,34 @@ with gr.Blocks(title="Customer Support Assistant",
92
  gr.Textbox(lines=1, type="text", label="Return Policy Used", value=policy)
93
 
94
  @gr.render(inputs=state_match_item)
95
- def fetch_ret_response(ip_arr):
96
  print("Return Matching Items")
97
  ord_item = ip_arr[0]
98
  ord_cat = ip_arr[1]
99
  if ord_item is not None:
100
  ret_item, ret_theme = item_match(ord_item)
 
 
 
101
  with gr.Row():
102
  gr.Textbox(lines=1, type="text", label="Nearest Matching Item from Adds Store", value=ret_item)
103
- gr.Textbox(lines=1, type="text", label="Add Theme", value=ret_theme)
104
  with gr.Row():
105
- age_cat = gr.Radio(["less than 13 years", "14 to 30 years", "30 to 50 years", "more than 50 years"])
 
106
  btn_gen_add = gr.Button("Generate Add")
107
-
 
 
 
 
 
 
 
 
 
 
 
108
 
109
  if __name__ == "__main__":
110
  app.launch(server_name="0.0.0.0")
 
1
  import gradio as gr
2
  from datetime import datetime, timedelta
3
 
4
+ from gemini_api import model_api, sentiment, category, ord_num, NO_ORDER, NO_ITEM, food_return, cloth_return, item_identy, item_match, generate_add
5
  from openai_api import model_api as openai_model_api, sentiment as openai_sentiment
6
 
7
  cust_qry_resp = {"senti":"", "cat":"", "num":""}
 
16
  state_ret_pol_cat = gr.State([None, None])
17
  # Item, Category
18
  state_match_item = gr.State([None, None])
19
+ # Item, theme, age group
20
+ state_gen_add = gr.State([None, None, None])
21
 
22
  gr.Markdown("# Customer Support Assistant")
23
  llm_api = gr.Radio(["gemini-1.0-pro", "gpt-3.5-turbo"], label="Choose LLM", value="gemini-1.0-pro")
 
41
  cat = model_api(user_input, category)
42
  num = model_api(user_input, ord_num)
43
  item = model_api(user_input, item_identy)
44
+
45
+ def btn_ord_det_clk(ord_num):
46
+ return [ord_num, senti, cat, user_input, item]
47
+
48
  # Output response
49
  gr.Textbox(lines=1, type="text", label="Customer Sentiment", value=senti)
50
  gr.Textbox(lines=1, type="text", label="Order Category", value=cat)
51
+ ord_num_txt = gr.Textbox(lines=1, type="text", label="Order Number", value=num, interactive=True)
52
  gr.Textbox(lines=1, type="text", label="Order Item", value=item)
53
 
54
  # Decision Rules
 
56
  if senti in ["NEGATIVE", "MIXED"]:
57
  if num != NO_ORDER:
58
  btn_ord_det = gr.Button("Fetch Order Details")
59
+ btn_ord_det.click( btn_ord_det_clk, ord_num_txt, state_order_num)
60
  else:
61
  with gr.Row():
62
  gr.Textbox(lines=1, type="text", label="Next Step", value="Ask Order Number")
 
98
  gr.Textbox(lines=1, type="text", label="Return Policy Used", value=policy)
99
 
100
  @gr.render(inputs=state_match_item)
101
+ def fetch_match_item(ip_arr):
102
  print("Return Matching Items")
103
  ord_item = ip_arr[0]
104
  ord_cat = ip_arr[1]
105
  if ord_item is not None:
106
  ret_item, ret_theme = item_match(ord_item)
107
+ def btn_clk(rd_ip):
108
+ return [ret_item, ret_theme, rd_ip]
109
+
110
  with gr.Row():
111
  gr.Textbox(lines=1, type="text", label="Nearest Matching Item from Adds Store", value=ret_item)
112
+ gr.Textbox(lines=1, type="text", label="Add Theme", value=ret_theme, interactive=True)
113
  with gr.Row():
114
+ age_cat = gr.Radio(["less than 13 years", "14 to 30 years", "30 to 50 years", "more than 50 years"],
115
+ label="Select target age group", value="30 to 50 years", interactive=True)
116
  btn_gen_add = gr.Button("Generate Add")
117
+ btn_gen_add.click(btn_clk, age_cat, state_gen_add)
118
+
119
+ @gr.render(inputs=state_gen_add)
120
+ def gen_add(ip_arr):
121
+ print("Generate Add")
122
+ ord_item = ip_arr[0]
123
+ theme = ip_arr[1]
124
+ age_grp = ip_arr[2]
125
+ if ord_item is not None:
126
+ ret_add = generate_add(ord_item, theme, age_grp)
127
+ with gr.Row():
128
+ gr.Textbox(type="text", label="Genarated Add", value=ret_add, interactive=True)
129
 
130
  if __name__ == "__main__":
131
  app.launch(server_name="0.0.0.0")
gemini_api.py CHANGED
@@ -230,4 +230,23 @@ def item_match(ip_item):
230
  ret_item = obj['item']
231
  theme = adds_store.get(ret_item, "5 percent discount to all members. Become a member")
232
  return ret_item, theme
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
233
 
 
230
  ret_item = obj['item']
231
  theme = adds_store.get(ret_item, "5 percent discount to all members. Become a member")
232
  return ret_item, theme
233
+
234
+ def generate_add(item, add_theme, age_group):
235
+ print(str(age_group))
236
+ chat_session = model.start_chat(
237
+ history=[
238
+ {
239
+ "role": "user",
240
+ "parts": ["Generate a catchy advertisement. promoting socks, buy 2 get 3 free for age group more than 50 years"]
241
+ },
242
+ {
243
+ "role": "model",
244
+ "parts": ["Our super warm and comfortable socks are now availble for a discount for the winter season. Just buy 2 pairs and you get 3 free. The socks are suited for senior citizens as they provide extra warmth."]
245
+ },
246
+ ]
247
+ )
248
+
249
+ add_prompt = f"Generate a catchy advertisement.Promoting {item}, {add_theme} for age group {age_group}"
250
+ response = chat_session.send_message(add_prompt)
251
+ return response.text
252