Greg Thompson commited on
Commit
979ee7a
·
2 Parent(s): 523bdca e63aa20

Merge branch 'feature-accept-more-input-types' into 'main'

Browse files

Feature accept more input types

See merge request tangibleai/community/mathtext-fastapi!6

Files changed (2) hide show
  1. app.py +30 -7
  2. scripts/make_request.py +32 -0
app.py CHANGED
@@ -1,6 +1,7 @@
1
  """FastAPI endpoint
2
  To run locally use 'uvicorn app:app --host localhost --port 7860'
3
  """
 
4
 
5
  from fastapi import FastAPI, Request
6
  from fastapi.responses import JSONResponse
@@ -63,18 +64,40 @@ async def evaluate_user_message_with_nlu_api(request: Request):
63
 
64
  data_dict = await request.json()
65
  message_data = data_dict.get('message_data', '')
66
- message_text = message_data['message']['text']['body'].lower()
67
 
68
- int_api_resp = text2int(message_text)
 
 
69
 
70
- if int_api_resp == 32202:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  sentiment_api_resp = sentiment(message_text)
72
  # [{'label': 'POSITIVE', 'score': 0.991188645362854}]
73
  sent_data_dict = {'type': 'sentiment', 'data': sentiment_api_resp[0]['label']}
74
- return JSONResponse(content={'type': 'sentiment', 'data': 'negative'})
 
 
 
 
 
75
 
76
  prepare_message_data_for_logging(message_data)
77
 
78
- int_data_dict = {'type': 'integer', 'data': int_api_resp}
79
-
80
- return JSONResponse(content=int_data_dict)
 
1
  """FastAPI endpoint
2
  To run locally use 'uvicorn app:app --host localhost --port 7860'
3
  """
4
+ import re
5
 
6
  from fastapi import FastAPI, Request
7
  from fastapi.responses import JSONResponse
 
64
 
65
  data_dict = await request.json()
66
  message_data = data_dict.get('message_data', '')
67
+ message_text = message_data['message']['text']['body']
68
 
69
+ # Handles if a student answer is already an integer or a float (ie., 8)
70
+ if type(message_text) == int or type(message_text) == float:
71
+ return JSONResponse(content={'type': 'integer', 'data': message_text})
72
 
73
+ # Removes whitespace and converts str to arr to handle multiple numbers
74
+ message_text_arr = re.split(", |,| ", message_text.strip())
75
+
76
+ # Handle if a student answer is a string of numbers (ie., "8,9, 10")
77
+ if all(ele.isdigit() for ele in message_text_arr):
78
+ return JSONResponse(content={'type': 'integer', 'data': ','.join(message_text_arr)})
79
+
80
+ student_response_arr = []
81
+
82
+ for student_response in message_text_arr:
83
+ # Checks the student answer and returns an integer
84
+
85
+ int_api_resp = text2int(student_response.lower())
86
+ student_response_arr.append(int_api_resp)
87
+
88
+ # '32202' is text2int's error code for non-integer student answers (ie., "I don't know")
89
+ # If any part of the list is 32202, sentiment analysis will run
90
+ if 32202 in student_response_arr:
91
  sentiment_api_resp = sentiment(message_text)
92
  # [{'label': 'POSITIVE', 'score': 0.991188645362854}]
93
  sent_data_dict = {'type': 'sentiment', 'data': sentiment_api_resp[0]['label']}
94
+ response_object = {'type': 'sentiment', 'data': 'negative'}
95
+ else:
96
+ if len(student_response_arr) > 1:
97
+ response_object = {'type': 'integer', 'data': ','.join(str(num) for num in student_response_arr)}
98
+ else:
99
+ response_object = {'type': 'integer', 'data': student_response_arr[0]}
100
 
101
  prepare_message_data_for_logging(message_data)
102
 
103
+ return JSONResponse(content=response_object)
 
 
scripts/make_request.py CHANGED
@@ -74,9 +74,41 @@ print(request)
74
 
