Cursus
BytePlus heeft zojuist hun nieuwste model voor beeldgeneratie uitgebracht: Seedream 4.5. Als de enterprise-technologietak van ByteDance brengt het bedrijf geavanceerde AI-mogelijkheden naar bedrijven wereldwijd, voortbouwend op de innovatie achter platforms zoals TikTok.
In dit artikel leer ik je hoe je Seedream 4.5 met Python gebruikt door het via de API te integreren om programmatisch afbeeldingen te genereren.
Ik raad aan om de cursus Generative AI Concepts te volgen als mooie inleiding op de technologie achter beeldgeneratiemodellen zoals Seedream. Ben je ook geïnteresseerd in andere beeldgeneratiemodellen? Bekijk dan onze gids over Google’s Nano Banana 2.
Wat is Seedream 4.5
Seedream 4.5 is de nieuwste iteratie van BytePlus' AI-model voor beeldgeneratie.
De nieuwste release verbetert onderwerpconsistentie, scherpt kleine tekstdetails aan en verbetert het mengen van meerdere afbeeldingen. Het beschikt ook over sterkere instructiebegrip, betere ruimtelijke redenering en geavanceerdere logische inferentie.
Het model kan bovendien hoogwaardige 4K-afbeeldingen produceren, wat een welkome verbetering is, aangezien concurrerende modellen vaak moeite hebben met het genereren van afbeeldingen met hoge resolutie. Ook qua kosten kan het mee, met generaties voor slechts 4 cent per afbeelding.
Bekijk ook zeker ons artikel over ByteDance’s nieuwe videogeneratiemodel, Seedance 2.0.
Seedream 4.5 API-setup
Zonder verder oponthoud: aan de slag met de Seedream 4.5 API.
Een API-sleutel aanmaken
Om Seedream 4.5 met Python via hun API te gebruiken, moeten we eerst een API-sleutel aanmaken.
-
Navigeer naar hun officiële website, klik op de knop Get API rechtsonder en log in.
-
Na het inloggen staat er rechtsboven een knop Access API. Klik daarop en maak de API-sleutel aan. Voor het aanmaken van een API-sleutel moeten we ons telefoonnummer verifiëren en betaalgegevens opgeven. Dit is echter geen abonnement, dus we worden niet maandelijks gefactureerd. Alleen onze API-aanvragen worden in rekening gebracht.
-
Maak een bestand met de naam
.envin dezelfde map als waar we de Python-code schrijven en kopieer de sleutel erin met het volgende formaat:
ARK_API_KEY=<paste_key_here>
Voordat je het model kunt gebruiken, zorg er ook voor dat je het activeert in de BytePlus ModelArk-console. Dit moet los van de API-sleutel gebeuren. Zo doe je dat:
-
Navigeer naar Model activation in de linkerzijbalk.
-
Kies in het midden Media als de juiste modelcategorie.
-
Klik aan de rechterkant op Activate in de rij van het model
ByteDance-Seedream-4.5. -
Bevestig in het venster dat opent.
Python-afhankelijkheden installeren
Om met de Seedream 4.5 API te communiceren, installeren we een paar Python-packages:
-
byteplussdkarkruntime: Het officiële Python-pakket waarmee we API-verzoeken naar Seedream 4.5 kunnen doen; dit maakt deel uit van de BytePlus Python SDK. -
Een paar hulppakketten om de API-sleutel uit het
.env-bestand te laden, voor asynchrone HTTP-verzoeken en voor validatie van instellingen.
We installeren deze packages met het commando:
pip install byteplus-python-sdk-v2 python-dotenv httpx requests typing_extensions pydantic
Afbeeldingen genereren met Seedream 4.5
Laten we beginnen met het genereren van een afbeelding vanuit een tekstprompt. Als je onze andere Python AI API-tutorials hebt gelezen, zoals die over GPT-Image-1 of Grok Imagine, ben je waarschijnlijk al bekend met de typische workflow:
-
Importeer de packages.
-
Laad de API-sleutel uit het
.env-bestand. -
Maak een client met het officiële API-pakket.
-
Verstuur het API-verzoek.
Seedream 4.5 werkt precies hetzelfde. Hier is een voorbeeldscript om een afbeelding te genereren.
# 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)
In dit specifieke voorbeeld was de prompt die we gebruikten:
Photorealistic anthropomorphic animals hanging out in a coffee shop with no humans.
Dit is wat het model genereerde:

