Переимнованы OutgoingMessage в ServerMessage и IncomingMessage в ClientMessage
This commit is contained in:
parent
dab8cf6335
commit
f2d50ae88b
3 changed files with 10 additions and 10 deletions
|
|
@ -79,7 +79,7 @@ async with AgentApi("ws://localhost:8000") as agent:
|
||||||
```python
|
```python
|
||||||
import asyncio
|
import asyncio
|
||||||
import websockets
|
import websockets
|
||||||
from models import OutgoingMessage, OM
|
from models import ServerMessage, OM
|
||||||
|
|
||||||
async def main():
|
async def main():
|
||||||
uri = "ws://localhost:8000/ws"
|
uri = "ws://localhost:8000/ws"
|
||||||
|
|
@ -95,7 +95,7 @@ async def main():
|
||||||
# 3. Читаем ответ в виде потока событий
|
# 3. Читаем ответ в виде потока событий
|
||||||
while True:
|
while True:
|
||||||
msg = await ws.recv()
|
msg = await ws.recv()
|
||||||
data = OutgoingMessage.model_validate_json(msg)
|
data = ServerMessage.model_validate_json(msg)
|
||||||
|
|
||||||
match data:
|
match data:
|
||||||
case OM.AgentEvent(subtype=OM.AgentEventType.TEXT_CHUNK):
|
case OM.AgentEvent(subtype=OM.AgentEventType.TEXT_CHUNK):
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import logging
|
import logging
|
||||||
from typing import AsyncGenerator
|
from typing import AsyncGenerator
|
||||||
import aiohttp
|
import aiohttp
|
||||||
from models import IM, OM, IncomingMessage, OutgoingMessage
|
from models import IM, OM, ClientMessage, ServerMessage
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
@ -126,7 +126,7 @@ class AgentApi:
|
||||||
self._connected = False
|
self._connected = False
|
||||||
raise aiohttp.ClientError(f"Failed to send message: {e}") from e
|
raise aiohttp.ClientError(f"Failed to send message: {e}") from e
|
||||||
|
|
||||||
async def listen(self) -> AsyncGenerator[OutgoingMessage, None]:
|
async def listen(self) -> AsyncGenerator[ServerMessage, None]:
|
||||||
"""
|
"""
|
||||||
Читает поток сообщений от сервера и десериализует их.
|
Читает поток сообщений от сервера и десериализует их.
|
||||||
|
|
||||||
|
|
@ -137,7 +137,7 @@ class AgentApi:
|
||||||
- OM.AgentEvent: Возвращает объект события
|
- OM.AgentEvent: Возвращает объект события
|
||||||
|
|
||||||
Yields:
|
Yields:
|
||||||
OutgoingMessage: Десериализованное сообщение от сервера
|
ServerMessage: Десериализованное сообщение от сервера
|
||||||
|
|
||||||
Raises:
|
Raises:
|
||||||
RuntimeError: Если соединение не установлено
|
RuntimeError: Если соединение не установлено
|
||||||
|
|
@ -158,7 +158,7 @@ class AgentApi:
|
||||||
async for msg in self._ws:
|
async for msg in self._ws:
|
||||||
if msg.type == aiohttp.WSMsgType.TEXT:
|
if msg.type == aiohttp.WSMsgType.TEXT:
|
||||||
try:
|
try:
|
||||||
outgoing_msg = OutgoingMessage.model_validate_json(
|
outgoing_msg = ServerMessage.model_validate_json(
|
||||||
msg.data)
|
msg.data)
|
||||||
logger.debug(
|
logger.debug(
|
||||||
f"Received message of type: {outgoing_msg.type}")
|
f"Received message of type: {outgoing_msg.type}")
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ class IM:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
IncomingMessage = Annotated[
|
ClientMessage = Annotated[
|
||||||
Union[IM.UserMessage,],
|
Union[IM.UserMessage,],
|
||||||
Field(discriminator="type")
|
Field(discriminator="type")
|
||||||
]
|
]
|
||||||
|
|
@ -33,7 +33,7 @@ IncomingMessage = Annotated[
|
||||||
Объединяет все типы входящих сообщений в одно для удобной автоматической десериализации.\n
|
Объединяет все типы входящих сообщений в одно для удобной автоматической десериализации.\n
|
||||||
Pydantic сам определит нужный тип в зависимости от поля ``type``.\n
|
Pydantic сам определит нужный тип в зависимости от поля ``type``.\n
|
||||||
Использование:\n
|
Использование:\n
|
||||||
msg = IncomingMessage.model_validate_json(json)
|
msg = ClientMessage.model_validate_json(json)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -100,7 +100,7 @@ class OM:
|
||||||
type: Literal[OM.Type.GRACEFUL_DISCONNECT]
|
type: Literal[OM.Type.GRACEFUL_DISCONNECT]
|
||||||
|
|
||||||
|
|
||||||
OutgoingMessage = Annotated[
|
ServerMessage = Annotated[
|
||||||
Union[OM.Status, OM.AgentEvent, OM.Error, OM.GracefulDisconnect],
|
Union[OM.Status, OM.AgentEvent, OM.Error, OM.GracefulDisconnect],
|
||||||
Field(discriminator="type")
|
Field(discriminator="type")
|
||||||
]
|
]
|
||||||
|
|
@ -108,5 +108,5 @@ OutgoingMessage = Annotated[
|
||||||
Объединяет все типы исходящих сообщений в одно для удобной автоматической десериализации.\n
|
Объединяет все типы исходящих сообщений в одно для удобной автоматической десериализации.\n
|
||||||
Pydantic сам определит нужный тип в зависимости от поля ``type``.\n
|
Pydantic сам определит нужный тип в зависимости от поля ``type``.\n
|
||||||
Использование:\n
|
Использование:\n
|
||||||
msg = OutgoingMessage.model_validate_json(json)
|
msg = ServerMessage.model_validate_json(json)
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue