jerpint commited on
Commit
a61504d
β€’
1 Parent(s): 0b9f9a6

Add thumbs up (#22)

Browse files

* add like button; log response to mongodb

* remove DEV from space title

Files changed (4) hide show
  1. README.md +1 -1
  2. app.py +27 -5
  3. cfg.py +6 -0
  4. utils.py +16 -0
README.md CHANGED
@@ -1,5 +1,5 @@
1
  ---
2
- title: TowardsAI 🀝 Buster - Dev
3
  emoji: πŸ€–
4
  colorFrom: blue
5
  colorTo: blue
 
1
  ---
2
+ title: TowardsAI 🀝 Buster
3
  emoji: πŸ€–
4
  colorFrom: blue
5
  colorTo: blue
app.py CHANGED
@@ -35,6 +35,24 @@ AVAILABLE_SOURCES = [
35
  ]
36
 
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  def format_sources(matched_documents: pd.DataFrame) -> str:
39
  if len(matched_documents) == 0:
40
  return ""
@@ -132,6 +150,9 @@ with demo:
132
  gr.Markdown(
133
  "<h3><center>Toward's AI x Buster πŸ€–: A Question-Answering Bot for anything AI-related</center></h3>"
134
  )
 
 
 
135
  source_selection = gr.Dropdown(
136
  choices=AVAILABLE_SOURCES_UI,
137
  label="Select Sources",
@@ -159,15 +180,16 @@ with demo:
159
  "\n\n### Powered by [Buster πŸ€–](www.github.com/jerpint/buster)"
160
  )
161
 
162
- response = gr.State()
163
 
164
  submit.click(user, [question, chatbot], [question, chatbot], queue=False).then(
165
- get_answer, inputs=[chatbot, source_selection], outputs=[chatbot, response]
166
- ).then(add_sources, inputs=[chatbot, response], outputs=[chatbot])
167
  question.submit(user, [question, chatbot], [question, chatbot], queue=False).then(
168
- get_answer, inputs=[chatbot, source_selection], outputs=[chatbot, response]
169
- ).then(add_sources, inputs=[chatbot, response], outputs=[chatbot])
170
 
 
171
 
172
  demo.queue(concurrency_count=16)
173
  demo.launch(debug=True, share=False)
 
35
  ]
36
 
37
 
38
+ def log_likes(completion: Completion, like_data: gr.LikeData):
39
+ # make it a str so json-parsable
40
+
41
+ collection = "liked_data-test"
42
+
43
+ completion_json = completion.to_json(
44
+ columns_to_ignore=["embedding", "similarity", "similarity_to_answer"]
45
+ )
46
+ completion_json["liked"] = like_data.liked
47
+ logger.info(f"User reported {like_data.liked=}")
48
+
49
+ try:
50
+ cfg.mongo_db[collection].insert_one(completion_json)
51
+ logger.info("")
52
+ except:
53
+ logger.info("Something went wrong logging")
54
+
55
+
56
  def format_sources(matched_documents: pd.DataFrame) -> str:
57
  if len(matched_documents) == 0:
58
  return ""
 
150
  gr.Markdown(
151
  "<h3><center>Toward's AI x Buster πŸ€–: A Question-Answering Bot for anything AI-related</center></h3>"
152
  )
153
+
154
+ latest_completion = gr.State()
155
+
156
  source_selection = gr.Dropdown(
157
  choices=AVAILABLE_SOURCES_UI,
158
  label="Select Sources",
 
180
  "\n\n### Powered by [Buster πŸ€–](www.github.com/jerpint/buster)"
181
  )
182
 
183
+ completion = gr.State()
184
 
185
  submit.click(user, [question, chatbot], [question, chatbot], queue=False).then(
186
+ get_answer, inputs=[chatbot, source_selection], outputs=[chatbot, completion]
187
+ ).then(add_sources, inputs=[chatbot, completion], outputs=[chatbot])
188
  question.submit(user, [question, chatbot], [question, chatbot], queue=False).then(
189
+ get_answer, inputs=[chatbot, source_selection], outputs=[chatbot, completion]
190
+ ).then(add_sources, inputs=[chatbot, completion], outputs=[chatbot])
191
 
192
+ chatbot.like(log_likes, completion)
193
 
194
  demo.queue(concurrency_count=16)
195
  demo.launch(debug=True, share=False)
cfg.py CHANGED
@@ -9,6 +9,12 @@ from buster.retriever import DeepLakeRetriever, Retriever
9
  from buster.tokenizers import GPTTokenizer
10
  from buster.validators import QuestionAnswerValidator, Validator
11
 
 
 
 
 
 
 
12
  logger = logging.getLogger(__name__)
13
  logging.basicConfig(level=logging.INFO)
14
 
 
9
  from buster.tokenizers import GPTTokenizer
10
  from buster.validators import QuestionAnswerValidator, Validator
11
 
12
+ from utils import init_mongo_db
13
+
14
+ MONGODB_URI = os.getenv("MONGODB_URI")
15
+ mongo_db = init_mongo_db(uri=MONGODB_URI, db_name="towardsai-buster")
16
+
17
+
18
  logger = logging.getLogger(__name__)
19
  logging.basicConfig(level=logging.INFO)
20
 
utils.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from pymongo.mongo_client import MongoClient
2
+ from pymongo.server_api import ServerApi
3
+
4
+
5
+ def init_mongo_db(uri: str, db_name: str):
6
+ """Initialize the mongodb database."""
7
+
8
+ try:
9
+ assert uri is not None, "No URI passed"
10
+ client = MongoClient(uri, server_api=ServerApi("1"))
11
+ database = client[db_name]
12
+ print("Connected to MongoDB")
13
+ return database
14
+ except Exception as e:
15
+ print("Something went wrong connecting to mongodb")
16
+ return