корректные pydantic модели для автоматического определения класса по полю type

This commit is contained in:
Егор Кандрушин 2026-04-02 00:40:30 +03:00
parent b34cbaf677
commit 1e256a545b
11 changed files with 294 additions and 148 deletions

View file

@ -18,11 +18,11 @@ from lambda_agent_api.agent_api import AgentApi, OM
def my_callback(message):
if isinstance(message, OM.Error):
if isinstance(message, OM.MsgError):
print(f"\n[Ошибка: {message.code}] {message.details}")
elif isinstance(message, OM.Status):
elif isinstance(message, OM.MsgStatus):
print("✓ Agent status update")
elif isinstance(message, OM.GracefulDisconnect):
elif isinstance(message, OM.MsgGracefulDisconnect):
print("✓ Agent gracefully requested disconnect")
@ -34,7 +34,7 @@ async def main():
response = await api.send_message("Привет, агент!")
async for chunk in response:
if isinstance(chunk, OM.EventTextChunk):
if isinstance(chunk, OM.MsgEventTextChunk):
print(chunk.text, end="", flush=True)
# После окончания Generation возможно получить EventEnd в очереди и сохранить tokens
@ -75,7 +75,7 @@ try:
response = await api.send_message("Your question here")
async for chunk in response:
if isinstance(chunk, OM.EventTextChunk):
if isinstance(chunk, OM.MsgEventTextChunk):
print(chunk.text, end="", flush=True)
print("\nDone!")
@ -93,11 +93,11 @@ Callback функция для обработки событий вне гене
```python
def my_callback(message):
if isinstance(message, OM.Status):
if isinstance(message, OM.MsgStatus):
print("Agent status update")
elif isinstance(message, OM.Error):
elif isinstance(message, OM.MsgError):
print(f"Agent error: {message.code} - {message.details}")
elif isinstance(message, OM.GracefulDisconnect):
elif isinstance(message, OM.MsgGracefulDisconnect):
print("Agent disconnecting gracefully")
```
@ -106,7 +106,7 @@ def my_callback(message):
```python
import asyncio
import websockets
from lambda_agent_api.models import ServerMessage, OM
from lambda_agent_api.server import ServerMessage, OM
async def main():
@ -128,10 +128,10 @@ async def main():
match data:
case OM.AgentEvent(subtype=OM.AgentEventType.TEXT_CHUNK):
print(data.text, end="", flush=True)
case OM.EventEnd():
case OM.MsgEventEnd():
print(f"\n[Завершено, использовано токенов: {data.tokens_used}]")
break
case OM.Error():
case OM.MsgError():
print(f"\n[Ошибка: {data.code}] {data.details}")
break