File size: 1,518 Bytes
7ae78bd ed5ec6a 7ae78bd ed5ec6a 3061962 ed5ec6a 3061962 ed5ec6a 3061962 ed5ec6a 3061962 ed5ec6a 3061962 ed5ec6a 3061962 7ae78bd ed5ec6a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import asyncio
from ocr.api.message import message_router
from ocr.api.message.db_requests import get_all_chat_messages_obj, save_assistant_user_message
from ocr.api.message.models import MessageModel
from ocr.api.message.schemas import AllMessageWrapper, AllMessageResponse, CreateMessageRequest
from ocr.api.openai_requests import generate_agent_response
from ocr.api.report.db_requests import get_report_obj_by_id
from ocr.api.report.dto import Paging
from ocr.api.utils import transform_messages_to_openai
from ocr.core.wrappers import OcrResponseWrapper
@message_router.get('/{reportId}/all')
async def get_all_chat_messages(
reportId: str
) -> AllMessageWrapper:
messages = await get_all_chat_messages_obj(reportId)
response = AllMessageResponse(
paging=Paging(pageSize=len(messages), pageIndex=0, totalCount=len(messages)),
data=messages
)
return AllMessageWrapper(data=response)
@message_router.post('/{reportId}')
async def create_message(
reportId: str,
message_data: CreateMessageRequest,
) -> OcrResponseWrapper[MessageModel]:
messages, report = await asyncio.gather(
get_all_chat_messages_obj(reportId),
get_report_obj_by_id(reportId)
)
message_history = transform_messages_to_openai(messages, message_data.text)
response = await generate_agent_response(message_history, report)
response = await save_assistant_user_message(message_data.text, response, reportId)
return OcrResponseWrapper(data=response)
|