75
  json = b'{"message_data": {"message":{"_vnd":{"v1":{"author":{"id":57787919091,"name":"GT","type":"OWNER"},"card_uuid":null,"chat":{"assigned_to":{"id":"jhk151kl-hj42-3752-3hjk-h4jk6hjkk2","name":"Greg Thompson","type":"OPERATOR"},"contact_uuid":"j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09","inserted_at":"2022-07-05T04:00:34.033522Z","owner":"+57787919091","permalink":"https://app.turn.io/c/4kl209sd0-a7b8-2hj3-8563-3hu4a89b32","state":"OPEN","state_reason":"Re-opened by inbound message.","unread_count":14,"updated_at":"2023-01-10T02:37:28.487319Z","uuid":"4kl209sd0-a7b8-2hj3-8563-3hu4a89b32"},"direction":"inbound","faq_uuid":null,"in_reply_to":null,"inserted_at":"2023-01-10T02:37:28.477940Z","labels":[{"confidence":0.506479332,"metadata":{"nlu":{"confidence":0.506479332,"intent":"question","model_name":"nlu-general-spacy-ngrams-20191014"}},"uuid":"ha7890s2k-hjk2-2476-s8d9-fh9779a8a9ds","value":"Unclassified"}],"last_status":null,"last_status_timestamp":null,"on_fallback_channel":false,"rendered_content":null,"uuid":"s8df79zhws-h89s-hj23-7s8d-thb248d9bh2qn"}},"from":57787919091,"id":"hsjkthzZGehkzs09sijWA3","text":{"body":"eight"},"timestamp":1673318248,"type":"text"},"type":"message"}}\n'
76
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  request = requests.post(url=
78
  'http://localhost:7860/nlu',
79
  data=json
80
  ).json()
81
 
82
  print(request)
 
 
74
 
75
  json = b'{"message_data": {"message":{"_vnd":{"v1":{"author":{"id":57787919091,"name":"GT","type":"OWNER"},"card_uuid":null,"chat":{"assigned_to":{"id":"jhk151kl-hj42-3752-3hjk-h4jk6hjkk2","name":"Greg Thompson","type":"OPERATOR"},"contact_uuid":"j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09","inserted_at":"2022-07-05T04:00:34.033522Z","owner":"+57787919091","permalink":"https://app.turn.io/c/4kl209sd0-a7b8-2hj3-8563-3hu4a89b32","state":"OPEN","state_reason":"Re-opened by inbound message.","unread_count":14,"updated_at":"2023-01-10T02:37:28.487319Z","uuid":"4kl209sd0-a7b8-2hj3-8563-3hu4a89b32"},"direction":"inbound","faq_uuid":null,"in_reply_to":null,"inserted_at":"2023-01-10T02:37:28.477940Z","labels":[{"confidence":0.506479332,"metadata":{"nlu":{"confidence":0.506479332,"intent":"question","model_name":"nlu-general-spacy-ngrams-20191014"}},"uuid":"ha7890s2k-hjk2-2476-s8d9-fh9779a8a9ds","value":"Unclassified"}],"last_status":null,"last_status_timestamp":null,"on_fallback_channel":false,"rendered_content":null,"uuid":"s8df79zhws-h89s-hj23-7s8d-thb248d9bh2qn"}},"from":57787919091,"id":"hsjkthzZGehkzs09sijWA3","text":{"body":"eight"},"timestamp":1673318248,"type":"text"},"type":"message"}}\n'
76
 
