‎
loginstudio
  • Overview
  • COMIENZA
    • Quickstart
  • Basicos
    • Modelos Disponibles
    • TEXT API (NEW)
    • TEXT API (ACTUAL)
    • Formas de pago
  • Mejores prácticas
    • RAG
    • Prompteo
  • Saptiva Agents
    • Introducción
    • Instalación
    • Quick Start
    • Tutorial
      • Modelos
      • Mensajes
      • Agentes
      • Equipos
      • Human-in-the-Loop
      • Terminación
      • Manejo De Estados
    • Avanzado
      • Agentes Personalizados
      • Selector Group Chat
      • Memoria
      • Logging
      • Serialización
    • Conceptos Del Núcleo
      • Quick Start
      • Aplicaciones De Agentes & Multi-Agentes
      • Entornos De Ejecución Para Agentes
      • Pila De Aplicación
      • Identidad & Ciclo De Vida Del Agente
      • Tema & Suscripción (Topic & Subscription)
    • Guía De Framework
      • Agente & Entorno De Ejecución De Agentes
      • Mensaje & Comunicación
      • Open Telemetry
    • Guía De Componentes
      • Cliente De Modelo
      • Contexto De Modelo
      • Herramientas (Tools)
    • Patrones De Diseño Multi-Agente
      • Agentes Concurrentes
      • Flujo de Trabajo Secuencial
      • Transferencia De Tareas (Handoffs)
      • Mezcla De Agentes (Mixture Of Agents)
      • Multi-Agent Debate
      • Reflexión (Reflection)
    • Ejemplos
      • Planificación De Viajes
      • Investigación De Empresas
      • Revisión De Literatura
    • PyPi
  • Manuales
  • Model cards
    • Quickstart
      • Model Card: DeepSeek R1 Lite
      • Model Card: LLAMA3.3 70B
      • Model Card: Saptiva Turbo
      • Model Card: Phi 4
      • Model Card: Qwen
      • Model Card: Gemma 3
  • DEFINICIONES
    • Temperature
Con tecnología de GitBook
En esta página
  • Ejemplo de Condición de Terminación
  • Ejemplo de Agente
  • Ejemplo de Equipo
  1. Saptiva Agents
  2. Avanzado

Serialización

Saptiva-Agents proporciona una clase de configuración Component que define comportamientos para serializar/deserializar componentes en especificaciones declarativas. Podemos lograr esto llamando a .dump_component() y .load_component() respectivamente. Esto es útil para depurar, visualizar e incluso compartir tu trabajo con otras personas. En este ejemplo, demostraremos cómo serializar múltiples componentes a una especificación declarativa como un archivo JSON.

Advertencia

SOLO CARGA COMPONENTES DESDE FUENTES CONFIABLES.

Con componentes serializados, cada componente implementa la lógica de cómo se serializa y deserializa, es decir, cómo se genera la especificación declarativa y cómo se convierte de nuevo en un objeto.

En algunos casos, crear un objeto puede incluir la ejecución de código (por ejemplo, una función serializada). SOLO CARGA COMPONENTES DESDE FUENTES CONFIABLES.


Ejemplo de Condición de Terminación

En el ejemplo a continuación, definiremos condiciones de terminación (una parte de un equipo de agentes) en Python, las exportaremos a un diccionario/JSON y también demostraremos cómo se puede cargar el objeto de condición de terminación desde el diccionario/JSON.

from saptiva_agents.conditions import MaxMessageTermination, StopMessageTermination

# Definir condiciones de terminación
max_termination = MaxMessageTermination(5)
stop_termination = StopMessageTermination()

# Combinarlas con operador OR
or_termination = max_termination | stop_termination

# Exportar a configuración
or_term_config = or_termination.dump_component()
print("Config: ", or_term_config.model_dump_json())

# Cargar desde configuración
new_or_termination = or_termination.load_component(or_term_config)
Config:  {"provider":"autogen_agentchat.base.OrTerminationCondition","component_type":"termination","version":1,"component_version":1,"description":null,"config":{"conditions":[{"provider":"autogen_agentchat.conditions.MaxMessageTermination","component_type":"termination","version":1,"component_version":1,"config":{"max_messages":5}},{"provider":"autogen_agentchat.conditions.StopMessageTermination","component_type":"termination","version":1,"component_version":1,"config":{}}]}}

Ejemplo de Agente

En el ejemplo a continuación, definiremos un agente en Python, lo exportaremos a un diccionario/JSON y también demostraremos cómo se puede cargar el objeto del agente desde el diccionario/JSON.

from saptiva_agents.agents import AssistantAgent, UserProxyAgent
from saptiva_agents.base import SaptivaAIChatCompletionClient

# Crear un agente que utiliza el modelo llama3.3:70b
model_client = SaptivaAIChatCompletionClient(model="llama3.3:70b", api_key="TU_SAPTIVA_API_KEY")

