Génération d'images

La génération d'images est un outil intégré qui permet aux agents de générer des images de toutes sortes et sous toutes les formes.

image_generation_graph

Activer cet outil permet aux modèles de créer des images à tout moment.

Pour utiliser l'outil de génération d'images, vous pouvez créer un agent avec l'outil de génération d'images activé et utiliser l'API conversations pour générer des images. Notez que vous devez télécharger l'image à partir de l'ID de fichier fourni dans la réponse.

Créer un agent de génération d'images

Créer un agent de génération d'images

Vous pouvez créer un agent avec accès à la génération d'images en le fournissant comme l'un des outils. Notez que vous pouvez toujours ajouter d'autres outils à l'agent. Le modèle est libre de créer des images à la demande.

image_agent = client.beta.agents.create(
    model="mistral-medium-latest",
    name="Image Generation Agent",
    description="Agent used to generate images.",
    instructions="Use the image generation tool when you have to create images.",
    tools=[{"type": "image_generation"}],
    completion_args={
        "temperature": 0.3,
        "top_p": 0.95,
    }
)

Comme pour les autres agents, lors de la création, vous recevrez un ID d'agent correspondant à l'agent créé. Vous pouvez utiliser cet ID pour démarrer une conversation.

Fonctionnement

Fonctionnement

Maintenant que notre agent de génération d'images est prêt, nous pouvons créer des images à la demande à tout moment.

Conversations avec génération d'images

Conversations avec génération d'images

Pour démarrer une conversation avec notre agent de génération d'images, nous pouvons utiliser le code suivant :

response = client.beta.conversations.start(
    agent_id=image_agent.id,
    inputs="Generate an orange cat in an office."
)
Explication des sorties

Explication des sorties

Ci-dessous, nous allons expliquer les différentes sorties de la réponse de l'exemple de code précédent :

  • tool.execution : cette entrée correspond à l'exécution de l'outil de génération d'images. Elle inclut des métadonnées sur l'exécution, telles que :

    • name : le nom de l'outil, qui dans ce cas est image_generation.
    • object : le type d'objet, qui est entry.
    • type : le type d'entrée, qui est tool.execution.
    • created_at et completed_at : horodatages indiquant quand l'exécution de l'outil a commencé et s'est terminée.
    • id : un identifiant unique pour l'exécution de l'outil.
  • message.output : cette entrée correspond à la réponse générée par notre agent. Elle inclut des métadonnées sur le message, telles que :

    • content : le contenu réel du message, qui dans ce cas est une liste de fragments. Ces fragments peuvent être de différents types, et le modèle peut entrelacer différents fragments, en utilisant des fragments text et d'autres pour compléter le message. Dans ce cas, nous avons obtenu deux fragments correspondant à un fragment text et un tool_file, qui représente le fichier généré, spécifiquement l'image générée. La section content inclut :
      • tool : le nom de l'outil utilisé pour générer le fichier, qui dans ce cas est image_generation.
      • file_id : un identifiant unique pour le fichier généré.
      • type : le type de fragment, qui dans ce cas est tool_file.
      • file_name : le nom du fichier généré.
      • file_type : le type du fichier généré, qui dans ce cas est png.
    • object : le type d'objet, qui est entry.
    • type : le type d'entrée, qui est message.output.
    • created_at et completed_at : horodatages indiquant quand le message a été créé et complété.
    • id : un identifiant unique pour le message.
    • agent_id : un identifiant unique pour l'agent qui a généré le message.
    • model : le modèle utilisé pour générer le message, qui dans ce cas est mistral-medium-latest.
    • role : le rôle du message, qui est assistant.
Télécharger les images

Télécharger les images

Pour accéder à cette image, vous pouvez la télécharger via notre endpoint files.

# Download using the ToolFileChunk ID
file_bytes = client.files.download(file_id=file_chunk.file_id).read()

# Save the file locally
with open(f"image_generated.png", "wb") as file:
    file.write(file_bytes)
generated_image

Un exemple de code complet pour télécharger toutes les images générées à partir d'une réponse pourrait ressembler à ceci :

from mistralai.client.models import ToolFileChunk

for i, chunk in enumerate(response.outputs[-1].content):
    # Check if chunk corresponds to a ToolFileChunk
    if isinstance(chunk, ToolFileChunk):

      # Download using the ToolFileChunk ID
      file_bytes = client.files.download(file_id=chunk.file_id).read()

      # Save the file locally
      with open(f"image_generated_{i}.png", "wb") as file:
          file.write(file_bytes)