Spaces:
Build error
Build error
Greg Thompson
commited on
Commit
•
e63aa20
1
Parent(s):
82e3c2a
Update /nlu endpoint to handle multiple input types
Browse files- app.py +25 -8
- scripts/make_request.py +14 -3
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
|
@@ -65,22 +66,38 @@ async def evaluate_user_message_with_nlu_api(request: Request):
|
|
65 |
message_data = data_dict.get('message_data', '')
|
66 |
message_text = message_data['message']['text']['body']
|
67 |
|
68 |
-
# Handles if a student answer is already an integer or a float
|
69 |
if type(message_text) == int or type(message_text) == float:
|
70 |
return JSONResponse(content={'type': 'integer', 'data': message_text})
|
71 |
|
72 |
-
#
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
# '32202' is text2int's error code for non-integer student answers (ie., "I don't know")
|
76 |
-
|
|
|
77 |
sentiment_api_resp = sentiment(message_text)
|
78 |
# [{'label': 'POSITIVE', 'score': 0.991188645362854}]
|
79 |
sent_data_dict = {'type': 'sentiment', 'data': sentiment_api_resp[0]['label']}
|
80 |
-
|
|
|
|
|
|
|
|
|
|
|
81 |
|
82 |
prepare_message_data_for_logging(message_data)
|
83 |
|
84 |
-
|
85 |
-
|
86 |
-
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
|
|
|
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,6 +74,7 @@ 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
|
@@ -82,7 +83,7 @@ print(request)
|
|
82 |
|
83 |
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'
|
84 |
|
85 |
-
|
86 |
request = requests.post(url=
|
87 |
'http://localhost:7860/nlu',
|
88 |
data=json2
|
@@ -91,12 +92,22 @@ request = requests.post(url=
|
|
91 |
print(request)
|
92 |
|
93 |
|
94 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
95 |
|
|
|
96 |
|
|
|
97 |
request = requests.post(url=
|
98 |
'http://localhost:7860/nlu',
|
99 |
-
data=
|
100 |
).json()
|
101 |
|
102 |
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
|
|
|
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
|
|
|
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)
|