# Mensajes

En **Saptiva-Agents**, los mensajes facilitan la comunicación y el intercambio de información con otros agentes, orquestadores y aplicaciones. **Saptiva-Agents** admite varios tipos de mensajes, cada uno diseñado para fines específicos.

***

### Tipos de Mensajes

A grandes rasgos, los mensajes en **Saptiva-Agents** se pueden clasificar en dos tipos: mensajes entre agentes y eventos y mensajes internos del agente.

***

### Mensajes entre Agentes

**Saptiva-Agents** admite numerosos tipos de mensajes para la comunicación entre agentes. Pertenecen al tipo de unión `ChatMessage`. Este tipo de mensaje permite la comunicación tanto de texto como multimodal e incluye otros tipos de mensajes, como `TextMessage` o `MultiModalMessage`.&#x20;

Por ejemplo, el siguiente fragmento de código muestra cómo crear un mensaje de texto que acepta un contenido y un origen:

```python
from saptiva_agents.messages import TextMessage

text_message = TextMessage(content="Hello, world!", source="User")
```

De manera similar, el siguiente fragmento de código demuestra cómo crear un mensaje multimodal, que acepta una lista de cadenas o un objeto `Image`:

```python
from io import BytesIO

import requests
from saptiva_agents.messages import MultiModalMessage
from saptiva_agents.core import Image
from PIL import Image as PILImage

pil_image = PILImage.open(BytesIO(requests.get("https://picsum.photos/300/200").content))
img = Image(pil_image)
multi_modal_message = MultiModalMessage(content=["Puedes describir el contenido de esta imágen?", img], source="User")
img
```

<figure><img src="https://109074694-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1Xeu6KDnv2A0dUxoQDDU%2Fuploads%2FOFdmHxDS9EDMjbEe8rGD%2Fdownload.png?alt=media&#x26;token=88e08eae-67d4-4c70-a04f-3178c1059352" alt=""><figcaption></figcaption></figure>

Los `TextMessage` y `MultiModalMessage`  que hemos creado se pueden pasar a los agentes directamente mediante el método `on_messages` o como tareas asignadas a un método `run()` de equipo. Los mensajes también se utilizan en las respuestas de un agente. Los explicaremos con más detalle en [Agentes](https://saptiva.gitbook.io/saptiva-docs/saptiva-agents/tutorial/agentes) y [Equipos](https://saptiva.gitbook.io/saptiva-docs/saptiva-agents/tutorial/equipos).&#x20;

***

### Eventos Internos

**Saptiva-Agents** también admite el concepto de `eventos`: mensajes internos de un agente. Estos mensajes se utilizan para comunicar eventos e información sobre acciones dentro del propio agente y pertenecen al tipo de unión `AgentEvent`.

Algunos ejemplos incluyen `ToolCallRequestEvent`, que indica que se realizó una solicitud para llamar a una herramienta, y `ToolCallExecutionEvent`, que contiene los resultados de las llamadas a la herramienta.

Normalmente, los eventos son creados por el propio agente y se incluyen en el campo `inner_messages` de la `Response` devuelta por `on_messages`. Si está creando un agente personalizado y tiene eventos que desea comunicar a otras entidades (por ejemplo, una interfaz de usuario), puede incluirlos en el campo `inner_messages` de la `Response`. Mostraremos ejemplos en [Agentes Personalizados](https://saptiva.gitbook.io/saptiva-docs/saptiva-agents/avanzado/agentes-personalizados).

### Tipos de Mensajes Personalizados

Puedes crear tipos de mensajes personalizados heredando de las clases base `BaseChatMessage` o `BaseAgentEvent`. Esto te permite definir tus propios formatos y comportamientos específicos, adaptados a tu aplicación. Los tipos de mensajes personalizados son especialmente útiles cuando desarrollas agentes personalizados.
