48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
from fastapi import APIRouter, Depends, HTTPException, Request
|
|
from pydantic import BaseModel
|
|
|
|
import routes.chatbot_handler as chatbot_handler
|
|
import datetime
|
|
import random
|
|
|
|
|
|
|
|
|
|
router = APIRouter(tags=["ragchat"])
|
|
# settings= get_settings()
|
|
|
|
|
|
# تعریف مدل دادهها برای درخواستهای API
|
|
class RagQueryModal(BaseModel):
|
|
query: str
|
|
|
|
|
|
async def create_chat_id():
|
|
date = str((datetime.datetime.now())).replace(' ','-').replace(':','').replace('.','-')
|
|
|
|
chat_id = f'{date}-{random.randint(100000, 999999)}'
|
|
|
|
return chat_id
|
|
|
|
|
|
|
|
@router.post("/emergency_call")
|
|
async def emergency_call(payload: RagQueryModal):
|
|
print('emergency generate answer ...')
|
|
chat_id = await create_chat_id()
|
|
answer = await chatbot_handler.ask_chatbot_avalai(payload.query, chat_id)
|
|
# print('emergency answer ...', answer)
|
|
await chatbot_handler.credit_refresh()
|
|
print('*** ... ready for next ... ***')
|
|
return {"answer": answer}
|
|
|
|
@router.post("/run_chat")
|
|
async def run_chat(payload: RagQueryModal, request: Request):
|
|
# request.state.app
|
|
print('run_chat start ...')
|
|
chat_id = await create_chat_id()
|
|
answer = await chatbot_handler.ask_chatbot(payload.query, chat_id)
|
|
print('*** ... ready for next ... ***')
|
|
|
|
return {"answer": answer}
|