{count, plural, one {Cours} other {Cours}}
BytePlus vient de sortir son dernier modèle de génération d'images, Seedream 4.5. Bras technologique entreprise de ByteDance, la société apporte des capacités d'IA avancées aux entreprises du monde entier, en s'appuyant sur l'innovation derrière des plateformes comme TikTok.
Dans cet article, je vous montre comment utiliser Seedream 4.5 avec Python via son API pour générer des images de manière programmée.
Je vous recommande le cours Generative AI Concepts pour faire le point sur la technologie derrière les modèles de génération d'images comme Seedream. Si d'autres modèles d'image vous intéressent, consultez aussi notre guide sur le Nano Banana 2 de Google.
Qu'est-ce que Seedream 4.5
Seedream 4.5 est la dernière itération du modèle de génération d'images de BytePlus.
Cette version améliore la cohérence du sujet, affûte les détails des petits textes et optimise le mélange multi-images. Elle comprend également une meilleure compréhension des instructions, un raisonnement spatial amélioré et une inférence logique plus avancée.
Le modèle peut aussi produire des images 4K de haute qualité, une avancée bienvenue alors que des modèles concurrents peinent souvent sur la haute définition. Il est compétitif côté coûts, avec des générations à seulement 4 cents par image.
N'oubliez pas notre article sur le nouveau modèle de génération vidéo de ByteDance, Seedance 2.0.
Configuration de l'API Seedream 4.5
Entrons tout de suite dans le vif du sujet avec l'API Seedream 4.5.
Créer une clé API
Pour utiliser Seedream 4.5 avec Python via son API, nous devons d'abord créer une clé API.
-
Allez sur leur site officiel, cliquez sur le bouton Get API en bas à droite, puis connectez-vous.
-
Une fois connecté, un bouton Access API se trouve en haut à droite. Cliquez pour créer la clé API. La création de la clé nécessite de vérifier votre numéro de téléphone et de fournir des informations de paiement. Il ne s'agit pas d'un abonnement : vous ne serez pas facturé tous les mois, seuls vos appels API sont facturés.
-
Créez un fichier nommé
.envdans le même dossier que votre code Python et copiez-y la clé au format :
ARK_API_KEY=<paste_key_here>
Avant d'utiliser le modèle, pensez également à l'activer dans la console BytePlus ModelArk. Cette étape est distincte de la création de la clé API. Pour l'activer :
-
Allez sur Model activation dans le menu latéral gauche.
-
Au centre, choisissez Media comme catégorie de modèle.
-
Cliquez sur Activate à droite, sur la ligne du modèle
ByteDance-Seedream-4.5. -
Confirmez dans la fenêtre qui s'ouvre.
Installation des dépendances Python
Pour interagir avec l'API Seedream 4.5, nous allons installer quelques paquets Python :
-
byteplussdkarkruntime: le paquet Python officiel pour envoyer des requêtes à Seedream 4.5, inclus dans le SDK Python de BytePlus. -
Quelques paquets utilitaires pour charger la clé API depuis le fichier
.env, effectuer des requêtes HTTP asynchrones et valider des paramètres.
Installez-les avec la commande :
pip install byteplus-python-sdk-v2 python-dotenv httpx requests typing_extensions pydantic
Générer des images avec Seedream 4.5
Commençons par générer une image à partir d'un prompt textuel. Si vous avez lu nos autres tutoriels Python sur les API d'IA, comme ceux sur GPT-Image-1 ou Grok Imagine, vous connaissez déjà le flux classique :
-
Importer les paquets.
-
Charger la clé API depuis le fichier
.env. -
Créer un client avec le paquet officiel.
-
Envoyer la requête API.
Seedream 4.5 fonctionne exactement de la même manière. Voici un script d'exemple pour générer une image.
# 1. Import the necessary packages
from dotenv import load_dotenv
from byteplussdkarkruntime import Ark
import os
# 2. Load the API key
load_dotenv()
# 3. Create the client
client = Ark(
base_url="https://ark.ap-southeast.bytepluses.com/api/v3",
api_key=os.getenv("ARK_API_KEY"),
)
# 4. Send the API request
prompt = """
Photorealistic anthropomorphic animals hanging out in a coffee shop with no humans.
"""
imagesResponse = client.images.generate(
model="seedream-4-5-251128",
prompt=prompt,
watermark=False,
)
image_url = imagesResponse.data[0].url
print(image_url)
Dans cet exemple, le prompt utilisé était :
Photorealistic anthropomorphic animals hanging out in a coffee shop with no humans.
Voici ce que le modèle a généré :

