aidial_interceptors_sdk/chat_completion/request_handler.py (37 lines of code) (raw):
from typing import List
from aidial_interceptors_sdk.chat_completion.element_path import ElementPath
from aidial_interceptors_sdk.chat_completion.helpers import (
traverse_list,
traverse_required_dict_value,
)
from aidial_interceptors_sdk.chat_completion.request_message_handler import (
RequestMessageHandler,
)
class RequestHandler(RequestMessageHandler):
async def on_request_message(
self, path: ElementPath, message: dict
) -> List[dict]:
return [message]
async def on_request_messages(self, messages: List[dict]) -> List[dict]:
return messages
async def on_request(self, request: dict) -> dict:
return request
async def traverse_request(self, r: dict) -> dict:
async def traverse_message(
path: ElementPath, message: dict
) -> List[dict]:
message = await self.traverse_request_message(path, message)
return await self.on_request_message(path, message)
async def traverse_messages(
path: ElementPath, messages: List[dict]
) -> List[dict]:
messages = await traverse_list(
path.with_message_idx, messages, traverse_message
)
return await self.on_request_messages(messages)
path = ElementPath()
r = await traverse_required_dict_value(
path, r, "messages", traverse_messages
)
r = await self.on_request(r)
return r