Generare imagini cu Venice
Ce face
venice-image-generate acoperă generarea de imagini din prompt text prin Venice.
Endpoint-uri relevante:
POST /api/v1/image/generate— endpoint Venice-native, cu control complet.POST /api/v1/images/generations— endpoint OpenAI-compatible, util pentru cod existent bazat peopenai.images.generate().GET /api/v1/image/styles— listează presetările disponibile pentrustyle_preset.
Pentru editare, upscale, inpainting modern, background removal sau input cu imagini existente, folosește capabilitatea separată de image editing. Câmpul vechi inpaint este deprecated și nu trebuie folosit.
Pe scurt: trimiți modelul, promptul și parametrii de imagine; Venice întoarce fie JSON cu imagini base64, fie un răspuns binar image/*, în funcție de return_binary.
Când îmi folosește
Folosește această capabilitate când vrei să generezi imagini din text, să ceri variante multiple într-un singur call, să fixezi un seed pentru comparații repetabile sau să migrezi cod OpenAI Images către Venice cu schimbări minime.
Endpoint-ul Venice-native este potrivit când ai nevoie de controale precum negative_prompt, cfg_scale, seed, variants, style_preset, width, height, aspect_ratio, resolution, format, safe_mode sau hide_watermark.
Endpoint-ul OpenAI-compatible este potrivit pentru integrare rapidă cu SDK-ul OpenAI. Are mai puține controale: dacă ai nevoie de variants, seed, negative_prompt, cfg_scale sau style_preset, folosește /image/generate.
Cum îl invoc / declanșez
Invocarea exactă depinde de runtime-ul în care rulezi. Sursa definește API-ul, nu o comandă universală de chat sau CLI.
Pentru Venice-native:
curl https://api.venice.ai/api/v1/image/generate \
-H "Authorization: Bearer $VENICE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "z-image-turbo",
"prompt": "A beautiful sunset over a mountain range",
"width": 1024,
"height": 1024,
"cfg_scale": 7.5,
"steps": 8,
"seed": 123456789,
"variants": 1,
"format": "webp",
"style_preset": "3D Model",
"safe_mode": true
}'Pentru presetări:
curl https://api.venice.ai/api/v1/image/styles \
-H "Authorization: Bearer $VENICE_API_KEY"Pentru modele:
curl "https://api.venice.ai/api/v1/models?type=image" \
-H "Authorization: Bearer $VENICE_API_KEY"Nu pune cheia API în documentație, commit-uri, capturi de ecran, loguri publice sau mesaje partajate. Verifică modelul și constrângerile lui înainte să alegi dimensiuni sau rezoluție.
Exemplu practic
Pattern bun pentru testare comparabilă:
{
"model": "z-image-turbo",
"prompt": "a red sports car in a parking lot",
"negative_prompt": "blurry, people, clouds",
"seed": 42,
"variants": 4,
"style_preset": "3D Model",
"format": "webp",
"safe_mode": true
}Asta cere patru variante ale aceleiași idei. seed stabilizează direcția randomizării, iar negative_prompt descrie ce nu vrei să apară.
Pentru modele care folosesc sizing prin aspect ratio și rezoluție:
{
"model": "nano-banana-2",
"prompt": "...",
"aspect_ratio": "16:9",
"resolution": "2K"
}Verifică mereu ID-ul curent prin GET /models?type=image; modelele și constrângerile se pot schimba. Alege modelul după combinația de feature-uri și dimensiuni de care ai nevoie.
Output / unde aterizează
Cu return_binary: false, răspunsul este JSON:
{
"id": "...",
"images": ["<base64>", "<base64>"],
"timing": {},
"request": {}
}Imaginea este în images[], encodată base64.
Cu return_binary: true, răspunsul este imagine brută cu Content-Type de tip image/webp, image/png sau image/jpeg, în funcție de format. În acest caz o scrii direct pe disk sau în storage din codul tău.
În endpoint-ul OpenAI-compatible, response_format: "b64_json" întoarce base64. response_format: "url" întoarce un data: URL, nu un URL găzduit.
Limite / gotchas
Fiecare model are propriul idiom de dimensiuni: width/height, aspect_ratio plus resolution, sau size pentru OpenAI-compatible. Uită-te în model_spec.constraints.
width și height trebuie să fie cel mult 1280 fiecare și divizibile cu constraints.widthHeightDivisor.
variants este între 1 și 4, dar variants > 1 cere return_binary: false.
prompt și negative_prompt sunt limitate de constraints.promptCharacterLimit, de obicei între 1500 și 7500 de caractere.
steps poate fi ignorat de modele rapide sau turbo; unele au pasul intern hardcodat.
safe_mode este implicit true și blur-ează conținut adult. hide_watermark: true este doar o cerere; Venice poate păstra watermark pentru conținut detectat de clasificatoarele de siguranță.
Erori tipice: 400 pentru parametri greșiți sau policy violations, 401 pentru auth sau model Pro-only, 402 pentru balance insuficient, 415 pentru Content-Type greșit, 429 pentru rate limit, 500/503 pentru inference sau capacity issues. Retry cu jitter pentru 500/503; nu retrimite la nesfârșit cereri care eșuează din policy sau parametri.