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)