calpoly-csai / api

Official API for the NIMBUS Voice Assistant accessible via HTTP REST protocol.
https://nimbus.api.calpolycsai.com/
GNU General Public License v3.0
9 stars 4 forks source link

500 Error when asking a question about course prerequisites #150

Closed snekiam closed 4 years ago

snekiam commented 4 years ago

Describe the bug Asking a question about course prerequisites yields "I'm sorry, I don't understand..."

To Reproduce Steps to reproduce the behavior:

  1. Go to https://nimbus.calpolycsai.com/
  2. Ask "What are the prerequisites for CSC-484?"
  3. See "I'm sorry, I don't understand. Please try another question."

Expected behavior Question is answered.

Additional context Stack-trace:

[2020-05-17 20:51:36,256] ERROR in app: Exception on /ask [POST]
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/usr/local/lib/python3.8/dist-packages/flask_cors/extension.py", line 161, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/usr/local/lib/python3.8/dist-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/nimbus/flask_api.py", line 111, in handle_question
    response = {"answer": nimbus.answer_question(question)}
  File "/nimbus/nimbus.py", line 42, in answer_question
    answer = qa.answer(ans_dict)
  File "/nimbus/QA.py", line 52, in answer
    db_data = self.db_query(extracted_vars, self.db)
  File "/nimbus/QA.py", line 231, in _chain_db_access
    for key, val in fn(extracted_vars, db).items():
  File "/nimbus/QA.py", line 95, in _get_property
    value = db.get_property_from_entity(
  File "/nimbus/database_wrapper.py", line 566, in get_property_from_entity
    props = self._get_property_from_entity(prop, entity, identifier, tag_column_map)
  File "/nimbus/database_wrapper.py", line 552, in _get_property_from_entity
    results.append((total_similarity, tags, str(row.__dict__[prop])))
KeyError: 'prerequisites'
snekiam commented 4 years ago

This should be fixed with the new database version by @cameron-toy.

snekiam commented 4 years ago

Fixed in #162