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