agent = AssistantAgent(
    name="assistant",
    model_client=model_client,
    handoffs=["flights_refunder", "user"],
    # tools=[], # serializar herramientas aún no está soportado
    system_message="Use tools to solve tasks.",
)

user_proxy = UserProxyAgent(name="user")
# Serializar el agente
user_proxy_config = user_proxy.dump_component()
print(user_proxy_config.model_dump_json())

# Deserializar el agente
up_new = user_proxy.load_component(user_proxy_config)
{"provider":"autogen_agentchat.agents.UserProxyAgent","component_type":"agent","version":1,"component_version":1,"description":null,"config":{"name":"user","description":"A human user"}}
# Serializar el agente Assistant
agent_config = agent.dump_component()
print(agent_config.model_dump_json())

# Deserializar el agente Assistant
agent_new = agent.load_component(agent_config)
{"provider":"autogen_agentchat.agents.AssistantAgent","component_type":"agent","version":1,"component_version":1,"description":null,"config":{"name":"assistant","model_client":{"provider":"autogen_ext.models.openai.OpenAIChatCompletionClient","component_type":"model","version":1,"component_version":1,"config":{"model":"gpt-4o"}},"handoffs":[{"target":"flights_refunder","description":"Handoff to flights_refunder.","name":"transfer_to_flights_refunder","message":"Transferred to flights_refunder, adopting the role of flights_refunder immediately."},{"target":"user","description":"Handoff to user.","name":"transfer_to_user","message":"Transferred to user, adopting the role of user immediately."}],"model_context":{"provider":"autogen_core.model_context.UnboundedChatCompletionContext","component_type":"chat_completion_context","version":1,"component_version":1,"config":{}},"description":"An agent that provides assistance with ability to use tools.","system_message":"Use tools to solve tasks.","reflect_on_tool_use":false,"tool_call_summary_format":"{result}"}}

Ejemplo con MultimodalWebSurfer

from saptiva_agents.web_surfer import MultimodalWebSurfer

agent = MultimodalWebSurfer(
    name="web_surfer",
    model_client=model_client,
    headless=False,
)

# Serializar agente WebSurfer
web_surfer_config = agent.dump_component()
print(web_surfer_config.model_dump_json())

Ejemplo de Equipo

En el ejemplo a continuación, definiremos un equipo en Python, lo exportaremos a un diccionario/JSON y también demostraremos cómo se puede cargar el objeto del equipo desde el diccionario/JSON.

from saptiva_agents.agents import AssistantAgent, UserProxyAgent
from saptiva_agents.conditions import MaxMessageTermination
from saptiva_agents.teams import RoundRobinGroupChat
from saptiva_agents.base import SaptivaAIChatCompletionClient

# Crear un agente que utiliza el modelo llama3.3:70b
model_client = SaptivaAIChatCompletionClient(model="llama3.3:70b", api_key="TU_SAPTIVA_API_KEY")

agent = AssistantAgent(
    name="assistant",
    model_client=model_client,
    handoffs=["flights_refunder", "user"],
    # tools=[], # serializar herramientas aún no está soportado
    system_message="Use tools to solve tasks.",
)

# Crear equipo con condición de terminación
team = RoundRobinGroupChat(participants=[agent], termination_condition=MaxMessageTermination(2))

# Serializar equipo
team_config = team.dump_component()
print(team_config.model_dump_json())
{"provider":"autogen_agentchat.teams.RoundRobinGroupChat","component_type":"team","version":1,"component_version":1,"description":null,"config":{"participants":[{"provider":"autogen_agentchat.agents.AssistantAgent","component_type":"agent","version":1,"component_version":1,"config":{"name":"assistant","model_client":{"provider":"autogen_ext.models.openai.OpenAIChatCompletionClient","component_type":"model","version":1,"component_version":1,"config":{"model":"gpt-4o"}},"handoffs":[{"target":"flights_refunder","description":"Handoff to flights_refunder.","name":"transfer_to_flights_refunder","message":"Transferred to flights_refunder, adopting the role of flights_refunder immediately."},{"target":"user","description":"Handoff to user.","name":"transfer_to_user","message":"Transferred to user, adopting the role of user immediately."}],"model_context":{"provider":"autogen_core.model_context.UnboundedChatCompletionContext","component_type":"chat_completion_context","version":1,"component_version":1,"config":{}},"description":"An agent that provides assistance with ability to use tools.","system_message":"Use tools to solve tasks.","reflect_on_tool_use":false,"tool_call_summary_format":"{result}"}}],"termination_condition":{"provider":"autogen_agentchat.conditions.MaxMessageTermination","component_type":"termination","version":1,"component_version":1,"config":{"max_messages":2}}}}
AnteriorLoggingSiguienteConceptos Del Núcleo

Última actualización hace 1 mes