Télécharger l'image générée
Le script ci-dessus affiche l'URL de l'image dans le terminal. Ce n'est pas idéal. Une meilleure approche consiste à créer une fonction qui télécharge l'image dans votre dossier local.
import requests
from urllib.parse import urlparse
import os
def download_image(url):
try:
response = requests.get(url, stream=True)
response.raise_for_status()
parsed_url = urlparse(url)
filename = os.path.basename(parsed_url.path)
if not filename:
filename = "downloaded_image"
with open(filename, "wb") as f:
for chunk in response.iter_content(1024):
f.write(chunk)
print(f"Image saved to: {filename}")
except Exception as e:
print(f"Error downloading image: {e}")
Je vous conseille de créer un nouveau script nommé utils.py et d'y placer cette fonction. Ensuite, dans le script qui génère l'image, ajoutez le code suivant pour télécharger l'image :
import utils
utils.download_image(image_url)
Définir la taille de l'image
Les exemples précédents utilisent les paramètres par défaut de Seedream 4.5, à l'exception de watermark, que nous avons mis à False pour le masquer.
Seedream 4.5 propose deux façons de spécifier les dimensions de sortie via le paramètre size.
Première option : indiquer la résolution « 2K » ou « 4K » pour size, puis décrire le ratio, la forme ou l'usage dans le prompt en langage naturel ; le modèle déterminera la largeur et la hauteur. La valeur par défaut est « 2K ».
Exemple :
prompt = """
Portait Instagram image to be used to promote travel to Tokyo, Japan.
"""
imagesResponse = client.images.generate(
model="seedream-4-5-251128",
prompt=prompt,
size="4K",
watermark=False,
)
Autre option : spécifier la taille en pixels avec une chaîne du type "3750x1250", en respectant deux règles :
- Le nombre total de pixels (largeur × hauteur) doit être compris entre 3,6 millions et 16,7 millions.
- Le ratio (largeur ÷ hauteur) doit être compris entre 1/16 et 16.
Si une seule règle est respectée, la taille n'est pas valide. Pour éviter ces calculs, je vous recommande d'utiliser la méthode par résolution ci-dessus ou l'une des tailles valides suivantes :

Génération par lots
Seedream 4.5 inclut un mode de génération par lots pour créer un ensemble d'images thématiquement liées. Pratique, par exemple, pour produire un storyboard ou une série de visuels autour d'un sujet commun.
Pour générer un lot d'images, fournissez les paramètres sequential_image_generation et sequential_image_generation_options dans la requête API. Exemple pour générer 4 images :
from byteplussdkarkruntime.types.images.images import SequentialImageGenerationOptions
prompt = """
Generate a series of four visually coherent and stylistically consistent images illustrating these stages of a human life: Child, Adolescent, Adult, and Elderly. Make sure it's the same person in the four images.
"""
imagesResponse = client.images.generate(
model="seedream-4-5-251128",
prompt=prompt,
size="2K",
sequential_image_generation="auto",
sequential_image_generation_options=SequentialImageGenerationOptions(max_images=4),
response_format="url",
watermark=False
)
En mode lot, la réponse contient l'ensemble des images. Parcourez-les pour les télécharger comme suit :
# Iterate through all image data
for image in imagesResponse.data:
utils.download_image(image.url)
J'ai essayé avec le prompt suivant :
Generate a series of four visually coherent and stylistically consistent images illustrating these stages of a human life: Child, Adolescent, Adult, and Elderly. Make sure it's the same person in the four images.
Cependant, pour une raison quelconque, la quatrième image rompait toujours la cohérence et sortait comme une femme (après plusieurs essais).

Pour générer un autre nombre d'images, modifiez simplement la valeur de max_images dans la requête API. Ce nombre peut aller de 1 à 15 inclus. Par exemple, pour 6 images :
imagesResponse = client.images.generate(
model="seedream-4-5-251128",
prompt=prompt,
size="2K",
sequential_image_generation="auto",
sequential_image_generation_options=SequentialImageGenerationOptions(max_images=6),
response_format="url",
watermark=False
)
Génération de texte
Testons la capacité de Seedream 4.5 à générer du texte dans l'image. J'ai voulu voir s'il pouvait produire une image contenant une démonstration mathématique sans spécifier explicitement le texte à afficher. Cela teste aussi sa compréhension du contexte.
Voici le prompt utilisé :
Generate an image of a math professor standing in front of a blackboard. On the blackboard, there is a written proof that the square root of 2 is irrational.
Résultat :

