Добавлено логирование основыных компонентов

This commit is contained in:
Ярослав Малинин 2026-04-24 22:33:12 +03:00
parent 9e7d5d9add
commit 64c9c4a622
7 changed files with 210 additions and 88 deletions

View file

@ -12,29 +12,37 @@ from lambda_agent_api.client import ClientMessage, MsgUserMessage
from src.agent import AgentChat
from src.api.dependencies import get_chat_ws
from src.core.logger import get_logger
router = APIRouter()
logger = get_logger(__name__)
@router.websocket("/v1/agent_ws/{chat_id}/")
async def websocket_endpoint(
ws: WebSocket,
chat_id: str,
# важно использовать именно _ws вариант, чтобы корректно обрабатывались исключения
chat: Annotated[AgentChat, Depends(get_chat_ws)],
):
logger.trace(f"WebSocket connection accepted for chat_id: {chat_id}")
await ws.accept()
await ws.send_text(MsgStatus().model_dump_json())
try:
while True:
raw = await ws.receive_text()
logger.trace(f"Received raw message: {raw}")
msg = ClientMessage.validate_json(raw)
await process_message(ws, chat, msg)
except WebSocketDisconnect:
logger.trace(f"WebSocket disconnected for chat_id: {chat_id}")
pass
except Exception as exc:
logger.trace(f"Error occurred for chat_id {chat_id}: {exc}")
await ws.send_text(
MsgError(code="INTERNAL_ERROR", details=str(exc)).model_dump_json()
)
@ -43,5 +51,7 @@ async def websocket_endpoint(
async def process_message(ws: WebSocket, chat: AgentChat, msg):
match msg:
case MsgUserMessage():
logger.trace(f"Processing user message: {msg.text}")
async for chunk in chat.astream(msg.text, msg.attachments):
logger.trace(f"Sending chunk: {chunk}")
await ws.send_text(chunk.model_dump_json())