Accéder au contenu principal

Seedream 4.5 : guide complet avec Python

Un guide pratique en Python du modèle d'image Seedream 4.5 de ByteDance : génération par lots, rendu de texte, édition multi-images et bonnes pratiques de prompting.
Actualisé 19 sept. 2026  · 10 min lire

Explorez l'IA

ChatGPTClaudePerplexity

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.

  1. Allez sur leur site officiel, cliquez sur le bouton Get API en bas à droite, puis connectez-vous.

  2. 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.

  3. Créez un fichier nommé .env dans 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 :

  1. Allez sur Model activation dans le menu latéral gauche.

  2. Au centre, choisissez Media comme catégorie de modèle.

  3. Cliquez sur Activate à droite, sur la ligne du modèle ByteDance-Seedream-4.5.

  4. 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 :

  1. Importer les paquets.

  2. Charger la clé API depuis le fichier .env.

  3. Créer un client avec le paquet officiel.

  4. 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é :

Image générée par IA Seedream 4.5 : animaux anthropomorphes photoréalistes dans un café chaleureux — renard sirotant un latte avec latte art, lapin en train de lire, et chat au bar à expresso dans une lumière douce.

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 :

  1. Le nombre total de pixels (largeur × hauteur) doit être compris entre 3,6 millions et 16,7 millions.
  2. 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 :

Tableau de génération d'images Seedream 4.5 indiquant des tailles en pixels recommandées par ratio : 1:1 2048x2048, 4:3 2304x1728, 3:4 1728x2304, 16:9 2560x1440, 9:16 1440x2560, 3:2 2496x1664, 2:3 1664x2496, 21:9 3024x1296.

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).

Exemple de génération séquentielle Seedream 4.5 : mosaïque en quatre volets de la même personne aux différentes étapes de la vie — enfant avec un cerf-volant, ado skateur devant des graffitis, adulte au travail sur un ordinateur portable, personne âgée buvant un thé sur un porche.

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 :

Illustration générée par Seedream 4.5 de BytePlus : un professeur de maths pointe un tableau couvert d'une démonstration claire, étape par étape, montrant que la racine carrée de 2 est irrationnelle, avec un rendu de texte net.

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 :

Démo d'édition d'image Seedream 4.5 avant/après : cabane alpine rustique au bord d'un lac de montagne, la clôture en bois et le sol passent d'un décor automnal à un paysage enneigé avec le prompt « Make it snowy. »

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
) 

Démo d'édition Seedream 4.5 : à gauche un motard sur une moto noire avec des lunettes de soleil, à droite le résultat avec un casque ajouté, selon le prompt « Remove the sunglasses and add a helmet. »

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,
)

Exemple d'édition multi-images avec l'API Seedream 4.5 : à gauche une femme en chemise blanche, au centre une combinaison futuriste argentée sur mannequin, à droite le résultat où la femme porte la tenue.

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 :

Démo de suppression d'objet avec l'API Seedream 4.5 : triptyque d'une scène de café anthropomorphe ; au centre, un masque blanc recouvre l'ours, et à droite l'ours a été supprimé par inpainting.

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.


François Aubry's photo
Author
François Aubry
LinkedIn
Ingénieur full-stack et fondateur de CheapGPT. L'enseignement a toujours été ma passion. Dès mes premiers jours d'études, j'ai cherché avec enthousiasme des occasions de donner des cours particuliers et d'aider d'autres étudiants. Cette passion m'a amenée à poursuivre un doctorat, où j'ai également été assistante d'enseignement pour soutenir mes efforts académiques. Au cours de ces années, j'ai trouvé un immense épanouissement dans le cadre d'une classe traditionnelle, en favorisant les liens et en facilitant l'apprentissage. Cependant, avec l'avènement des plateformes d'apprentissage en ligne, j'ai reconnu le potentiel de transformation de l'éducation numérique. En fait, j'ai participé activement au développement d'une telle plateforme dans notre université. Je suis profondément engagée dans l'intégration des principes d'enseignement traditionnels avec des méthodologies numériques innovantes. Ma passion est de créer des cours qui sont non seulement attrayants et instructifs, mais aussi accessibles aux apprenants à l'ère du numérique.
Sujets
Intelligence artificielle
IA générative

Cours sur l'IA générative

{count, plural, one {Cours} other {Cours}}

Concepts d'IA générative

{hours} h
120.3K
Apprenez à exploiter l’IA générative de façon responsable. Découvrez le développement des modèles d’IA générative et leur impact futur sur la société.
Voir les détailsRight Arrow
Commencer Le Cours
Voir plusRight Arrow
Contenus associés
cursor ai code editor

{count, plural, one {Tutoriel} other {Tutoriels}}

Cursor AI : Un guide avec 10 exemples pratiques

Apprenez à installer Cursor AI sur Windows, macOS et Linux, et découvrez comment l'utiliser à travers 10 cas d'utilisation différents.

{count, plural, one {Tutoriel} other {Tutoriels}}

30 astuces Python pour un meilleur code, avec exemples

Nous avons sélectionné 30 astuces Python pour améliorer votre code et développer vos compétences en Python.
Kurtis Pykes 's photo

Kurtis Pykes

15 min

{count, plural, one {Tutoriel} other {Tutoriels}}

Tableaux Python

Tableaux Python avec exemples de code. Découvrez comment créer et imprimer des tableaux à l'aide de Python NumPy dès aujourd'hui.
DataCamp Team's photo

DataCamp Team

3 min

{count, plural, one {Tutoriel} other {Tutoriels}}

Tutoriel sur les boucles Python

Tutoriel complet d'introduction aux boucles Python. Apprenez et pratiquez les boucles while et for, les boucles imbriquées, les mots-clés break et continue, la fonction range et bien plus encore.
Satyabrata Pal's photo

Satyabrata Pal

15 min

{count, plural, one {Tutoriel} other {Tutoriels}}

Données JSON Python : Un guide illustré d'exemples

Apprenez à utiliser JSON en Python, notamment la sérialisation, la désérialisation, le formatage, l'optimisation des performances, la gestion des API, ainsi que les limites et les alternatives de JSON.
Moez Ali's photo

Moez Ali

6 min

{count, plural, one {Tutoriel} other {Tutoriels}}

Python Switch Case Statement : Guide du débutant

Découvrez le match-case de Python : un guide sur sa syntaxe, ses applications en data science, ML, et une analyse comparative avec le switch-case traditionnel.
Matt Crabtree's photo

Matt Crabtree

5 min

Voir PlusVoir Plus