Manejo De Estados
Hasta ahora, hemos discutido cómo construir componentes en una aplicación multi-agente: agentes, equipos, condiciones de terminación. En muchos casos, es útil guardar el estado de estos componentes en el disco y cargarlos más tarde. Esto es particularmente útil en una aplicación web donde los endpoints sin estado responden a solicitudes y necesitan cargar el estado de la aplicación desde un almacenamiento persistente.
En este cuaderno, discutiremos cómo guardar y cargar el estado de agentes, equipos y terminación.
Agentes de Ahorro y Carga
Podemos obtener el estado de un agente llamando al método save_state() en un AssistantAgent.
import asyncio
from saptiva_agents import SAPTIVA_LEGACY
from saptiva_agents.agents import AssistantAgent
from saptiva_agents.conditions import MaxMessageTermination
from saptiva_agents.messages import TextMessage
from saptiva_agents.teams import RoundRobinGroupChat
from saptiva_agents.ui import Console
from saptiva_agents.core import CancellationToken
from saptiva_agents.base import SaptivaAIChatCompletionClient
model_client = SaptivaAIChatCompletionClient(
model=SAPTIVA_LEGACY,
api_key="TU_SAPTIVA_API_KEY",
)
assistant_agent = AssistantAgent(
name="assistant_agent",
system_message="You are a helpful assistant",
model_client=model_client
)
async def main() -> None:
# Utilice `asyncio.run(...)` cuando lo ejecute en un script
response = await assistant_agent.on_messages(
[TextMessage(content="Write a 3 line poem on lake tangayika", source="user")], CancellationToken()
)
print(response.chat_message.content)
await model_client.close()
asyncio.run(main())Equipos de Ahorro y Carga
Podemos obtener el estado de un equipo llamando al método save_state en el equipo y cargarlo de nuevo llamando al método load_state en el equipo.
Cuando llamamos a save_state en un equipo, guarda el estado de todos los agentes en el equipo.
Comenzaremos creando un equipo simple de RoundRobinGroupChat con un solo agente y le pediremos que escriba un poema.
Si reiniciamos el equipo (simulando la creación del equipo) y hacemos la pregunta ¿What was the last line of the poem you wrote?, vemos que el equipo no puede lograrlo ya que no hay referencia a la ejecución anterior.
A continuación, cargamos el estado del equipo y hacemos la misma pregunta. Vemos que el equipo es capaz de devolver con precisión la última línea del poema que escribió.
Estado Persistente (Archivo o Base de Datos)
En muchos casos, es posible que deseemos persistir el estado del equipo en disco (o en una base de datos) y cargarlo posteriormente. El estado es un diccionario que puede ser serializado a un archivo o escrito en una base de datos.
Última actualización