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.

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
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
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
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
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 estimage_generation.object: le type d'objet, qui estentry.type: le type d'entrée, qui esttool.execution.created_atetcompleted_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 fragmentstextet d'autres pour compléter le message. Dans ce cas, nous avons obtenu deux fragments correspondant à un fragmenttextet untool_file, qui représente le fichier généré, spécifiquement l'image générée. La sectioncontentinclut :tool: le nom de l'outil utilisé pour générer le fichier, qui dans ce cas estimage_generation.file_id: un identifiant unique pour le fichier généré.type: le type de fragment, qui dans ce cas esttool_file.file_name: le nom du fichier généré.file_type: le type du fichier généré, qui dans ce cas estpng.
object: le type d'objet, qui estentry.type: le type d'entrée, qui estmessage.output.created_atetcompleted_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 estmistral-medium-latest.role: le rôle du message, qui estassistant.
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)
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)