77
+ # eight > 8
78
+ request = requests.post(url=
79
+ 'http://localhost:7860/nlu',
80
+ data=json
81
+ ).json()
82
+ print(request)
83
+
84
+ json2 = b'{"message_data": {"message":{"_vnd":{"v1":{"author":{"id":57787919091,"name":"GT","type":"OWNER"},"card_uuid":null,"chat":{"assigned_to":{"id":"jhk151kl-hj42-3752-3hjk-h4jk6hjkk2","name":"Greg Thompson","type":"OPERATOR"},"contact_uuid":"j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09","inserted_at":"2022-07-05T04:00:34.033522Z","owner":"+57787919091","permalink":"https://app.turn.io/c/4kl209sd0-a7b8-2hj3-8563-3hu4a89b32","state":"OPEN","state_reason":"Re-opened by inbound message.","unread_count":14,"updated_at":"2023-01-10T02:37:28.487319Z","uuid":"4kl209sd0-a7b8-2hj3-8563-3hu4a89b32"},"direction":"inbound","faq_uuid":null,"in_reply_to":null,"inserted_at":"2023-01-10T02:37:28.477940Z","labels":[{"confidence":0.506479332,"metadata":{"nlu":{"confidence":0.506479332,"intent":"question","model_name":"nlu-general-spacy-ngrams-20191014"}},"uuid":"ha7890s2k-hjk2-2476-s8d9-fh9779a8a9ds","value":"Unclassified"}],"last_status":null,"last_status_timestamp":null,"on_fallback_channel":false,"rendered_content":null,"uuid":"s8df79zhws-h89s-hj23-7s8d-thb248d9bh2qn"}},"from":57787919091,"id":"hsjkthzZGehkzs09sijWA3","text":{"body":"eight, nine, ten"},"timestamp":1673318248,"type":"text"},"type":"message"}}\n'
85
+
86
+ # "eight, nine, ten" > 8,9,10
87
+ request = requests.post(url=
88
+ 'http://localhost:7860/nlu',
89
+ data=json2
90
+ ).json()
91
+
92
+ print(request)
93
+
94
+
95
+ json = b'{"message_data": {"message":{"_vnd":{"v1":{"author":{"id":57787919091,"name":"GT","type":"OWNER"},"card_uuid":null,"chat":{"assigned_to":{"id":"jhk151kl-hj42-3752-3hjk-h4jk6hjkk2","name":"Greg Thompson","type":"OPERATOR"},"contact_uuid":"j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09","inserted_at":"2022-07-05T04:00:34.033522Z","owner":"+57787919091","permalink":"https://app.turn.io/c/4kl209sd0-a7b8-2hj3-8563-3hu4a89b32","state":"OPEN","state_reason":"Re-opened by inbound message.","unread_count":14,"updated_at":"2023-01-10T02:37:28.487319Z","uuid":"4kl209sd0-a7b8-2hj3-8563-3hu4a89b32"},"direction":"inbound","faq_uuid":null,"in_reply_to":null,"inserted_at":"2023-01-10T02:37:28.477940Z","labels":[{"confidence":0.506479332,"metadata":{"nlu":{"confidence":0.506479332,"intent":"question","model_name":"nlu-general-spacy-ngrams-20191014"}},"uuid":"ha7890s2k-hjk2-2476-s8d9-fh9779a8a9ds","value":"Unclassified"}],"last_status":null,"last_status_timestamp":null,"on_fallback_channel":false,"rendered_content":null,"uuid":"s8df79zhws-h89s-hj23-7s8d-thb248d9bh2qn"}},"from":57787919091,"id":"hsjkthzZGehkzs09sijWA3","text":{"body":8},"timestamp":1673318248,"type":"text"},"type":"message"}}\n'
96
+
97
+ # 8 > 8
98
+ request = requests.post(url=
99
+ 'http://localhost:7860/nlu',
100
+ data=json
101
+ ).json()
102
+
103
+ print(request)
104
+
105
+ json = b'{"message_data": {"message":{"_vnd":{"v1":{"author":{"id":57787919091,"name":"GT","type":"OWNER"},"card_uuid":null,"chat":{"assigned_to":{"id":"jhk151kl-hj42-3752-3hjk-h4jk6hjkk2","name":"Greg Thompson","type":"OPERATOR"},"contact_uuid":"j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09","inserted_at":"2022-07-05T04:00:34.033522Z","owner":"+57787919091","permalink":"https://app.turn.io/c/4kl209sd0-a7b8-2hj3-8563-3hu4a89b32","state":"OPEN","state_reason":"Re-opened by inbound message.","unread_count":14,"updated_at":"2023-01-10T02:37:28.487319Z","uuid":"4kl209sd0-a7b8-2hj3-8563-3hu4a89b32"},"direction":"inbound","faq_uuid":null,"in_reply_to":null,"inserted_at":"2023-01-10T02:37:28.477940Z","labels":[{"confidence":0.506479332,"metadata":{"nlu":{"confidence":0.506479332,"intent":"question","model_name":"nlu-general-spacy-ngrams-20191014"}},"uuid":"ha7890s2k-hjk2-2476-s8d9-fh9779a8a9ds","value":"Unclassified"}],"last_status":null,"last_status_timestamp":null,"on_fallback_channel":false,"rendered_content":null,"uuid":"s8df79zhws-h89s-hj23-7s8d-thb248d9bh2qn"}},"from":57787919091,"id":"hsjkthzZGehkzs09sijWA3","text":{"body":"8, 9, 10"},"timestamp":1673318248,"type":"text"},"type":"message"}}\n'
106
+
107
+ # 8, 9, 10 > 8,9,10
108
  request = requests.post(url=
109
  'http://localhost:7860/nlu',
110
  data=json
111
  ).json()
112
 
113
  print(request)
114
+