De gegenereerde afbeelding downloaden
Het bovenstaande script toont de URL van de gegenereerde afbeelding in de terminal. Dat is niet de meest handige workflow. Een beter alternatief is een functie maken die de gegenereerde afbeelding naar onze lokale map downloadt.
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}")
Ik raad aan om een nieuw script utils.py te maken en deze functie daarin te plaatsen. Voeg vervolgens in het script dat de afbeelding genereert de volgende code toe om de afbeelding te downloaden:
import utils
utils.download_image(image_url)
De afbeeldingsgrootte specificeren
De vorige voorbeelden gebruikten de standaardparameters van Seedream 4.5, behalve de watermark, die we op False hebben gezet om deze te verbergen.
Seedream 4.5 biedt twee manieren om de afmetingen van de uitvoerafbeelding op te geven met de parameter size.
De eerste manier is om de resolutie van de gegenereerde afbeelding te specificeren door size in te stellen op "2K" of "4K" en de beeldverhouding, vorm of het doel in de prompt in natuurlijke taal te beschrijven; het model bepaalt dan de breedte en hoogte. De standaardwaarde is "2K".
Hier is een voorbeeld:
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,
)
Als alternatief kunnen we de grootte van de afbeelding in pixels specificeren met een string zoals "3750x1250", maar er zijn twee regels waaraan we moeten voldoen:
- Totaal aantal pixels (breedte × hoogte) moet tussen 3,6 miljoen en 16,7 miljoen liggen.
- Beeldverhouding (breedte ÷ hoogte) moet tussen 1/16 en 16 liggen.
Als slechts aan één regel wordt voldaan, is de grootte niet geldig. Om deze berekeningen te vermijden, raad ik aan ofwel de resolutiemethode hierboven te gebruiken of een van de volgende geldige groottes:

Batchgeneratie
Seedream 4.5 bevat een batchgeneratiemodus die je kunt gebruiken om een set thematisch verwante afbeeldingen te genereren. Dit is bijvoorbeeld handig om een storyboard te maken of visuals rond een gemeenschappelijk onderwerp.
Om een batch afbeeldingen te genereren, moeten we de parameters sequential_image_generation en sequential_image_generation_options meegeven aan het API-verzoek. Hier is een voorbeeld om 4 afbeeldingen te genereren:
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
)
Bij batchgeneratie krijgen we een ander responsformaat met alle afbeeldingen. We kunnen over die afbeeldingen itereren en ze als volgt downloaden:
# Iterate through all image data
for image in imagesResponse.data:
utils.download_image(image.url)
Dit probeerde ik met de volgende 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.
Om de een of andere reden brak de vierde afbeelding echter steeds de consistentie en kwam er een vrouw uit (ik heb het meerdere keren geprobeerd).

Om een ander aantal afbeeldingen te genereren, veranderen we simpelweg de waarde van max_images in het API-verzoek. Dit getal kan elk geheel getal tussen 1 en 15 (inclusief) zijn. Om bijvoorbeeld 6 afbeeldingen te genereren, doen we:
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
)
Tekstgeneratie
Laten we Seedream 4.5 testen op het genereren van tekst. In mijn test wilde ik zien of het een afbeelding met een wiskundig bewijs kon genereren zonder dat ik expliciet de tekst opgaf die ik gerenderd wilde hebben. Dit test ook het vermogen van het model om context te begrijpen.
Dit is de prompt die ik gebruikte:
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.
Hier is het resultaat:

Ik was erg tevreden met het resultaat. Niet alleen was het bewijs correct, het model kon ook een grote hoeveelheid tekst netjes verwerken.
Afbeeldingen bewerken met Seedream 4.5
In deze sectie leren we hoe we afbeeldingen bewerken. De eenvoudigste manier om een afbeelding met Seedream 4.5 te bewerken is door de afbeeldings-URL op te geven via de parameter image en de wijzigingen in de prompt te beschrijven.
Hier is een volledig scripvoorbeeeld:
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)
In dit voorbeeld heb ik een publiek beschikbare foto op Pexels van Michael Fischer gebruikt en Seedream 4.5 ingezet om het sneeuwachtig te maken.
Dit kreeg ik terug:

