Spaces:
Runtime error
Runtime error
John Yang
commited on
Commit
·
7fb90e2
1
Parent(s):
730ca01
Update output format
Browse files
app.py
CHANGED
@@ -91,6 +91,36 @@ def bert_predict(obs, info, softmax=True):
|
|
91 |
idx = outputs.logits[0].argmax(0).item()
|
92 |
return valid_acts[idx]
|
93 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
|
95 |
def predict(obs, info):
|
96 |
"""
|
@@ -172,25 +202,7 @@ def run_episode(goal, env, verbose=True):
|
|
172 |
page_type = Page.SEARCH
|
173 |
|
174 |
elif action == 'click[buy now]':
|
175 |
-
|
176 |
-
if env == 'amazon':
|
177 |
-
return_value['Product URL'] = f"https://www.amazon.com/dp/{asin}"
|
178 |
-
if len(clicked_options) > 0:
|
179 |
-
return_value['Selected Options'] = ', '.join(list(clicked_options))
|
180 |
-
if env == 'webshop':
|
181 |
-
query_str = "+".join(search_terms.split())
|
182 |
-
options_str = json.dumps(options)
|
183 |
-
asin_url = (
|
184 |
-
f'{WEBSHOP_URL}/item_page/{WEBSHOP_SESSION}/'
|
185 |
-
f'{asin}/{query_str}/{page_num}/{options_str}'
|
186 |
-
)
|
187 |
-
return_value['Product URL'] = asin_url
|
188 |
-
if env == 'ebay':
|
189 |
-
asin_url = f"https://www.ebay.com/itm/{asin}"
|
190 |
-
return_value['Product URL'] = asin_url
|
191 |
-
if len(clicked_options) > 0:
|
192 |
-
return_value['Selected Options'] = ', '.join(list(clicked_options))
|
193 |
-
return return_value
|
194 |
|
195 |
elif prev_page_type == Page.ITEM_PAGE:
|
196 |
found = False
|
@@ -214,7 +226,7 @@ def run_episode(goal, env, verbose=True):
|
|
214 |
if search_terms in search_results_cache:
|
215 |
data = search_results_cache[search_terms]
|
216 |
if verbose:
|
217 |
-
print(f"Loading cached results page for\"{search_terms}\"")
|
218 |
else:
|
219 |
begin = time.time()
|
220 |
if env == 'amazon':
|
@@ -273,37 +285,28 @@ def run_episode(goal, env, verbose=True):
|
|
273 |
print("Extracting available actions took", end-begin, "seconds")
|
274 |
|
275 |
if i == 50:
|
276 |
-
|
277 |
-
if env == 'amazon':
|
278 |
-
return_value['Product URL'] = f"https://www.amazon.com/dp/{asin}"
|
279 |
-
if len(clicked_options) > 0:
|
280 |
-
return_value['Selected Options'] = ', '.join(list(clicked_options))
|
281 |
-
if env == 'webshop':
|
282 |
-
query_str = "+".join(search_terms.split())
|
283 |
-
options_str = json.dumps(options)
|
284 |
-
asin_url = (
|
285 |
-
f'{WEBSHOP_URL}/item_page/{WEBSHOP_SESSION}/'
|
286 |
-
f'{asin}/{query_str}/{page_num}/{options_str}'
|
287 |
-
)
|
288 |
-
return_value['Product URL'] = asin_url
|
289 |
-
if env == 'ebay':
|
290 |
-
asin_url = f"https://www.ebay.com/itm/{asin}"
|
291 |
-
return_value['Product URL'] = asin_url
|
292 |
-
if len(clicked_options) > 0:
|
293 |
-
return_value['Selected Options'] = ', '.join(list(clicked_options))
|
294 |
-
return return_value
|
295 |
|
296 |
-
gr.Interface(
|
|
|
297 |
inputs=[
|
298 |
gr.inputs.Textbox(lines=7, label="Input Text"),
|
299 |
gr.inputs.Radio(['Amazon', 'eBay'], type="value", default="Amazon", label='Environment')
|
300 |
],
|
301 |
-
outputs=
|
|
|
|
|
|
|
|
|
302 |
examples=[
|
303 |
["I want to find a gold floor lamp with a glass shade and a nickel finish that i can use for my living room, and price lower than 270.00 dollars", "Amazon"],
|
304 |
["I need some cute heart-shaped glittery cupcake picks as a gift to bring to a baby shower", "Amazon"],
|
|
|
|
|
305 |
["I'm trying to find white bluetooth speakers that are not only water resistant but also come with stereo sound", "eBay"],
|
306 |
-
["find me the soy free 3.5 ounce 4-pack of dang thai rice chips, and make sure they are the aged cheddar flavor. i also need the ones in the resealable bags", "eBay"]
|
|
|
|
|
307 |
],
|
308 |
title="WebShop",
|
309 |
article="<p style='padding-top:15px;text-align:center;'>To learn more about this project, check out the <a href='https://webshop-pnlp.github.io/' target='_blank'>project page</a>!</p>",
|
|
|
91 |
idx = outputs.logits[0].argmax(0).item()
|
92 |
return valid_acts[idx]
|
93 |
|
94 |
+
def get_return_value(env, asin, options, search_terms, page_num, product):
|
95 |
+
asin_url = None
|
96 |
+
|
97 |
+
# Determine product URL + options based on environment
|
98 |
+
if env == 'webshop':
|
99 |
+
query_str = "+".join(search_terms.split())
|
100 |
+
options_str = json.dumps(options)
|
101 |
+
asin_url = (
|
102 |
+
f'{WEBSHOP_URL}/item_page/{WEBSHOP_SESSION}/'
|
103 |
+
f'{asin}/{query_str}/{page_num}/{options_str}'
|
104 |
+
)
|
105 |
+
else:
|
106 |
+
asin_url = f"https://www.ebay.com/itm/{asin}" if env == 'ebay' else \
|
107 |
+
f"https://www.amazon.com/dp/{asin}"
|
108 |
+
|
109 |
+
# Extract relevant fields for product
|
110 |
+
product_reduced = {k: v for k, v in product.items() if k in ["asin", "Title", "Description", "BulletPoints"]}
|
111 |
+
product_reduced["Description"] = product_reduced["Description"][:100] + "..."
|
112 |
+
product_reduced["Features"] = product_reduced.pop("BulletPoints")
|
113 |
+
product_reduced["Features"] = product_reduced["Features"][:100] + "..."
|
114 |
+
|
115 |
+
# Create HTML to show link to product
|
116 |
+
html = """<!DOCTYPE html><html><head><title>Chosen Product</title></head><body>"""
|
117 |
+
html += f"""Product Image:<img src="{product["MainImage"]}" height="50px" /><br>""" if len(product["MainImage"]) > 0 else ""
|
118 |
+
html += f"""Link to Product:
|
119 |
+
<a href="{asin_url}" style="color:blue;text-decoration:underline;" target="_blank">{asin_url}</a>
|
120 |
+
</body></html>"""
|
121 |
+
|
122 |
+
return product_reduced, options if len(options) > 0 else "None Selected", html
|
123 |
+
|
124 |
|
125 |
def predict(obs, info):
|
126 |
"""
|
|
|
202 |
page_type = Page.SEARCH
|
203 |
|
204 |
elif action == 'click[buy now]':
|
205 |
+
return get_return_value(env, asin, options, search_terms, page_num, product_map[asin])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
|
207 |
elif prev_page_type == Page.ITEM_PAGE:
|
208 |
found = False
|
|
|
226 |
if search_terms in search_results_cache:
|
227 |
data = search_results_cache[search_terms]
|
228 |
if verbose:
|
229 |
+
print(f"Loading cached results page for \"{search_terms}\"")
|
230 |
else:
|
231 |
begin = time.time()
|
232 |
if env == 'amazon':
|
|
|
285 |
print("Extracting available actions took", end-begin, "seconds")
|
286 |
|
287 |
if i == 50:
|
288 |
+
return get_return_value(env, asin, options, search_terms, page_num, product_map[asin])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
289 |
|
290 |
+
gr.Interface(
|
291 |
+
fn=run_episode,
|
292 |
inputs=[
|
293 |
gr.inputs.Textbox(lines=7, label="Input Text"),
|
294 |
gr.inputs.Radio(['Amazon', 'eBay'], type="value", default="Amazon", label='Environment')
|
295 |
],
|
296 |
+
outputs=[
|
297 |
+
gr.outputs.JSON(label="Selected Product"),
|
298 |
+
gr.outputs.JSON(label="Selected Options"),
|
299 |
+
gr.outputs.HTML()
|
300 |
+
],
|
301 |
examples=[
|
302 |
["I want to find a gold floor lamp with a glass shade and a nickel finish that i can use for my living room, and price lower than 270.00 dollars", "Amazon"],
|
303 |
["I need some cute heart-shaped glittery cupcake picks as a gift to bring to a baby shower", "Amazon"],
|
304 |
+
["I want to buy ballet shoes which have rubber sole in grey suede color and a size of 6", "Amazon"],
|
305 |
+
["I would like a 7 piece king comforter set decorated with flowers and is machine washable", "Amazon"],
|
306 |
["I'm trying to find white bluetooth speakers that are not only water resistant but also come with stereo sound", "eBay"],
|
307 |
+
["find me the soy free 3.5 ounce 4-pack of dang thai rice chips, and make sure they are the aged cheddar flavor. i also need the ones in the resealable bags", "eBay"],
|
308 |
+
["I am looking for a milk chocolate of 1 pound size in a single pack for valentine day", "eBay"],
|
309 |
+
["I'm looking for a mini pc intel core desktop computer which supports with windows 11", "eBay"]
|
310 |
],
|
311 |
title="WebShop",
|
312 |
article="<p style='padding-top:15px;text-align:center;'>To learn more about this project, check out the <a href='https://webshop-pnlp.github.io/' target='_blank'>project page</a>!</p>",
|