Agentes Personalizados
Agente de Cuenta Regresiva
from typing import AsyncGenerator, List, Sequence
from saptiva_agents.agents import BaseChatAgent
from saptiva_agents.base import Response
from saptiva_agents.messages import BaseAgentEvent, BaseChatMessage, TextMessage
from saptiva_agents.core import CancellationToken
class CountDownAgent(BaseChatAgent):
def __init__(self, name: str, count: int = 3):
super().__init__(name, "A simple agent that counts down.")
self._count = count
@property
def produced_message_types(self) -> Sequence[type[BaseChatMessage]]:
return (TextMessage,)
async def on_messages(self, messages: Sequence[BaseChatMessage], cancellation_token: CancellationToken) -> Response:
# Llama a on_messages_stream.
response: Response | None = None
async for message in self.on_messages_stream(messages, cancellation_token):
if isinstance(message, Response):
response = message
assert response is not None
return response
async def on_messages_stream(
self, messages: Sequence[BaseChatMessage], cancellation_token: CancellationToken
) -> AsyncGenerator[BaseAgentEvent | BaseChatMessage | Response, None]:
inner_messages: List[BaseAgentEvent | BaseChatMessage] = []
for i in range(self._count, 0, -1):
msg = TextMessage(content=f"{i}...", source=self.name)
inner_messages.append(msg)
yield msg
# La respuesta se devuelve al final del stream.
# Contiene el mensaje final y todos los mensajes internos.
yield Response(chat_message=TextMessage(content="Done!", source=self.name), inner_messages=inner_messages)
async def on_reset(self, cancellation_token: CancellationToken) -> None:
pass
async def run_countdown_agent() -> None:
# Crear un agente de cuenta regresiva.
countdown_agent = CountDownAgent("countdown")
# Ejecutar el agente con una tarea dada y transmitir la respuesta.
async for message in countdown_agent.on_messages_stream([], CancellationToken()):
if isinstance(message, Response):
print(message.chat_message.content)
else:
print(message.content)
# Usar asyncio.run(run_countdown_agent()) al ejecutar en un script.
await run_countdown_agent()Agente Aritmético
Uso de Clientes de Modelos Personalizados en Agentes Personalizados
Última actualización