Let op dat we in het bovenstaande voorbeeld expliciet het uitvoerformaat "1664x2496" hebben opgegeven om de beeldverhouding van de invoerafbeelding te matchen. In tegenstelling tot de meeste AI-beeldmodellen genereert Seedream 4.5 niet automatisch een afbeelding met dezelfde afmetingen als de invoer. Toen ik de size-parameter wegliet, was de output een vierkante afbeelding.
Lokale afbeeldingen bewerken
Een afbeeldings-URL gebruiken is de makkelijkste manier om een afbeelding aan Seedream 4.5 te leveren. Maar dat is onhandig als de afbeelding nog niet ergens is gehost.
De Seedream API laat ons ook eenvoudig een lokale afbeelding gebruiken. Daarvoor moeten we deze als base64-afbeelding laden. Hier is een functie om dat te doen:
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}"
Ik raad aan om deze toe te voegen aan het bestand utils.py dat de functie voor het downloaden van een afbeelding bevat, zodat je het makkelijk kunt gebruiken in je hoofdscript.
Stel, we hebben een lokale afbeelding in dezelfde map met de naam motard.jpeg. Zo kunnen we die laden en bewerken:
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
)

Bewerken met meerdere invoerafbeeldingen
Seedream 4.5 ondersteunt meerdere invoerafbeeldingen. Hiermee kun je een nieuwe afbeelding genereren door stijlen en visuele elementen uit die afbeeldingen te mengen.
Meerdere afbeeldingen in een API-verzoek aanleveren is zo eenvoudig als een lijst met de afbeeldingen doorgeven. Hier is een voorbeeld waarin we een afbeelding van een persoon en een outfit combineren tot een afbeelding waarin die persoon de outfit draagt:
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,
)

Dit voorbeeld laat zien dat Seedream 4.5 behoorlijk goed is in het behouden van gezichten; de persoon in de uiteindelijke afbeelding lijkt nog steeds sterk op het origineel. Dat is iets waar andere modellen vaak minder in presteren.
Meerdere uitvoerafbeeldingen bewerken
De batching-functionaliteit die we hierboven leerden werkt ook voor afbeeldingsbewerking, waarbij het totale aantal afbeeldingen (inputs + outputs) niet hoger mag zijn dan 15. Dit is bijvoorbeeld heel handig om meerdere beelden te genereren op basis van één visueel element.
Hiervoor combineren we simpelweg de image-parameter met de batchgeneratie-parameters die we hierboven zagen. Hier is een voorbeeldverzoek:
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
)
Maskeren
Sommige AI-beeldgeneratiemodellen ondersteunen maskeren door gebruikers toe te staan een zwart-wit maskerapparaat aan te leveren om de delen van de afbeelding te specificeren die ze willen bewerken. Seedream 4.5 ondersteunt echter niet native maskerparameters.
Ik heb het toch geprobeerd door het masker als invoerafbeelding mee te sturen en in de prompt te specificeren wat ik wilde, om te zien of het dit kon begrijpen en het resultaat kon benaderen:

