подключение api к модели через deepagent

This commit is contained in:
Егор Кандрушин 2026-04-03 11:35:35 +03:00
parent 04bb17190e
commit 635986ba70
5 changed files with 864 additions and 13 deletions

View file

@ -1,7 +1,14 @@
from fastapi import APIRouter, WebSocket, WebSocketDisconnect
from lambda_agent_api.server import *
from lambda_agent_api.client import *
from lambda_agent_api.server import (
MsgStatus,
MsgEventTextChunk,
MsgEventEnd,
MsgError,
)
from lambda_agent_api.client import ClientMessage, MsgUserMessage
from src.agent.base import agent
router = APIRouter()
@ -26,20 +33,23 @@ async def websocket_endpoint(ws: WebSocket):
)
async def process_message(ws: WebSocket, msg): # msg должно быть ClientMessage (аннотация не работает из-за TypeAdapter)
async def process_message(
ws: WebSocket, msg
): # msg должно быть ClientMessage (аннотация не работает из-за TypeAdapter)
match msg:
case MsgUserMessage():
await handle_user_message(ws, msg.text)
async def handle_user_message(ws: WebSocket, text: str):
await ws.send_text(
MsgEventTextChunk(
text="Hello!",
).model_dump_json()
)
await ws.send_text(
MsgEventEnd(
tokens_used=10,
).model_dump_json()
)
tokens_used = 0
async for event in agent.astream({"messages": [{"role": "user", "content": text}]}):
messages = event.get("messages") or event.get("model", {}).get("messages", [])
if messages:
last_msg = messages[-1]
content = getattr(last_msg, "content", None)
if isinstance(content, str) and content.strip():
await ws.send_text(MsgEventTextChunk(text=content.strip()).model_dump_json())
await ws.send_text(MsgEventEnd(tokens_used=tokens_used).model_dump_json())