chatbot / server.py
celestialli's picture
Create server.py
0568b88
Raw
History Blame Contribute Delete
1.46 kB
from typing import Optional
from fastapi import BackgroundTasks, FastAPI
from pydantic import BaseModel
import json
import time
import random
app = FastAPI()
answer_dict = dict()
class DialogInfo(BaseModel):
q_id: str = None
query: str = None
history: list = []
@app.get("/")
def read_root():
return {"Hello": "World!"}
@app.get("/chatbot/dialoginfo")
def read_dialog(dialogid: str):
# return dialogid
return answer_dict[dialogid]
@app.get("/chatbot/finishquery")
def read_dialog(dialogid: str):
# return dialogid
return random.choices([True, False], (0.3, 0.7))[0]
def background_process(diainfo: DialogInfo):
answer_dict[diainfo.q_id].q_id = diainfo.q_id
answer_dict[diainfo.q_id].history = diainfo.history
answer_dict[diainfo.q_id].query = diainfo.query
for _ in range(5):
answer_dict[diainfo.q_id].history = diainfo.history
if diainfo.q_id.startswith('0'):
answer_dict[diainfo.q_id].query = answer_dict[diainfo.q_id].query + 'i'
elif diainfo.q_id.startswith('9'):
answer_dict[diainfo.q_id].query = answer_dict[diainfo.q_id].query + 'o'
time.sleep(0.5)
print(answer_dict[diainfo.q_id])
@app.post("/chatbot/")
def read_query(chat: DialogInfo, background_tasks: BackgroundTasks):
answer_dict[chat.q_id] = chat
background_tasks.add_task(background_process, chat)
return {"code": 202, "msg": f"Query id {chat.q_id} accepted."}