Tom Beer commited on
Commit
995f54d
·
1 Parent(s): cb242b3

close loop

Browse files
Files changed (4) hide show
  1. app.py +4 -2
  2. data.py +5 -3
  3. llm.py +16 -0
  4. prompt.py +19 -0
app.py CHANGED
@@ -1,11 +1,13 @@
1
  from gradio import Interface, Dropdown, CheckboxGroup
2
- from data import get_prompt, get_cities
 
 
3
 
4
  cities = get_cities()
5
 
6
 
7
  def hotel_recommender(city, preferences) -> dict:
8
- return get_prompt(city, preferences)
9
 
10
 
11
  demo = Interface(
 
1
  from gradio import Interface, Dropdown, CheckboxGroup
2
+
3
+ from data import get_cities
4
+ from llm import get_response
5
 
6
  cities = get_cities()
7
 
8
 
9
  def hotel_recommender(city, preferences) -> dict:
10
+ return get_response(city, preferences)
11
 
12
 
13
  demo = Interface(
data.py CHANGED
@@ -36,7 +36,7 @@ hotel_id_to_name_map = get_hotel_id_to_name_map()
36
  hotel_id_to_review_map = get_hotel_id_to_review_map()
37
 
38
 
39
- def get_prompt(city, preferences) -> dict:
40
 
41
  for hotel_id in perm(city_to_hotel_id_map[city]):
42
  hotel_id = str(hotel_id)
@@ -51,6 +51,8 @@ def get_prompt(city, preferences) -> dict:
51
  if (review['score'] <= 2) & (len(res['negative']) < 1):
52
  res['negative'].append(review)
53
  if (len(res['positive']) >= 3) & (len(res['negative']) >= 1):
54
- break
 
 
 
55
 
56
- return res
 
36
  hotel_id_to_review_map = get_hotel_id_to_review_map()
37
 
38
 
39
+ def get_reviews_for_prompt(city, preferences) -> dict:
40
 
41
  for hotel_id in perm(city_to_hotel_id_map[city]):
42
  hotel_id = str(hotel_id)
 
51
  if (review['score'] <= 2) & (len(res['negative']) < 1):
52
  res['negative'].append(review)
53
  if (len(res['positive']) >= 3) & (len(res['negative']) >= 1):
54
+ return res
55
+
56
+ return None
57
+
58
 
 
llm.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import openai
2
+ from os import environ
3
+
4
+ from prompt import get_prompt
5
+
6
+ openai.api_key = environ.get("OPENAI_API_KEY")
7
+
8
+
9
+ def get_response(city, preferences):
10
+ response = openai.Completion.create(
11
+ model="text-davinci-003",
12
+ prompt=get_prompt(city, preferences),
13
+ temperature=0.6,
14
+ max_tokens=200
15
+ )
16
+ return response["choices"][0]["text"]
prompt.py ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from data import get_reviews_for_prompt
2
+
3
+
4
+ def get_text_from_reviews(reviews, kind):
5
+ return [review["text"] for review in reviews[kind]]
6
+
7
+
8
+ def get_prompt(city, preferences):
9
+ reviews = get_reviews_for_prompt(city, preferences)
10
+ hotel_name = reviews["hotel_name"]
11
+ positive_text, negative_text = [[review["text"] for review in reviews[kind]]
12
+ for kind in ["positive", "negative"]]
13
+ return f"You are an expert travel agent. A customer is looking for a hotel in the city of {city}. " \
14
+ f"You need to convince the customer to book a stay in {hotel_name}. " \
15
+ f"Rely on the following positive and negative reviews. " \
16
+ f"Make your argument compelling yet honest. " \
17
+ f"User reviews: " \
18
+ f"{positive_text}" \
19
+ f"{negative_text}."