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.


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}}}}

Última actualización