Spaces:
Runtime error
Runtime error
Greg Thompson
Update nlu endpoint with additionally logging around alternative decode process
8f01606
| import json | |
| import requests | |
| def add_message_text_to_sample_object(message_text): | |
| """ | |
| Builds a sample request object using an example of a student answer | |
| Input | |
| - message_text: str - an example of user input to test | |
| Example Input | |
| "test message" | |
| Output | |
| - b_string: json b-string - simulated Turn.io message data | |
| Example Output | |
| b'{"context": "hi", "message_data": {"author_id": "+57787919091", "author_type": "OWNER", "contact_uuid": "j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09", "message_body": "test message", "message_direction": "inbound", "message_id": "4kl209sd0-a7b8-2hj3-8563-3hu4a89b32", "message_inserted_at": "2023-01-10T02:37:28.477940Z", "message_updated_at": "2023-01-10T02:37:28.487319Z"}}' | |
| """ | |
| message_data = '{' + f'"author_id": "+57787919091", "author_type": "OWNER", "contact_uuid": "j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09", "message_body": "{message_text}", "message_direction": "inbound", "message_id": "4kl209sd0-a7b8-2hj3-8563-3hu4a89b32", "message_inserted_at": "2023-01-10T02:37:28.477940Z", "message_updated_at": "2023-01-10T02:37:28.487319Z"' + '}' | |
| # context_data = '{' + '"user":"", "state":"addition-question-sequence", "bot_message":"", "user_message":"{message_text}"' + '}' | |
| # V1 | |
| # context_data = '{' + '"user":"", "state":"start-conversation", "bot_message":"", "user_message":"{message_text}"' + '}' | |
| #V2 | |
| context_data = '{' + '"contact_uuid": "j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09", "current_state":"", "local_state": "", "user_message":""' + '}' | |
| # context_data = '{' + '"user":"", "state":"addition-question-sequence", "bot_message":"", "user_message":"{message_text}","text": "What is 2+3?","question_numbers": [4,3],"right_answer": 7,"number_correct": 2, "number_incorrect": 0, "hints_used": 0, "level": "easy"' + '}' | |
| json_string = '{' + f'"context_data": {context_data}, "message_data": {message_data}' + '}' | |
| b_string = json_string.encode("utf-8") | |
| return b_string | |
| # """ | |
| # "text": "What is 2+3?", | |
| # "question_numbers": [2,3], | |
| # "right_answer": 5, | |
| # "number_correct": 2, | |
| # "hints_used": 0, | |
| # """ | |
| def run_simulated_request(endpoint, sample_payload, context=None): | |
| print(f"Case: {sample_payload}") | |
| # Used for testing full message object - deprecated April 7 | |
| # b_string = add_message_text_to_sample_object(sample_answer) | |
| if endpoint == 'sentiment-analysis' or endpoint == 'text2int' or endpoint =='intent-classification': | |
| request = requests.post( | |
| url=f'http://localhost:7860/{endpoint}', | |
| json={'content': sample_payload} | |
| ).json() | |
| else: | |
| request = requests.post( | |
| url=f'http://localhost:7860/{endpoint}', | |
| data=b_string | |
| ).json() | |
| print(request) | |
| def run_full_nlu_endpoint_payload_test(sample_payload): | |
| request = requests.post( | |
| url=f'http://localhost:7860/nlu', | |
| data=sample_payload | |
| ).json() | |
| print(request) | |
| # # Case: Wrong key | |
| # run_full_nlu_endpoint_payload_test(b'{"message": {"author_id": "@event.message._vnd.v1.chat.owner", "author_type": "@event.message._vnd.v1.author.type", "contact_uuid": "@event.message._vnd.v1.chat.contact_uuid", "message_body": "@event.message.text.body", "message_direction": "@event.message._vnd.v1.direction", "message_id": "@event.message.id", "message_inserted_at": "@event.message._vnd.v1.chat.inserted_at", "message_updated_at": "@event.message._vnd.v1.chat.updated_at"}}') | |
| # # Case: Correct payload | |
| # run_full_nlu_endpoint_payload_test(b'{"message_data": {"author_id": "57787919091", "author_type": "OWNER", "contact_uuid": "df78gsdf78df", "message_body": "8", "message_direction": "inbound", "message_id": "dfgha789789ag9ga", "message_inserted_at": "2023-01-10T02:37:28.487319Z", "message_updated_at": "2023-01-10T02:37:28.487319Z"}}') | |
| # # Case: Incorrect payload values | |
| # run_full_nlu_endpoint_payload_test(b'{"message_data": {"author_id": "@event.message._vnd.v1.chat.owner", "author_type": "@event.message._vnd.v1.author.type", "contact_uuid": "@event.message._vnd.v1.chat.contact_uuid", "message_body": "@event.message.text.body", "message_direction": "@event.message._vnd.v1.direction", "message_id": "@event.message.id", "message_inserted_at": "@event.message._vnd.v1.chat.inserted_at", "message_updated_at": "@event.message._vnd.v1.chat.updated_at"}}') | |
| # Case: Wrong payload object | |
| run_full_nlu_endpoint_payload_test(b'{"message_data": {"_vnd": {"v1": {"author": {"id": 54327547257, "name": "Jin", "type": "OWNER"}, "card_uuid": None, "chat": {"assigned_to": None, "contact_uuid": "f7889-f78dfgb798-f786ah89g7-f78f9a", "inserted_at": "2023-03-28T13:21:47.581221Z", "owner": "+43789789146", "permalink": "", "state": "OPEN", "state_reason": "Re-opened by inbound message.", "unread_count": 97, "updated_at": "2023-04-07T21:05:27.389948Z", "uuid": "dfg9a78-d76a786dghas-78d9fga789g-a78d69a9"}, "direction": "inbound", "faq_uuid": None, "in_reply_to": None, "inserted_at": "2023-04-07T21:05:27.368580Z", "labels": [], "last_status": None, "last_status_timestamp": None, "on_fallback_channel": False, "rendered_content": None, "uuid": "hf78s7s89b-789fb68d9fg-789fb789dfb-f79sfb789"}}, "from": 5475248689, "id": "SBDE4zgAAy7887sfdT35SHFS", "text": {"body": 1000}, "timestamp": 1680901527, "type": "text"}, "type": "message"}') | |
| # run_simulated_request('intent-classification', 'exit') | |
| # run_simulated_request('intent-classification', "I'm not sure") | |
| # run_simulated_request('intent-classification', "easier") | |
| # run_simulated_request('intent-classification', "easy") | |
| # run_simulated_request('intent-classification', "harder") | |
| # run_simulated_request('intent-classification', "hard") | |
| # run_simulated_request('intent-classification', "hint") | |
| # run_simulated_request('intent-classification', "hin") | |
| # run_simulated_request('intent-classification', "hnt") | |
| # run_simulated_request('intent-classification', "stop") | |
| # run_simulated_request('intent-classification', "stp") | |
| # run_simulated_request('intent-classification', "sop") | |
| # run_simulated_request('intent-classification', "please stop") | |
| # run_simulated_request('sentiment-analysis', 'I reject it') | |
| # run_simulated_request('text2int', 'seven thousand nine hundred fifty seven') | |
| # run_simulated_request('nlu', 'test message') | |
| # run_simulated_request('nlu', 'eight') | |
| # run_simulated_request('nlu', 'is it 8') | |
| # run_simulated_request('nlu', 'can I know how its 0.5') | |
| # run_simulated_request('nlu', 'eight, nine, ten') | |
| # run_simulated_request('nlu', '8, 9, 10') | |
| # run_simulated_request('nlu', '8') | |
| # run_simulated_request('nlu', "I don't know") | |
| # run_simulated_request('nlu', "I don't know eight") | |
| # run_simulated_request('nlu', "I don't 9") | |
| # run_simulated_request('nlu', "0.2") | |
| # run_simulated_request('nlu', 'Today is a wonderful day') | |
| # run_simulated_request('nlu', 'IDK 5?') | |
| # run_simulated_request('nlu', 'hin') | |
| # run_simulated_request('nlu', 'exi') | |
| # run_simulated_request('nlu', 'easier') | |
| # run_simulated_request('nlu', 'stp') | |
| # run_simulated_request('nlu', '') | |
| # run_simulated_request('manager', '') | |
| # run_simulated_request('manager', 'add') | |
| # run_simulated_request('manager', 'subtract') | |
| # run_simulated_request("start", { | |
| # 'difficulty': 0.04, | |
| # 'do_increase': True | |
| # }) | |
| # run_simulated_request("hint", { | |
| # 'start': 5, | |
| # 'step': 1, | |
| # 'difficulty': 0.56 # optional | |
| # }) | |
| # run_simulated_request("question", { | |
| # 'start': 2, | |
| # 'step': 1, | |
| # 'question_num': 2 # optional | |
| # }) | |
| # run_simulated_request("difficulty", { | |
| # 'difficulty': 0.01, | |
| # 'do_increase': False # True | False | |
| # }) | |
| # Need to start with this command to populate users.json | |
| # If users.json is not already made | |
| # run_simulated_request("num_one", { | |
| # "user_id": "1", | |
| # "message_text": "", | |
| # }) | |
| # run_simulated_request("num_one", { | |
| # "user_id": "1", | |
| # "message_text": "61", | |
| # }) | |
| # run_simulated_request("sequence", { | |
| # 'start': 2, | |
| # 'step': 1, | |
| # 'sep': '... ' | |
| # }) | |
| # run_simulated_request('manager', 'exit') | |
| # Example of simplified object received from Turn.io stacks | |
| # This is a contrived example to show the structure, not an actual state | |
| # NOTE: This is actually a bstring, not a dict | |
| simplified_json = { | |
| "context": { | |
| "user": "+57787919091", | |
| "state": "answer-addition-problem", | |
| "bot_message": "What is 2+2?", | |
| "user_message": "eight", | |
| "type": "ask" | |
| }, | |
| "message_data": { | |
| "author_id": "+57787919091", | |
| "author_type": "OWNER", | |
| "contact_uuid": "j43hk26-2hjl-43jk-hnk2-k4ljl46j0ds09", | |
| "message_body": "eight", | |
| "message_direction": "inbound", | |
| "message_id": "4kl209sd0-a7b8-2hj3-8563-3hu4a89b32", | |
| "message_inserted_at": "2023-01-10T02:37:28.477940Z", | |
| "message_updated_at": "2023-01-10T02:37:28.487319Z" | |
| } | |
| } | |
| # Full example of event data from Turn.io | |
| # simplified_json is built from this in Turn.io | |
| # full_json = { | |
| # 'message': { | |
| # '_vnd': { | |
| # 'v1': { | |
| # 'author': { | |
| # 'id': 57787919091, | |
| # 'name': 'GT', | |
| # 'type': 'OWNER' | |
| # }, | |
| # 'card_uuid': None, | |
| # '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': 19, | |
| # 'updated_at': '2023-01-10T02:37:28.487319Z', | |
| # 'uuid': '4kl209sd0-a7b8-2hj3-8563-3hu4a89b32' | |
| # }, | |
| # 'direction': 'inbound', | |
| # 'faq_uuid': None, | |
| # 'in_reply_to': None, | |
| # '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': None, | |
| # 'last_status_timestamp': None, | |
| # 'on_fallback_channel': False, | |
| # 'rendered_content': None, | |
| # 'uuid': 's8df79zhws-h89s-hj23-7s8d-thb248d9bh2qn' | |
| # } | |
| # }, | |
| # 'from': 57787919091, | |
| # 'id': 'hsjkthzZGehkzs09sijWA3', | |
| # 'text': {'body': 'eight'}, | |
| # 'timestamp': 1673318248, | |
| # 'type': 'text' | |
| # }, | |
| # 'type': 'message' | |
| # } | |