AgentScope ofrece un sistema flexible y expresivo para construir interacciones multimodales —texto, imágenes, audio, video y razonamiento— sin necesidad de escribir código complejo. Su modelo de mensajes permite representar información heterogénea de forma estructurada, facilitando la integración con modelos de lenguaje, herramiantas externas y flujos de trabajo colaborativos entre agentes.
Estructura Fundamental del Mensaje
Cada mensaje en AgentScope se representa mediante la clase Msg, cuya estructura incluye cuatro componentes esenciales:
- name: identificador del emisor (ej.
"analyst"o"user_interface") - role: rol semántico (
"user","assistant","system") - content: puede ser una cadena simple o una lista de bloques tipados
- metadata: diccionario opcional para anotaciones técnicas (no visible al modelo)
Mesnajes de Texto: Sencillez y Eficacia
Para escenarios conversacionales básicos, basta con instanciar un mensaje con contenido textual:
from agentscope.message import Msg
mensaje_simple = Msg(
name="asistente",
role="assistant",
content="He procesado tu solicitud correctamente.",
)
Bloques Multimodales: Combinación de Tipos de Datos
La verdadera potecnia surge al componer múltiples bloques dentro de content. Cada bloque encapsula un tipo específico de dato y su metainformación:
| Bloque | Uso típico | Ejemplo de uso |
|---|---|---|
TextBlock |
Contenido descriptivo o instrucciones | text="Revisa esta imagen y describe los objetos visibles." |
ImageBlock |
Imágenes codificadas en base64 o referencias a URI | source=Base64Source(media_type="image/png", data="iVBORw0KGgo...") |
AudioBlock |
Fragmentos de audio para transcripción o análisis | source=Base64Source(media_type="audio/wav", data="UklGRigAAABXQVZFZm1t...") |
Ejemplo de mensaje compuesto:
from agentscope.message import Msg, TextBlock, ImageBlock, AudioBlock, Base64Source
mensaje_compuesto = Msg(
name="analizador_multimodal",
role="assistant",
content=[
TextBlock(type="text", text="Adjunto análisis visual y auditivo."),
ImageBlock(
type="image",
source=Base64Source(
type="base64",
media_type="image/jpeg",
data="ffd8ffe000104a464946..." # datos reales omitidos por brevedad
)
),
AudioBlock(
type="audio",
source=Base64Source(
type="base64",
media_type="audio/ogg",
data="4f6767530002000000000000..." # datos reales omitidos por brevedad
)
)
]
)
Razonamiento Explicable con ThinkingBlock
Para aumentar la transparencia en sistemas basados en LLM, se puede insertar pasos intermedios de razonamiento:
from agentscope.message import Msg, ThinkingBlock, TextBlock
mensaje_con_razonamiento = Msg(
name="agente_cognitivo",
role="assistant",
content=[
ThinkingBlock(
type="thinking",
thinking="Primero identificaré la ubicación mencionada, luego buscaré datos meteorológicos actualizados."
),
TextBlock(
type="text",
text="El pronóstico para Madrid indica cielo despejado y 22 °C."
)
]
)
Integración con Herramientas Externas
Los bloques ToolUseBlock y ToolResultBlock permiten orquestar llamadas a APIs o servicios externos:
# Solicitud de herramienta
solicitud_herramienta = Msg(
name="coordinador",
role="assistant",
content=[
ToolUseBlock(
type="tool_use",
id="req_789",
name="consultar_calendario",
input={"fecha": "2024-06-15"}
)
]
)
# Respuesta de herramienta
respuesta_herramienta = Msg(
name="sistema",
role="system",
content=[
ToolResultBlock(
type="tool_result",
id="req_789",
name="consultar_calendario",
output={"evento": "Reunión de revisión trimestral", "hora": "10:00"}
)
]
)
Serialización y Persistencia
Los mensajes pueden convertirse fácilmente a formato JSON para almacenamiento o transporte:
import json
# Serializar
datos_serializados = mensaje_compuesto.to_dict()
print(json.dumps(datos_serializados, indent=2, ensure_ascii=False))
# Deserializar
mensaje_recuperado = Msg.from_dict(datos_serializados)
Casos de Uso Prácticos
Este modelo de mensajes se aplica eficazmente en:
- Sistemas de soporte técnico que interpretan capturas de pantalla junto con descripciones de errores
- Plataformas educativas que sincronizan explicaciones verbales, diagramas y ejemplos interactivos
- Flujos de trabajo de investigación donde agentes especializados intercambian hallazgos multimodales
- Aplicaciones de accesibilidad que combinan texto, símbolos y audio para usuarios diversos