import uvicorn
from fastapi import FastAPI

from qa_engine import logger, Config, QAEngine


config = Config()
app = FastAPI()
qa_engine = QAEngine(config=config)


@app.get('/')
def get_answer(question: str, messages_context: str = ''):
    logger.info(
        f'Received request with question: {question}' \
        f'and context: {messages_context}'
    )
    response = qa_engine.get_response(
        question=question,
        messages_context=messages_context
    )
    return {
        'answer': response.get_answer(),
        'sources': response.get_sources_as_text()
    }


if __name__ == '__main__':
    uvicorn.run(app, host='0.0.0.0', port=8000)