Le résultat est convaincant : non seulement la démonstration est correcte, mais le modèle gère une grande quantité de texte avec précision.
Modifier des images avec Seedream 4.5
Voyons comment éditer des images. La façon la plus simple consiste à fournir l'URL de l'image via le paramètre image et à décrire les modifications dans le prompt.
Voici un script complet d'exemple :
from dotenv import load_dotenv
from byteplussdkarkruntime import Ark
import os
import utils
load_dotenv()
client = Ark(
base_url="https://ark.ap-southeast.bytepluses.com/api/v3",
api_key=os.getenv('ARK_API_KEY'),
)
image = "https://images.pexels.com/photos/34408249/pexels-photo-34408249.jpeg"
prompt = """
Make in snowy.
"""
imagesResponse = client.images.generate(
model="seedream-4-5-251128",
prompt=prompt,
image=image,
response_format="url",
watermark=False,
size="1664x2496"
)
image_url = imagesResponse.data[0].url
utils.download_image(image_url)
Dans cet exemple, j'ai utilisé une photo publique sur Pexels de Michael Fischer et Seedream 4.5 pour y ajouter de la neige.
Voici le résultat :

Notez que nous avons explicitément indiqué la taille de sortie "1664x2496" pour respecter le ratio de l'image d'entrée. Contrairement à la plupart des modèles d'images IA, Seedream 4.5 ne reproduit pas automatiquement les dimensions d'entrée : sans paramètre de taille, la sortie était carrée.
Modifier des images locales
Utiliser une URL est la voie la plus simple pour fournir une image à Seedream 4.5. Mais c'est peu pratique si l'image n'est pas déjà hébergée.
L'API Seedream permet aussi d'utiliser facilement une image locale. Pour cela, chargez-la en base64. Voici une fonction utile :
import mimetypes
import base64
def load_image_as_base64(file_path):
mime_type, _ = mimetypes.guess_type(file_path)
if mime_type is None or not mime_type.startswith("image/"):
raise ValueError("File is not a recognized image type")
with open(file_path, "rb") as f:
encoded = base64.b64encode(f.read()).decode("utf-8")
return f"data:{mime_type};base64,{encoded}"
Ajoutez-la de préférence au fichier utils.py qui contient la fonction de téléchargement, pour la réutiliser facilement dans le script principal.
Supposons que vous ayez une image locale nommée motard.jpeg dans le même dossier. Voici comment la charger et l'éditer :
image = utils.load_image_as_base64("motard.jpeg")
prompt = """
Remove the sunglasses and add a helmet.
"""
imagesResponse = client.images.generate(
model="seedream-4-5-251128",
prompt=prompt,
image=image,
response_format="url",
watermark=False
)

Montage avec plusieurs images en entrée
Seedream 4.5 accepte plusieurs images en entrée. Vous pouvez ainsi générer une nouvelle image en mélangeant styles et éléments visuels des images fournies.
Il suffit de transmettre une liste d'images dans la requête. Exemple : combiner la photo d'une personne et celle d'une tenue pour produire cette personne portant la tenue :
image1 = utils.load_image_as_base64("woman.jpeg")
image2 = utils.load_image_as_base64("outfit.jpeg")
prompt = """
Make the woman from image 1 wear the outfit in image 2.
"""
imagesResponse = client.images.generate(
model="seedream-4-5-251128",
prompt=prompt,
image=[image1, image2],
response_format="url",
watermark=False,
)

Cet exemple montre que Seedream 4.5 préserve très bien les visages : la personne dans l'image finale reste très proche de l'originale. Beaucoup d'autres modèles sont moins performants sur ce point.
Générer plusieurs sorties à partir d'une édition
La fonctionnalité de batch vue plus haut fonctionne aussi pour l'édition : le nombre total d'images (entrées + sorties) ne peut pas dépasser 15. C'est très utile pour générer plusieurs variantes à partir d'un visuel.
Combinez simplement le paramètre image avec ceux de génération par lots. Exemple :
prompt = """
Use the given logo to create a visual design system for an outdoor hiking brand,
including backpack, hat, and shoes.
"""
image = utils.load_image_as_base64("logo.jpeg")
imagesResponse = client.images.generate(
model="seedream-4-5-251128",
prompt=prompt,
size="2K",
image=image,
sequential_image_generation="auto",
sequential_image_generation_options=SequentialImageGenerationOptions(max_images=3),
response_format="url",
watermark=False
)
Masquage
Certains modèles de génération d'images prennent en charge le masquage via une image en noir et blanc pour cibler les zones à éditer. Seedream 4.5 ne prend pas nativement en charge ce paramètre.
J'ai tout de même essayé en soumettant le masque comme une image d'entrée et en précisant l'action dans le prompt, pour voir si le modèle pouvait comprendre et émuler le résultat :

