Commit
·
89d73de
1
Parent(s):
d364047
generate add
Browse files- app.py +28 -7
- 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(
|
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
|
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 |
|