Het werkte in dit voorbeeld, maar omdat het geen ingebakken functie van het model is, is het niet heel betrouwbaar. Toen ik bijvoorbeeld hetzelfde probeerde om een hond toe te voegen, werkte het niet.
Seedream 4.5 Best practices
Zoals we hebben gezien, biedt Seedream 4.5 goede prestaties en een paar toffe features. Om er het meeste uit te halen, houd de volgende best practices in gedachten.
Kernrichtlijnen voor prompts
Voor de beste resultaten met Seedream 4.5 beantwoord je de vragen wat je wilt, waarom je het wilt en in welke stijl, terwijl je het kort houdt:
- Beschrijf onderwerp, actie en omgeving in gewone taal.
- Specificeer het doel/de usecase (logo, poster, storyboard, UI, enz.).
- Stuur de stijl aan met precieze trefwoorden of een referentieafbeelding.
- Verkies bondige, precieze prompts boven lange lijsten bijvoeglijke naamwoorden.
- Zet tekst die in de afbeelding móét verschijnen tussen dubbele aanhalingstekens.
Richtlijnen voor afbeeldingsbewerking
Als je afbeeldingen bewerkt, geef dan precies aan welke wijzigingen je aanbrengt en wat onveranderd moet blijven. Gebruik de volgende vier woorden om acties te specificeren:
- Add
- Remove
- Replace
- Modify
Als de scène complex is, kunnen visuele aanwijzingen (pijlen, kaders, krabbels) om regio’s te markeren het model helpen.
Als je een referentieafbeelding gebruikt om identiteit, stijl of productkenmerken te behouden, specificeer dan altijd:
- Referentiedoel: wat te extraheren/behouden (bijv. karakterontwerp, materiaal, stijl).
- Gegenereerde scène: waar/hoe te gebruiken (lay-out, setting, realisme, grootte, positie).
Richtlijnen voor batchen
Bij gebruik van meerdere invoerafbeeldingen, wijs duidelijk rollen toe:
- Welke levert het onderwerp, welke levert de outfit/stijl/achtergrond?
- Verwijs naar de afbeeldingen als image 1, image 2, enz.
Ondanks dat het model parameters heeft om het aantal te genereren afbeeldingen te specificeren, is het beter om ook in de prompt te verduidelijken wat je wilt:
- Vraag om “een serie”, “een set”, of specificeer het exacte aantal afbeeldingen.
- Gebruik voor storyboards, strips, consistente merksets, emojipakketten, enz.
Conclusie
Seedream 4.5 komt over als een volwassen, production-ready beeldgenerator die schouder aan schouder staat met topmodellen zoals Nano Banana, met vergelijkbare detaillering, opvolging van instructies en consistentie over meerdere beelden, terwijl het kosteneffectief blijft.
Wat me opviel is hoe toegankelijk de API in de praktijk aanvoelt: hetzelfde generate-endpoint handelt single-shot creatie, edits (via URL of base64), blends met meerdere afbeeldingen en sequentiële batches af, en we schakelen elke modus in door een kleine set duidelijk benoemde parameters aan te passen.
Dat gezegd hebbende, voelt het niet alsof het bijzondere innovaties brengt: het is een uitstekende, goed uitgewerkte versie van de inmiddels bekende toolbox voor beeldgeneratie, eerder dan een conceptuele sprong.
Verder leren
Wil je na deze walkthrough de vaart erin houden? Versterk dan de fundamenten die Seedream 4.5-projecten in productie soepel laten verlopen.
Begin met de cursus Introduction to APIs in Python om authenticated requests en foutafhandeling te beheersen, en combineer die met Image Processing in Python om resizing, compositing en bestandsconversies in je pipelines aan te pakken.
Als je mikt op een formelere route richting toegepaste ML en tooling, verbindt de AI Engineer-carrièreroute alles met workflows voor het shippen van betrouwbare, schaalbare AI-features.
Seedream 4.5 Veelgestelde vragen
Hoe verhoudt Seedream 4.5 zich tot Nano Banana?
Hoewel Seedream 4.5 kan concurreren met de oorspronkelijke versie van Nano Banana qua kosten en beeldkwaliteit, geeft de nieuwe versie, Nano Banana 2, Google een voorsprong op Seedream 4.5
Toch blinkt Seedream 4.5 uit in hoge-fideliteit batchconsistentie en fotorealistische 4K-outputs. Nano Banana is sterk in snelle ruimtelijke redenering en precieze lokale bewerkingen.
Kan Seedream 4.5 afbeeldingen met hoge resolutie genereren?
Ja, Seedream 4.5 kan 4K-afbeeldingen genereren.
Hoeveel kost het om een afbeelding te genereren?
Zowel 2K- als 4K-afbeeldingen kosten $0,04 om te genereren via de BytePlus ArkRuntime API.
Heb ik een abonnement nodig om Seedream 4.5 te gebruiken?
Nee. We kunnen Seedream 4.5 gebruiken via de BytePlus ArkRuntime API en betalen alleen voor de afbeeldingen die we genereren.
Is het mogelijk om afbeeldingen zonder watermerk te genereren?
Ja, door de parameter watermark op False te zetten.