Cela a fonctionné dans cet exemple, mais comme ce n'est pas une fonctionnalité native, la fiabilité est inégale. Par exemple, lorsque j'ai essayé d'ajouter un chien, ça n'a pas marché.
Bonnes pratiques avec Seedream 4.5
Comme nous l'avons vu, Seedream 4.5 offre de bonnes performances et plusieurs fonctionnalités utiles. Pour en tirer le meilleur, gardez les bonnes pratiques suivantes en tête.
Principes clés de prompting
Pour des résultats optimaux avec Seedream 4.5, répondez brièvement aux questions : quoi, pourquoi, et dans quel style :
- Décrivez le sujet, l'action et l'environnement en langage simple.
- Précisez l'usage/objectif (logo, affiche, storyboard, UI, etc.).
- Contrôlez le style avec des mots-clés précis ou une image de référence.
- Privilégiez des prompts concis et précis plutôt que des listes d'adjectifs.
- Placez entre guillemets doubles tout texte devant apparaître dans l'image.
Lignes directrices pour l'édition d'images
Lorsque vous éditez une image, indiquez précisément les changements à effectuer et ce qui doit rester inchangé. Utilisez ces quatre verbes pour spécifier l'action :
- Ajouter
- Supprimer
- Remplacer
- Modifier
Si la scène est complexe, des repères visuels (flèches, encadrés, doodles) peuvent aider le modèle.
Quand vous utilisez une image de référence pour préserver une identité, un style ou des caractéristiques produit, précisez toujours :
- Cible de référence : quoi extraire/conserver (ex. : design de personnage, matière, style).
- Scène générée : où/comment l'utiliser (mise en page, décor, réalisme, taille, position).
Conseils pour le batching
Avec plusieurs images en entrée, attribuez clairement les rôles :
- Laquelle fournit le sujet, laquelle fournit la tenue/le style/l'arrière-plan ?
- Faites référence aux images comme image 1, image 2, etc.
Même si le modèle dispose de paramètres pour le nombre d'images à générer, il est préférable de l'indiquer aussi dans le prompt :
- Demandez « une série », « un ensemble », ou spécifiez le nombre exact d'images.
- Utile pour storyboards, BD, sets de marque cohérents, packs d'émojis, etc.
Conclusion
Seedream 4.5 apparaît comme un générateur d'images mature et prêt pour la production, au niveau de modèles de premier plan comme Nano Banana, offrant une fidélité comparable, une bonne adhérence aux consignes et une cohérence inter-images, tout en restant économique.
Ce qui m'a marqué, c'est la simplicité de l'API à l'usage : le même endpoint de génération gère la création one-shot, l'édition (via URL ou base64), les mélanges multi-images et les séries séquentielles, en activant chaque mode via un petit ensemble de paramètres explicites.
Cela dit, je ne le trouve pas révolutionnaire : c'est une excellente exécution d'une boîte à outils de génération d'images maintenant bien connue, plus qu'un saut conceptuel.
Aller plus loin
Si vous souhaitez capitaliser sur cet atelier pas à pas, consolidez les fondamentaux qui rendent les projets Seedream 4.5 fluides en production.
Commencez par le cours Introduction to APIs in Python pour maîtriser l'authentification et la gestion des erreurs, et associez-le à Image Processing in Python pour gérer le redimensionnement, la composition et les conversions de format dans vos pipelines.
Si vous visez une voie plus structurée vers le ML appliqué et les outils, le parcours carrière AI Engineer rassemble le tout avec des workflows pour déployer des fonctionnalités d'IA fiables et scalables.
Seedream 4.5 : FAQ
Comment Seedream 4.5 se compare-t-il à Nano Banana ?
Si Seedream 4.5 rivalise avec la première version de Nano Banana en coûts et qualité d'image, la nouvelle version, Nano Banana 2, donne l'avantage à Google face à Seedream 4.5.
Néanmoins, Seedream 4.5 excelle en cohérence de lot haute fidélité et en rendus 4K photoréalistes. Nano Banana brille sur le raisonnement spatial rapide et l'édition locale précise.
Seedream 4.5 peut-il générer des images en haute résolution ?
Oui, Seedream 4.5 peut générer des images 4K.
Combien coûte la génération d'une image ?
Les images 2K comme 4K coûtent 0,04 $ à générer via l'API BytePlus ArkRuntime.
Ai-je besoin d'un abonnement pour utiliser Seedream 4.5 ?
Non. Vous pouvez utiliser Seedream 4.5 via l'API BytePlus ArkRuntime et ne payer que les images que vous générez.
Peut-on générer des images sans filigrane ?
Oui, en passant le paramètre watermark à False.

