<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://api.aicu.ai/docs/fr/blog</id>
    <title>AICU API Docs Blog</title>
    <updated>2026-11-19T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://api.aicu.ai/docs/fr/blog"/>
    <subtitle>AICU API Docs Blog</subtitle>
    <icon>https://api.aicu.ai/docs/fr/img/favicon.ico</icon>
    <entry>
        <title type="html"><![CDATA[Des visuels clés avec Wan 3.0 (1) — À partir d'une seule photo de trophée, 10 teasers avec le guide officiel de prompts]]></title>
        <id>https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1</id>
        <link href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1"/>
        <updated>2026-11-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Un trophée en cristal doré posé sur un drap blanc, portant l'inscription « INTERNATIONAL AI CREATOR AWARD 2026 WINNER ». En arrière-plan, la verdure traversée par la lumière filtrant à travers les feuillages]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="Un trophée en cristal doré posé sur un drap blanc, portant l&amp;#39;inscription « INTERNATIONAL AI CREATOR AWARD 2026 WINNER ». En arrière-plan, la verdure traversée par la lumière filtrant à travers les feuillages" src="https://api.aicu.ai/docs/fr/assets/images/trophy-8f7729eec84db9c0945f1aa449e25e74.jpg" width="1280" height="721" class="img__qZa"></p>
<p>Nous disposons d'une seule photo du trophée de l'International AI Creator Award 2026. Si l'on vous demandait d'en faire « un teaser qui évoque un éclat scintillant, le vent, l'influence, l'intelligence, l'histoire, l'autorité, la créativité et la contribution à la communauté », qu'écririez-vous ?</p>
<p>Nous avons transmis cette photo comme première image à la génération vidéo de l'AICU API (<code>wan3.0-video</code>) et essayé 10 prompts rédigés selon le <strong>guide officiel de prompts</strong> d'Alibaba Cloud. Nous publions toutes les vidéos, tous les prompts, ainsi que le temps et les AP nécessaires.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="premise">Les conditions de cet article<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#premise" class="hash-link" aria-label="Lien direct vers Les conditions de cet article" title="Lien direct vers Les conditions de cet article" translate="no">​</a></h2>
<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>Modèle</td><td><code>wan3.0-video</code> (Wan 3.0 d'Alibaba Cloud)</td></tr><tr><td>Entrée</td><td>La photo du trophée ci-dessus (1671×941) transmise en <code>first_frame</code></td></tr><tr><td>Résolution et durée</td><td>720p, 5 secondes (10 secondes pour le n° 10 uniquement)</td></tr><tr><td>Coût</td><td>En 720p, 1 400 AP par seconde. 7 000 AP pour 5 secondes, 77 000 AP au total pour les 10 vidéos (le n° 10, de 10 secondes, coûte 14 000 AP)</td></tr><tr><td>Temps nécessaire</td><td>111 à 204 secondes par vidéo (de l'envoi à la réception du mp4)</td></tr><tr><td>Échecs</td><td>0</td></tr></tbody></table>
<p>L'appel se fait comme indiqué dans <a class="" href="https://api.aicu.ai/docs/fr/video-api">Video API</a>. Pour transmettre la première image, écrivez ceci :</p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST https://api.aicu.ai/v1/video/generate \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer $AICU_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Content-Type: application/json" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d "{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    \"model\": \"wan3.0-video\",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    \"first_frame\": \"$(base64 -i trophy.jpg)\",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    \"prompt\": \"Sunlight shimmers across the facets of the crystal trophy ...\",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    \"resolution\": \"720p\",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    \"seconds\": 5</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }"</span><br></div></code></pre></div></div>
<p>Vous pouvez aussi télécharger le script qui envoie les 10 vidéos d'un coup. Il ne dépend que de la bibliothèque standard, envoie jusqu'à 3 requêtes en parallèle et ne renvoie pas celles déjà terminées. Par défaut, il se contente d'estimer le coût : <strong><a href="https://api.aicu.ai/docs/fr/samples/wan-teaser/wan-teaser-10.py" target="_blank" rel="noopener noreferrer" class=""><code>wan-teaser-10.py</code></a></strong></p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl -O https://api.aicu.ai/docs/samples/wan-teaser/wan-teaser-10.py</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">python3 wan-teaser-10.py --image trophy.jpg --out out/            # estimation seulement</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">python3 wan-teaser-10.py --image trophy.jpg --out out/ --apply    # génération</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="the-formulas">Les « formules » du guide officiel<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#the-formulas" class="hash-link" aria-label="Lien direct vers Les « formules » du guide officiel" title="Lien direct vers Les « formules » du guide officiel" translate="no">​</a></h2>
<p>Le <a href="https://www.alibabacloud.com/help/en/model-studio/text-to-video-prompt" target="_blank" rel="noopener noreferrer" class="">Text-to-video / image-to-video prompt guide</a> d'Alibaba Cloud Model Studio recommande d'écrire les prompts comme une addition de composants. Nous en avons utilisé quatre.</p>
<table><thead><tr><th>Formule</th><th>Contenu</th></tr></thead><tbody><tr><td>Image vers vidéo</td><td><strong>Mouvement + mouvement de caméra</strong>. Le sujet, la scène et le style sont fixés par l'image, on ne les écrit donc pas dans le prompt</td></tr><tr><td>Contrôle esthétique</td><td>Ajouter la source de lumière, la qualité de la lumière (contre-jour, éclairage de contour, éclairage latéral), le moment de la journée, la taille du plan, l'angle, l'objectif et la tonalité des couleurs</td></tr><tr><td>Son</td><td>Sujet + scène + mouvement + <strong>description du son</strong> (voix, effets sonores, musique). Pour empêcher les dialogues : <code>No dialogue.</code></td></tr><tr><td>Multi-plans</td><td>Description générale + numéro de plan et minutage, par exemple <code>Shot 1 [0-3 s]: ...</code></td></tr></tbody></table>
<p>Le guide cite aussi ce qu'il vaut mieux éviter : faire apparaître un texte exact à l'écran, les changements de scène brusques au sein d'une même vidéo, les noms de personnes réelles, etc. Comme le trophée porte une inscription, <strong>la tenue du texte</strong> est devenue l'un des points à observer.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="results">Les 10 résultats<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#results" class="hash-link" aria-label="Lien direct vers Les 10 résultats" title="Lien direct vers Les 10 résultats" translate="no">​</a></h2>
<p>La bande de chaque variante aligne de gauche à droite une image par seconde.</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="p01">01 La demande telle quelle<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#p01" class="hash-link" aria-label="Lien direct vers 01 La demande telle quelle" title="Lien direct vers 01 La demande telle quelle" translate="no">​</a></h3>
<p>C'est la référence de comparaison. Une simple liste de mots abstraits, sans mouvement ni caméra.</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">A teaser video that evokes shimmering radiance, wind, influence, intelligence, history,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">authority, creativity, and contribution to the community.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Bande d&amp;#39;images de 01" src="https://api.aicu.ai/docs/fr/assets/images/01-strip-c2212b5c402fd21f971c7dc9c939b6a3.jpg" width="2400" height="270" class="img__qZa"></p>
<video controls="" preload="none" playsinline="" width="100%" poster="/docs/img/blog/wan-teaser/01-poster.jpg" src="/docs/video/wan-teaser/01.mp4"></video>
<p><strong>Le modèle a découpé les plans de lui-même.</strong> Plan large → plan rapproché → plan large : le plan change 3 fois en 5 secondes, et l'angle du trophée varie légèrement à chaque plan. C'est même la vidéo qui a le plus l'allure d'un teaser, mais comme rien ne décrit ce qui doit se passer, vous n'obtiendrez pas la même chose la fois suivante.</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="p02">02 La formule de base (mouvement + caméra)<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#p02" class="hash-link" aria-label="Lien direct vers 02 La formule de base (mouvement + caméra)" title="Lien direct vers 02 La formule de base (mouvement + caméra)" translate="no">​</a></h3>
<p>C'est exactement la formule « image vers vidéo » du guide : deux mouvements et une caméra.</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Sunlight shimmers across the facets of the crystal trophy, and the white cloth ripples gently</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">in the breeze. The camera slowly pushes in.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Bande d&amp;#39;images de 02" src="https://api.aicu.ai/docs/fr/assets/images/02-strip-75987c5429bd0ce4d37a3e6ee21cf155.jpg" width="2400" height="270" class="img__qZa"></p>
<video controls="" preload="none" playsinline="" width="100%" poster="/docs/img/blog/wan-teaser/02-poster.jpg" src="/docs/video/wan-teaser/02.mp4"></video>
<p>Comme demandé, la caméra s'approche lentement. Le texte grossit à mesure qu'elle avance, mais « 2026 WINNER » reste lisible jusqu'au bout. <strong>Commencer par cette forme</strong> semble une bonne idée.</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="p03">03 Éclat scintillant<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#p03" class="hash-link" aria-label="Lien direct vers 03 Éclat scintillant" title="Lien direct vers 03 Éclat scintillant" translate="no">​</a></h3>
<p>On ajoute du vocabulaire de lumière (contre-jour, éclairage de contour, tons chauds) et on fige la caméra (<code>Fixed camera</code>).</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Golden caustic light dances and ripples across the white cloth around the trophy, and a soft</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">lens flare pulses at its tip. Backlight, rim light, warm tones. Fixed camera.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Bande d&amp;#39;images de 03" src="https://api.aicu.ai/docs/fr/assets/images/03-strip-7d719fa27e56903da225bcdbd1f08d9b.jpg" width="2400" height="270" class="img__qZa"></p>
<video controls="" preload="none" playsinline="" width="100%" poster="/docs/img/blog/wan-teaser/03-poster.jpg" src="/docs/video/wan-teaser/03.mp4"></video>
<p>C'est <strong>la plus stable</strong> des 10. Le trophée ne bouge pas, seuls les motifs de lumière (caustiques) ondulent sur le drap, et un halo s'allume à la pointe. Elle convient bien à une boucle vidéo ou à un fond vidéo de stand.</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="p04">04 Le vent<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#p04" class="hash-link" aria-label="Lien direct vers 04 Le vent" title="Lien direct vers 04 Le vent" translate="no">​</a></h3>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">A gust of wind sweeps across the scene: the white cloth billows in slow waves, the leaves behind</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">sway, and dappled light flickers over the crystal. The camera moves slowly to the left.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Bande d&amp;#39;images de 04" src="https://api.aicu.ai/docs/fr/assets/images/04-strip-a796d5faa8b0165d3aadc1e4f5b7861c.jpg" width="2400" height="270" class="img__qZa"></p>
<video controls="" preload="none" playsinline="" width="100%" poster="/docs/img/blog/wan-teaser/04-poster.jpg" src="/docs/video/wan-teaser/04.mp4"></video>
<p>Le drap ondule amplement et la caméra glisse vers la gauche. Malgré l'ampleur du mouvement, la forme du trophée et le texte sont préservés. C'est la seule vidéo dont la génération a pris 196 secondes.</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="p05">05 L'autorité (contre-plongée)<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#p05" class="hash-link" aria-label="Lien direct vers 05 L'autorité (contre-plongée)" title="Lien direct vers 05 L'autorité (contre-plongée)" translate="no">​</a></h3>
<p>L'« autorité » est exprimée par l'angle (contre-plongée), le mouvement de caméra (s'approcher en levant les yeux) et la lumière (éclairage latéral, fort contraste).</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">The trophy stands still and solemn as the light grows stronger along its edges. Low-angle shot,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">the camera slowly pushes in and tilts up toward the glowing tip. Side light, high contrast.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Bande d&amp;#39;images de 05" src="https://api.aicu.ai/docs/fr/assets/images/05-strip-b1a81ed21ad3b926f62218bc77df7f8c.jpg" width="2400" height="270" class="img__qZa"></p>
<video controls="" preload="none" playsinline="" width="100%" poster="/docs/img/blog/wan-teaser/05-poster.jpg" src="/docs/video/wan-teaser/05.mp4"></video>
<p>Dans les 2 dernières secondes, la caméra s'approche d'un coup et termine sur un cadrage qui lève les yeux vers la pointe. Cette fin sur une lumière intense peut servir de conclusion à un teaser. Une fois la caméra au plus près, le texte sort du cadre.</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="p06">06 L'histoire (time-lapse)<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#p06" class="hash-link" aria-label="Lien direct vers 06 L'histoire (time-lapse)" title="Lien direct vers 06 L'histoire (time-lapse)" translate="no">​</a></h3>
<p>Le passage du temps est exprimé par le « time-lapse », qui figure dans le vocabulaire de style du guide.</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Time-lapse photography: the shadow of the trophy sweeps slowly across the white cloth as the</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">light shifts from bright morning white to deep sunset gold. Fixed camera.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Bande d&amp;#39;images de 06" src="https://api.aicu.ai/docs/fr/assets/images/06-strip-0b4197e1260998f4a21db51623b7cacb.jpg" width="2400" height="270" class="img__qZa"></p>
<video controls="" preload="none" playsinline="" width="100%" poster="/docs/img/blog/wan-teaser/06-poster.jpg" src="/docs/video/wan-teaser/06.mp4"></video>
<p>La lumière passe du blanc à l'or du soir et l'ombre s'allonge. Toutefois, <strong>la forme de l'ombre ne correspond pas au trophée</strong> (une ombre en forme de bande apparaît sur le drap). L'ambiance prime sur l'exactitude physique : soyez prudent si l'ombre doit être l'élément principal.</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="p07">07 L'intelligence (circuit de lumière)<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#p07" class="hash-link" aria-label="Lien direct vers 07 L'intelligence (circuit de lumière)" title="Lien direct vers 07 L'intelligence (circuit de lumière)" translate="no">​</a></h3>
<p>L'« intelligence » est montrée par des lignes de lumière qui parcourent l'intérieur du cristal. La caméra tourne légèrement autour du sujet. Le guide recommande de limiter l'angle de rotation à moins de 45 degrés ; nous avons donc écrit moins de 30 degrés.</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Inside the crystal, fine lines of light trace and branch like a network, rising slowly from the</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">base to the tip, while refracted light glints across its facets. Orbiting camera movement, a slow</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">arc of less than 30 degrees.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Bande d&amp;#39;images de 07" src="https://api.aicu.ai/docs/fr/assets/images/07-strip-857d5615020886bc550345a495502d85.jpg" width="2400" height="270" class="img__qZa"></p>
<video controls="" preload="none" playsinline="" width="100%" poster="/docs/img/blog/wan-teaser/07-poster.jpg" src="/docs/video/wan-teaser/07.mp4"></video>
<p>C'est <strong>la vidéo la plus fidèle à ce qui était écrit</strong>. Des lignes de lumière qui se ramifient depuis la base emplissent le trophée de bas en haut. En contrepartie, ces lignes recouvrent aussi le texte : elle ne convient pas aux plans où le texte doit être lisible.</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="p08">08 La communauté (lumière qui se propage)<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#p08" class="hash-link" aria-label="Lien direct vers 08 La communauté (lumière qui se propage)" title="Lien direct vers 08 La communauté (lumière qui se propage)" translate="no">​</a></h3>
<p>L'« influence » et la « contribution à la communauté » sont exprimées par une lumière qui se propage du trophée vers l'extérieur. À la fin, la caméra recule pour montrer l'ensemble.</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Small sparks of golden light spread outward from the base of the trophy across the cloth like</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">ripples, multiplying as they travel toward the edges of the frame. The camera slowly pulls out</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">to reveal the whole scene.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Bande d&amp;#39;images de 08" src="https://api.aicu.ai/docs/fr/assets/images/08-strip-3f53fcaa1f0e6b377e9b4233dac798d8.jpg" width="2400" height="270" class="img__qZa"></p>
<video controls="" preload="none" playsinline="" width="100%" poster="/docs/img/blog/wan-teaser/08-poster.jpg" src="/docs/video/wan-teaser/08.mp4"></video>
<p>Des anneaux de lumière se propagent en cercles concentriques sur le drap, et la caméra recule nettement. Visuellement, c'est la plus lisible avec la 07. Quand la caméra recule et que le trophée rapetisse, <strong>le texte s'écrase et devient illisible</strong>.</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="p09">09 La formule du son (effets sonores + musique)<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#p09" class="hash-link" aria-label="Lien direct vers 09 La formule du son (effets sonores + musique)" title="Lien direct vers 09 La formule du son (effets sonores + musique)" translate="no">​</a></h3>
<p>Avec la formule du son du guide, nous indiquons les effets sonores (vent, résonance du cristal) et la musique (orchestre de cordes et de cuivres), et nous empêchons les dialogues avec <code>No dialogue.</code></p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">The white cloth ripples in the wind and light shimmers across the crystal trophy. Sound: wind</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">rustling through the leaves, a clear crystal chime as a flare passes the tip, and a slow, rising</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">orchestral score with strings and soft brass. No dialogue.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Bande d&amp;#39;images de 09" src="https://api.aicu.ai/docs/fr/assets/images/09-strip-384aea0903da763649bedfe83dc08c2b.jpg" width="2400" height="270" class="img__qZa"></p>
<video controls="" preload="none" playsinline="" width="100%" poster="/docs/img/blog/wan-teaser/09-poster.jpg" src="/docs/video/wan-teaser/09.mp4"></video>
<p>L'image présente des mouvements calmes, proches de ceux des 02 à 04. Côté son, nous avons appris une chose : <strong>les vidéos 01 à 08, pour lesquelles aucun son n'était demandé, ont elles aussi du son</strong>. Wan 3.0 produit du son même si l'on n'écrit rien. Si vous prévoyez d'ajouter une narration ou une musique après coup pour une projection, le plus sûr est soit de partir du principe que le son généré sera remplacé, soit de décrire clairement ici le son souhaité.</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="p10">10 Multi-plans (10 secondes)<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#p10" class="hash-link" aria-label="Lien direct vers 10 Multi-plans (10 secondes)" title="Lien direct vers 10 Multi-plans (10 secondes)" translate="no">​</a></h3>
<p>Avec la formule multi-plans du guide, nous décrivons 3 plans avec leur minutage.</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">A teaser for an international award, in three shots. Shot 1 [0-3 s]: close-up, light glides</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">along the crystal edge of the trophy, fixed camera. Shot 2 [3-6 s]: medium shot, the white cloth</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">ripples in the wind and golden caustics dance around the base, the camera moves left. Shot 3</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">[6-10 s]: the camera pulls out and rises to reveal the trophy standing in sunlight against the</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">green trees, and a lens flare blooms at its tip. Sound: soft wind, a crystal chime, an orchestral</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">swell. No dialogue.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Bande d&amp;#39;images de 10 (une image par seconde, 10 images)" src="https://api.aicu.ai/docs/fr/assets/images/10-strip-2c4850472866e1972f6faa1fc644b199.jpg" width="4000" height="225" class="img__qZa"></p>
<video controls="" preload="none" playsinline="" width="100%" poster="/docs/img/blog/wan-teaser/10-poster.jpg" src="/docs/video/wan-teaser/10.mp4"></video>
<p>La vidéo se divise en 3 plans : le deuxième s'approche des motifs de lumière sur le socle, et le dernier recule pour finir sur un halo. La structure suit presque exactement les instructions. Toutefois, <strong>le Shot 1 a commencé non pas en gros plan, mais sur un plan large proche de la photo d'origine</strong>. Comme la première image est fixée sur la photo, le premier plan part forcément de ce cadrage. Si vous voulez commencer en gros plan, le plus sûr est de préparer une image rapprochée à part et de la transmettre en <code>first_frame</code>. La génération a pris 204 secondes et coûté 14 000 AP.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="takeaways">Ce que nous avons appris<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#takeaways" class="hash-link" aria-label="Lien direct vers Ce que nous avons appris" title="Lien direct vers Ce que nous avons appris" translate="no">​</a></h2>
<table><thead><tr><th></th><th>Résultat</th></tr></thead><tbody><tr><td>Mots abstraits seuls (01)</td><td>Le modèle découpe les plans à sa guise. L'ambiance est là, mais le résultat n'est pas celui visé</td></tr><tr><td>Mouvement + caméra (02 à 05)</td><td>Le mouvement de caméra écrit est bien respecté. S'approcher, glisser vers la gauche, lever les yeux : tout est sorti</td></tr><tr><td>Caméra fixe + vocabulaire de lumière (03)</td><td>Le plus stable. Idéal pour une boucle ou un fond vidéo</td></tr><tr><td>Mettre une métaphore en image (07, 08)</td><td>« Circuit de lumière » et « lumière qui se propage » sortent comme écrits. En contrepartie, le texte est masqué ou écrasé</td></tr><tr><td>Exprimer le temps (06)</td><td>La couleur de la lumière change, mais la forme de l'ombre n'est pas exacte</td></tr><tr><td>Son</td><td>Toutes les vidéos ont du son, même sans instruction. Décrivez le son voulu, ou remplacez-le ensuite si vous n'en voulez pas</td></tr><tr><td>Multi-plans (10)</td><td>La structure est respectée. Le premier plan est tiré vers le cadrage de la <code>first_frame</code></td></tr></tbody></table>
<p>Pour <strong>un sujet qui porte du texte</strong>, le plus sûr était de ne pas trop bouger la caméra (03) ou de montrer le texte en gros plan (02). Les plans où se superposent recul et effets de lumière (07, 08) forment un teaser cohérent si on les monte avec des plans où le texte est lisible.</p>
<p>Une mise en garde concernant le son. En passant les vidéos dans notre outil de reconnaissance vocale, quelque chose ressemblant à de courts mots anglais a été détecté dans la 04 et la 08. La reconnaissance vocale invente parfois des mots sur une musique de fond : nous ne savons donc pas s'il y a réellement des paroles. <strong>Avant toute projection, vérifiez toujours à l'oreille.</strong></p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="cost">Récapitulatif des coûts<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#cost" class="hash-link" aria-label="Lien direct vers Récapitulatif des coûts" title="Lien direct vers Récapitulatif des coûts" translate="no">​</a></h2>
<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td>5 secondes × 9 vidéos</td><td>7 000 AP × 9 = 63 000 AP</td></tr><tr><td>10 secondes × 1 vidéo</td><td>14 000 AP</td></tr><tr><td>Total</td><td><strong>77 000 AP</strong> (environ 7,70 $)</td></tr></tbody></table>
<p>Les générations échouées ne sont pas facturées (les AP sont réservés au lancement et intégralement restitués en cas d'échec). Cette fois, les 10 vidéos ont réussi du premier coup.</p>
<p>⭐︎ Les prix sont ceux en vigueur à la publication (12 novembre 2026). Les tarifs actuels peuvent être vérifiés dans <a class="" href="https://api.aicu.ai/docs/fr/pricing">Tarifs</a> et avec <code>GET /v1/models</code>.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="related">Articles liés<a href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-1#related" class="hash-link" aria-label="Lien direct vers Articles liés" title="Lien direct vers Articles liés" translate="no">​</a></h2>
<ul>
<li class=""><a class="" href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-2">Des visuels clés avec Wan 3.0 (2) — Boucle vidéo et transition vers le logo avec FLF2V</a></li>
<li class=""><a class="" href="https://api.aicu.ai/docs/fr/blog/wan-3-0-key-visual-3">Des visuels clés avec Wan 3.0 (3) — Du blanc au logo, à la photo, à la boucle, puis au blanc : enchaîner des FLF2V en une seule vidéo</a></li>
<li class=""><a class="" href="https://api.aicu.ai/docs/fr/video-api">Video API</a> — appel, première et dernière images, désignation de personnages</li>
<li class=""><a href="https://www.alibabacloud.com/help/en/model-studio/text-to-video-prompt" target="_blank" rel="noopener noreferrer" class="">Alibaba Cloud: Text-to-video / image-to-video prompt guide</a> — source des formules utilisées ici</li>
</ul>
<hr>
<p><strong>Special Thanks to Alibaba Wan 3.0</strong></p>]]></content>
        <author>
            <name>AICU API Team</name>
            <uri>https://api.aicu.ai</uri>
        </author>
        <category label="video" term="video"/>
        <category label="wan" term="wan"/>
        <category label="guide" term="guide"/>
        <category label="prompting" term="prompting"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[The Gemini API is moving to prepaid billing — keeping Gemini and Nano Banana behind one key]]></title>
        <id>https://api.aicu.ai/docs/fr/blog/gemini-api-prepay-one-key</id>
        <link href="https://api.aicu.ai/docs/fr/blog/gemini-api-prepay-one-key"/>
        <updated>2026-10-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[At a wooden desk by a window, green-haired Nao Verde points at a laptop while pink-haired Elena Bloom leans in, smiling. On the desk: a gauge with its needle in the green, a stack of coins and a single brass key]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="At a wooden desk by a window, green-haired Nao Verde points at a laptop while pink-haired Elena Bloom leans in, smiling. On the desk: a gauge with its needle in the green, a stack of coins and a single brass key" src="https://api.aicu.ai/docs/fr/assets/images/hero-6605a2d113b9c35c5377d5af42b4e206.jpg" width="1536" height="1024" class="img__qZa"></p>
<p>Google AI Studio is moving Gemini API billing from postpaid to prepaid. For accounts that received the notice, the deadline is October 12, 2026. Two AiCuty characters, Nao Verde and Elena Bloom, walk through both options: keep using your own Google key, or put Gemini and Nano Banana behind one key on api.aicu.ai.</p>
<!-- -->
<p><em>October 11, 2026 | Nao Verde × Elena Bloom</em></p>
<p>🌸 <strong>Elena Bloom</strong>
Hi, I'm Elena Bloom from AiCuty! Do you use Google's Gemini, or the image model Nano Banana? Today's news matters if you build apps or artwork on those APIs. Google AI Studio has been telling some developers to "update your payment method by October 12, 2026." An app that worked yesterday might stop — that's a little worrying. So I asked Nao, who looks after the technical side of AiCuty, to explain.</p>
<p>💚 <strong>Nao Verde</strong>
Hey, Nao Verde here — music and development for AiCuty. This one is not flashy, but it matters to developers. The Gemini API is moving from postpaid to prepaid. The scheme itself started in March this year; for the accounts that got this notice, the deadline is October 12. And as it happens, <strong>api.aicu.ai, AICU's API platform, serves Gemini and Nano Banana too</strong>. I'll cover both routes: staying on your Google key, and putting everything behind an AICU API key.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="what-changes-on-october-12">What changes on October 12?<a href="https://api.aicu.ai/docs/fr/blog/gemini-api-prepay-one-key#what-changes-on-october-12" class="hash-link" aria-label="Lien direct vers What changes on October 12?" title="Lien direct vers What changes on October 12?" translate="no">​</a></h2>
<p>🌸 <strong>Elena</strong>
What does "moving to prepaid" actually mean?</p>
<p>💚 <strong>Nao</strong>
On a postpaid account you were billed afterwards for what you used. On prepaid you buy credits first, and each call draws on that balance — like a prepaid phone. The important part: <strong>when the prepaid balance hits zero, paid Gemini API calls stop working.</strong> Your key can be right and your code can be right, and requests still fail because of the billing state.</p>
<p>🌸 <strong>Elena</strong>
So a program that ran yesterday can stop tomorrow.</p>
<p>💚 <strong>Nao</strong>
Exactly. The notice Google sent on August 19, 2026 says so. (We received it in Japanese; this is our translation.)</p>
<blockquote>
<p>If you have not completed the move to prepay and purchased credits before October 12, 2026, your service will be interrupted.</p>
</blockquote>
<p>Source: notice from the Google AI Studio team to AICU, "Update your Gemini API payment method in Google AI Studio by October 12, 2026" (August 19, 2026)</p>
<p>Not everyone moves on October 12, though. That deadline is for the accounts that received this notice. Google also says that if you only use the free tier of the Gemini API, you do not need to do anything. Check whether you are affected in Google AI Studio.</p>
<p><a href="https://aistudio.google.com/" target="_blank" rel="noopener noreferrer" class="">https://aistudio.google.com/</a></p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="staying-on-your-google-key">Staying on your Google key<a href="https://api.aicu.ai/docs/fr/blog/gemini-api-prepay-one-key#staying-on-your-google-key" class="hash-link" aria-label="Lien direct vers Staying on your Google key" title="Lien direct vers Staying on your Google key" translate="no">​</a></h2>
<p>🌸 <strong>Elena</strong>
If I already have an app on Gemini, what do I do?</p>
<p>💚 <strong>Nao</strong>
Three things. Open the billing page in Google AI Studio and switch the billing account to prepay. Buy credits. Then, if you want, set up auto-reload, which tops the balance up when it runs low.</p>
<p>🌸 <strong>Elena</strong>
That sounds handy.</p>
<p>💚 <strong>Nao</strong>
It is, with one catch. You can set a monthly limit on automatic purchases, and when you reach it, auto-reload stops (manual purchases do not count toward that limit). It protects you from a surprise bill, but if usage jumps it can also be the line where your service stops. For a small development project manual top-ups may be enough; for something that runs all the time, think about monitoring the balance. One more thing: the prepaid balance is held per Cloud Billing account, not per project. Projects that share a billing account share the balance, and an API key has no balance of its own.</p>
<p>Google's documentation:
<a href="https://ai.google.dev/gemini-api/docs/billing" target="_blank" rel="noopener noreferrer" class="">https://ai.google.dev/gemini-api/docs/billing</a></p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="we-made-the-switch-ourselves">We made the switch ourselves<a href="https://api.aicu.ai/docs/fr/blog/gemini-api-prepay-one-key#we-made-the-switch-ourselves" class="hash-link" aria-label="Lien direct vers We made the switch ourselves" title="Lien direct vers We made the switch ourselves" translate="no">​</a></h2>
<p>🌸 <strong>Elena</strong>
AICU went through this too, right?</p>
<p>💚 <strong>Nao</strong>
Yes. On October 11, 2026 we switched the Google AI Studio billing behind api.aicu.ai's image generation to prepay. The console showed a notice that the account must use prepaid billing. We confirmed the switch and bought credits. The confirmation screens said that the switch takes effect immediately, that you cannot go back to postpay, that your usage tier does not change, and that purchased credits are for the Gemini API only and expire one year after purchase. Credits are generally non-refundable; Google's documentation does describe an exception when an eligible account moves to postpay.</p>
<p>🌸 <strong>Elena</strong>
So buying a lot is not automatically the safe choice.</p>
<p>💚 <strong>Nao</strong>
Right — buy for the usage you expect. After switching we tested in production. <strong>Through the AICU API we called <code>nano-banana-2.1</code> and <code>nano-banana</code> and generated one image with each.</strong> Both returned HTTP 200: about 11.4 seconds for <code>nano-banana-2.1</code>, about 10.9 seconds for <code>nano-banana</code>, with the cache bypassed.</p>
<p>🌸 <strong>Elena</strong>
The images really came back!</p>
<p>💚 <strong>Nao</strong>
And the point is that <strong>the calling code did not change by a single line.</strong> Google's billing changed underneath; an app that calls the AICU API kept calling the same API.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="gemini-and-nano-banana-behind-one-aicu-api-key">Gemini and Nano Banana behind one AICU API key<a href="https://api.aicu.ai/docs/fr/blog/gemini-api-prepay-one-key#gemini-and-nano-banana-behind-one-aicu-api-key" class="hash-link" aria-label="Lien direct vers Gemini and Nano Banana behind one AICU API key" title="Lien direct vers Gemini and Nano Banana behind one AICU API key" translate="no">​</a></h2>
<p>🌸 <strong>Elena</strong>
If I can keep using Google AI Studio directly, why would I use the AICU API?</p>
<p>💚 <strong>Nao</strong>
The simplest reason: <strong>one place for keys and payment.</strong> The AICU API serves Google's Gemini, OpenAI's GPT family and other models behind the same key. Image generation too — Nano Banana is on the same API. You pay from one shared balance in AP (AICU Points). Instead of a key and a balance for Google, another for OpenAI and another for each other service, you build with one AICU API key. Prices and features still differ by model; it does not make everything cost the same.</p>
<p>🌸 <strong>Elena</strong>
So it suits people who combine several AIs in one piece of work.</p>
<p>💚 <strong>Nao</strong>
Yes. Outline with Gemini, draw with Nano Banana, polish the text with another model — when you combine them, having authentication and billing in one place helps a lot in practice. The models are listed on the <a href="https://api.aicu.ai/models" target="_blank" rel="noopener noreferrer" class="">models page</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="calling-gemini-from-python">Calling Gemini from Python<a href="https://api.aicu.ai/docs/fr/blog/gemini-api-prepay-one-key#calling-gemini-from-python" class="hash-link" aria-label="Lien direct vers Calling Gemini from Python" title="Lien direct vers Calling Gemini from Python" translate="no">​</a></h2>
<p>🌸 <strong>Elena</strong>
How do I write it in code?</p>
<p>💚 <strong>Nao</strong>
For chat it is simple. The AICU API has an OpenAI-compatible chat endpoint, so you can use the OpenAI Python SDK. Asking Gemini 3.6 Flash for the highest mountain in Japan looks like this. Put your API key in the <code>AICU_API_KEY</code> environment variable first.</p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> openai </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> OpenAI</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> os</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> OpenAI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    base_url</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"https://api.aicu.ai/v1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    api_key</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">os</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">environ</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"AICU_API_KEY"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">res </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">chat</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">completions</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gemini-3.6-flash"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    messages</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"日本でいちばん高い山を一語で答えてください。"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">res</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">choices</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">message</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">content</span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<p>💚 <strong>Nao</strong>
Three things matter: the <code>base_url</code>, the API key and the model name. A program that already uses an OpenAI-compatible API keeps its shape. (The prompt asks, in Japanese, for the highest mountain in Japan in one word.) When we ran it in production on October 11, <code>gemini-3.6-flash</code> answered 富士山 and <code>gemini-flash</code> answered 富士, both within two seconds. The AP charged for a call comes back in the <code>X-AICU-AP-Cost</code> response header. Code written against Google's own SDK (<code>generateContent</code>) does not carry over as is, but it is a short rewrite into the OpenAI-compatible shape.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="making-an-image-with-nano-banana-21">Making an image with Nano Banana 2.1<a href="https://api.aicu.ai/docs/fr/blog/gemini-api-prepay-one-key#making-an-image-with-nano-banana-21" class="hash-link" aria-label="Lien direct vers Making an image with Nano Banana 2.1" title="Lien direct vers Making an image with Nano Banana 2.1" translate="no">​</a></h2>
<p>🌸 <strong>Elena</strong>
I want to try Nano Banana too!</p>
<p>💚 <strong>Nao</strong>
Sure. <code>nano-banana-2.1</code> is on the image generation endpoint. A blue ceramic cup on a desk:</p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl -s -X POST https://api.aicu.ai/v1/images/generations \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer $AICU_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Content-Type: application/json" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d '{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "model": "nano-banana-2.1",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "prompt": "a blue ceramic cup on a wooden desk, morning light, product photo"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }' \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  | python3 -c "import sys,json,base64; open('out.jpg','wb').write(base64.b64decode(json.load(sys.stdin)['data'][0]['b64_json']))"</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="The image the command above returned: a steaming blue ceramic cup on a wooden desk in morning light" src="https://api.aicu.ai/docs/fr/assets/images/cup-2d62446558671e9e9715365b030a4241.jpg" width="1280" height="714" class="img__qZa"></p>
<p><em>What the command above returned on October 11, 2026 (scaled down for display).</em></p>
<p>💚 <strong>Nao</strong>
<code>b64_json</code> in the response is the image as Base64; decode it and you have the file. In our production test it came back in about ten seconds.</p>
<p>🌸 <strong>Elena</strong>
That is all it takes!</p>
<p>💚 <strong>Nao</strong>
It is. The time varies with load and with the image, though. And if the response includes a URL for the image, pasting it into a browser may not display it — the URL needs authentication. In a web app, use the Base64 data, or fetch the file on your own server and serve it from there. Do not put your API key in browser JavaScript.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="what-prepaid-apis-change-for-people-who-make-things">What prepaid APIs change for people who make things<a href="https://api.aicu.ai/docs/fr/blog/gemini-api-prepay-one-key#what-prepaid-apis-change-for-people-who-make-things" class="hash-link" aria-label="Lien direct vers What prepaid APIs change for people who make things" title="Lien direct vers What prepaid APIs change for people who make things" translate="no">​</a></h2>
<p>🌸 <strong>Elena</strong>
So when you build with APIs, managing the money is part of the work.</p>
<p>💚 <strong>Nao</strong>
It is. If you publish an app or a service built on AI, <strong>keeping the API callable</strong> is part of development, alongside the quality of the model. With a prepaid API, a short balance reaches your users. Google's change is a good moment to sort out your keys and billing settings.</p>
<p>🌸 <strong>Elena</strong>
If you stay on Google AI Studio, check the billing settings first.</p>
<p>💚 <strong>Nao</strong>
Yes. The other option is the AICU API. It is prepaid too — you buy AP in advance — so balance management does not disappear. What does go away is managing the billing settings of Google and every other provider yourself. We keep the connections to each service; you use the models with one key and one AP balance. This time, too, we finished Google's move to prepay and then confirmed that Nano Banana generates an image. That does not mean we can prevent every upstream outage, but it does reduce what each developer has to look after.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="try-the-aicu-api">Try the AICU API<a href="https://api.aicu.ai/docs/fr/blog/gemini-api-prepay-one-key#try-the-aicu-api" class="hash-link" aria-label="Lien direct vers Try the AICU API" title="Lien direct vers Try the AICU API" translate="no">​</a></h2>
<p>🌸 <strong>Elena</strong>
Thank you for reading this far! Google AI Studio's change sounded complicated, but laid out like this the steps are clear. If you keep using your Google key, check whether you need to move to prepay. And if you want Gemini, Nano Banana and other generative models together, there is one more way. <strong>With the AICU API, Gemini, Nano Banana and the other models all run on one API key and one AP balance.</strong></p>
<p>💚 <strong>Nao</strong>
You do not use an API in order to manage API keys. You use it to make something interesting, build something useful, turn an idea into something that runs. The plumbing — connections and payment — should be as simple as it can be. The AICU API is through Gemini's move to prepay. It works from Python and from curl, so whether you already use APIs or are just starting, give it a try.</p>
<p>🌸 <strong>Elena</strong>
Now I want to combine a few AIs and make something new, too. Please try the AICU API!</p>
<ul>
<li class="">AICU API: <a href="https://api.aicu.ai/" target="_blank" rel="noopener noreferrer" class="">https://api.aicu.ai/</a></li>
<li class="">Models: <a href="https://api.aicu.ai/models" target="_blank" rel="noopener noreferrer" class="">https://api.aicu.ai/models</a></li>
<li class="">News: <a href="https://api.aicu.ai/news" target="_blank" rel="noopener noreferrer" class="">https://api.aicu.ai/news</a></li>
<li class="">API specification: <a href="https://api.aicu.ai/openapi.json" target="_blank" rel="noopener noreferrer" class="">https://api.aicu.ai/openapi.json</a></li>
</ul>
<p>See you in the next post!</p>
<p>🌸 Elena Bloom &amp; 💚 Nao Verde</p>
<hr>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="references">References<a href="https://api.aicu.ai/docs/fr/blog/gemini-api-prepay-one-key#references" class="hash-link" aria-label="Lien direct vers References" title="Lien direct vers References" translate="no">​</a></h3>
<ul>
<li class="">Google AI Studio: <a href="https://aistudio.google.com/" target="_blank" rel="noopener noreferrer" class="">https://aistudio.google.com/</a></li>
<li class="">Gemini API documentation, Billing: <a href="https://ai.google.dev/gemini-api/docs/billing" target="_blank" rel="noopener noreferrer" class="">https://ai.google.dev/gemini-api/docs/billing</a></li>
<li class="">AICU API: <a href="https://api.aicu.ai/" target="_blank" rel="noopener noreferrer" class="">https://api.aicu.ai/</a></li>
</ul>
<p>This post reflects information as of October 11, 2026. The deadline for moving in Google AI Studio can differ by account, according to the notice you received. The models, prices and terms of the AICU API may change; check the official pages for the latest. The samples in this post are run regularly, exactly as published, to confirm that they work.</p>]]></content>
        <author>
            <name>AICU API Team</name>
            <uri>https://api.aicu.ai</uri>
        </author>
        <category label="getting-started" term="getting-started"/>
        <category label="images" term="images"/>
        <category label="llm" term="llm"/>
        <category label="pricing" term="pricing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[One key, six calls, 1,185 AP — the whole AICU API in one sitting]]></title>
        <id>https://api.aicu.ai/docs/fr/blog/one-key-six-calls</id>
        <link href="https://api.aicu.ai/docs/fr/blog/one-key-six-calls"/>
        <updated>2026-09-22T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A brass key with five coloured threads fanning out to a sound wave, a paintbrush, a ticked checkbox, a speech bubble and a film frame]]></summary>
        <content type="html"><![CDATA[<p><img decoding="async" loading="lazy" alt="A brass key with five coloured threads fanning out to a sound wave, a paintbrush, a ticked checkbox, a speech bubble and a film frame" src="https://api.aicu.ai/docs/fr/assets/images/hero-fe81d14f1b2f0b0be5aed60367ece8b8.jpg" width="1408" height="768" class="img__qZa"></p>
<p>Speech, images, typed decisions and OpenAI-compatible chat all sit behind <strong>one key</strong> on <a href="https://api.aicu.ai/" target="_blank" rel="noopener noreferrer" class="">api.aicu.ai</a>. This post calls every one of them, in order, and prints what each call actually cost — read straight off the <code>X-AICU-AP-Cost</code> response header, not from a price list.</p>
<p>Total for the whole post: <strong>1,185 AP, about US$0.12.</strong></p>
<!-- -->
<blockquote>
<p><strong>Tomorrow, in person — Sep 23 (Wed), Hamamatsucho.</strong> AICU Japan is exhibiting at <a href="https://www.genai-expo.com/" target="_blank" rel="noopener noreferrer" class="">Generative AI Expo Vol.6</a>, booths <strong>A-7 / A-8</strong>, 12:00–17:30, Tokyo Metropolitan Industrial Trade Center Hamamatsucho 5F. We will run all of this at the table, and the booth doubles as the entry desk for the <a href="https://aicu.ai/award" target="_blank" rel="noopener noreferrer" class="">International AI Creator Award 2026</a>. Come and break it in front of us.</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="first-a-key">First, a key<a href="https://api.aicu.ai/docs/fr/blog/one-key-six-calls#first-a-key" class="hash-link" aria-label="Lien direct vers First, a key" title="Lien direct vers First, a key" translate="no">​</a></h2>
<p>Sign up at <a href="https://api.aicu.ai/signup" target="_blank" rel="noopener noreferrer" class="">api.aicu.ai/signup</a> and issue a key at <a href="https://api.aicu.ai/dashboard/keys" target="_blank" rel="noopener noreferrer" class="">api.aicu.ai/dashboard/keys</a>. During the beta a new account is credited <strong>100,000 AP (about US$10)</strong> — enough to run everything in this post roughly eighty times over.</p>
<p>AP is prepaid and nothing is metered per month. <strong>1 AP = US$0.0001.</strong> There is no plan to choose, no seat to buy, and a key that lapses deletes nothing: your history and your balance stay, the key simply starts returning 401.</p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">export AICU_API_KEY=aicu_...    # from /dashboard/keys</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="1-speech-in-japanese--5-ap">1. Speech, in Japanese — 5 AP<a href="https://api.aicu.ai/docs/fr/blog/one-key-six-calls#1-speech-in-japanese--5-ap" class="hash-link" aria-label="Lien direct vers 1. Speech, in Japanese — 5 AP" title="Lien direct vers 1. Speech, in Japanese — 5 AP" translate="no">​</a></h2>
<p>The speech endpoint takes the OpenAI <code>/audio/speech</code> body, so an existing client usually needs nothing but a new base URL and key.</p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST https://api.aicu.ai/v1/audio/speech \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer $AICU_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H 'Content-Type: application/json' \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d '{"input": "展示会でお会いできるのを楽しみにしています。", "voice": "elena"}' \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --output hello.mp3</span><br></div></code></pre></div></div>
<p>22 characters of Japanese, 3.4 seconds of audio, <strong>5 AP</strong>. The default model is <code>eleven_multilingual_v2</code>.</p>
<audio controls="" preload="none" src="/docs/img/one-key/tts-v2.mp3">Your browser does not support audio playback.</audio>
<p><code>voice</code> takes a character slug — <code>GET /v1/tts/voices</code> with your key lists the ones you can use — or a raw ElevenLabs voice ID if you already have one you like.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="2-the-same-sentence-again--0-ap">2. The same sentence again — 0 AP<a href="https://api.aicu.ai/docs/fr/blog/one-key-six-calls#2-the-same-sentence-again--0-ap" class="hash-link" aria-label="Lien direct vers 2. The same sentence again — 0 AP" title="Lien direct vers 2. The same sentence again — 0 AP" translate="no">​</a></h2>
<p>Run the identical request a second time and the response is byte-identical, instant, and <strong>free</strong>:</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">x-aicu-ap-cost: 0</span><br></div></code></pre></div></div>
<p>Speech is cached on voice, model, seed and the exact text. This matters more than it sounds: an AITuber that greets every viewer with the same line, a game that replays the same barks, a kiosk that loops an intro — all of those pay once. We mark cache hits in <a href="https://api.aicu.ai/dashboard/history" target="_blank" rel="noopener noreferrer" class="">your usage history</a> so a zero-cost row never looks like a billing bug. Failed requests are not charged either; reservations are refunded in full.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="3-eleven_v3-and-inline-direction--7-ap">3. <code>eleven_v3</code> and inline direction — 7 AP<a href="https://api.aicu.ai/docs/fr/blog/one-key-six-calls#3-eleven_v3-and-inline-direction--7-ap" class="hash-link" aria-label="Lien direct vers 3-eleven_v3-and-inline-direction--7-ap" title="Lien direct vers 3-eleven_v3-and-inline-direction--7-ap" translate="no">​</a></h2>
<p>Pass <code>model</code> to switch. <code>eleven_v3</code> reads inline audio tags, so you can direct the delivery inside the text instead of hunting for the right voice.</p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST https://api.aicu.ai/v1/audio/speech \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer $AICU_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H 'Content-Type: application/json' \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d '{"input": "[excited]展示会でお会いできるのを楽しみにしています。",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">       "voice": "elena", "model": "eleven_v3"}' \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  --output hello-v3.mp3</span><br></div></code></pre></div></div>
<p><strong>7 AP.</strong> Same sentence, different performance — listen to them back to back:</p>
<audio controls="" preload="none" src="/docs/img/one-key/tts-v3.mp3">Your browser does not support audio playback.</audio>
<p>A deliberate design note: an unknown <code>model</code> value returns <strong>400</strong>, it does not quietly fall back to v2. A 200 you did not ask for is worse than an error.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="4-an-image--1170-ap">4. An image — 1,170 AP<a href="https://api.aicu.ai/docs/fr/blog/one-key-six-calls#4-an-image--1170-ap" class="hash-link" aria-label="Lien direct vers 4. An image — 1,170 AP" title="Lien direct vers 4. An image — 1,170 AP" translate="no">​</a></h2>
<p>The illustration at the top of this post came out of this API. Here is the exact call:</p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST https://api.aicu.ai/v1/images/generations \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer $AICU_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H 'Content-Type: application/json' \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d '{"model": "nano-banana", "size": "1536x1024", "n": 1,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">       "prompt": "A single ornate brass key lying on warm cream paper, drawn as a clean editorial line illustration with soft watercolour shading. From the teeth of the key, five slender coloured threads fan out to the right and each ends in one small hand-drawn glyph: a sound wave, a paintbrush, a ticked checkbox, a speech bubble, and a film frame. Muted palette: brass, dusty rose, sage green, ochre, slate blue, terracotta. Generous empty space on the left. No text, no letters, no numbers, no logos, no watermark."}'</span><br></div></code></pre></div></div>
<p><strong>1,170 AP</strong>, 10.4 seconds, returned as <code>b64_json</code>. The body is OpenAI-shaped, so <code>openai.images.generate()</code> works against it unchanged. <code>gpt-image-2.5</code> is on the same endpoint if you want its quality ladder — we measured that one separately in <a class="" href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5">our GPT-Image-2.5 notes</a>.</p>
<p>Full disclosure, since this post is about receipts: the first attempt at that illustration cost another 1,170 AP and was thrown away. Image generation is iterative, and your ledger will show that.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="5-a-decision-with-a-type--2-ap">5. A decision, with a type — 2 AP<a href="https://api.aicu.ai/docs/fr/blog/one-key-six-calls#5-a-decision-with-a-type--2-ap" class="hash-link" aria-label="Lien direct vers 5. A decision, with a type — 2 AP" title="Lien direct vers 5. A decision, with a type — 2 AP" translate="no">​</a></h2>
<p>This is the endpoint people don't expect. A chat model answers in prose, so your code has to parse prose back into a branch — every time, forever. <code>/v1/jev</code> relays <a href="https://typesafe.ai/" target="_blank" rel="noopener noreferrer" class="">Jev</a> and answers in <strong>types</strong>: a choice, a score, or a likelihood.</p>
<p>Here is a real support message going in:</p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST https://api.aicu.ai/v1/jev \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer $AICU_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H 'Content-Type: application/json' \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d '{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "state": "Customer wrote: The mp3 was generated but my credit balance did not go down. Is something broken?",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    "questions": {</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      "intent": { "type": "choice", "instructions": "What is this message mainly about?",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "criteria": { "billing": "About charges, credits or the balance",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                      "bug_report": "Something appears to be broken",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                      "feature_request": "Asking for something new",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                      "praise": "Positive feedback with no question" } },</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      "urgency": { "type": "score", "instructions": "How urgent is this for the customer?",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "criteria": ["no rush", "answer this week", "answer today", "service is down"] },</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      "needs_human": { "type": "noul", "instructions": "How likely is it that a human must reply?" }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  }'</span><br></div></code></pre></div></div>
<p>And the answer, trimmed:</p>
<div class="language-json codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-json codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"model"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"jev-1.13.0"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"answers"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"intent"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"choice"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"billing"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"probabilities"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"billing"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.78</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"bug_report"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.22</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.71</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"urgency"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">     </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"score"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1.68</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"legend"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"0"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"no rush"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"1"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"answer this week"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"2"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"answer today"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"3"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"service is down"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"confidence"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.63</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"needs_human"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"noul"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">0.68</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"ap_cost"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p><strong>2 AP</strong> for three typed answers with calibrated probabilities. No regex, no "please respond in JSON", no retry when the model felt chatty. Route on <code>answers.intent.choice</code> and be done. (That example is not hypothetical — it is close to a message a customer actually sent us, and the cache hit in §2 is the answer to it.)</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="6-chat-openai-compatible--1-ap">6. Chat, OpenAI-compatible — 1 AP<a href="https://api.aicu.ai/docs/fr/blog/one-key-six-calls#6-chat-openai-compatible--1-ap" class="hash-link" aria-label="Lien direct vers 6. Chat, OpenAI-compatible — 1 AP" title="Lien direct vers 6. Chat, OpenAI-compatible — 1 AP" translate="no">​</a></h2>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST https://api.aicu.ai/v1/chat/completions \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer $AICU_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H 'Content-Type: application/json' \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d '{"model": "deepseek-v3",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">       "messages": [{"role": "user", "content": "Reply in one short sentence: what is an API key for?"}]}'</span><br></div></code></pre></div></div>
<blockquote>
<p>An API key is used to authenticate and authorize access to an API.</p>
</blockquote>
<p>31 tokens, 2.1 seconds, <strong>1 AP</strong>. In any OpenAI SDK, two lines:</p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> openai </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> OpenAI</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> OpenAI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">base_url</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"https://api.aicu.ai/v1"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> api_key</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">os</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">environ</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"AICU_API_KEY"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<p><code>GET /v1/chat/models</code> lists what is routable right now, and <a href="https://api.aicu.ai/models" target="_blank" rel="noopener noreferrer" class="">api.aicu.ai/models</a> is the same list with prices.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="the-bill">The bill<a href="https://api.aicu.ai/docs/fr/blog/one-key-six-calls#the-bill" class="hash-link" aria-label="Lien direct vers The bill" title="Lien direct vers The bill" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="Ledger of the six calls in this post: 5 AP, 0 AP, 7 AP, 1,170 AP, 2 AP, 1 AP, total 1,185 AP" src="https://api.aicu.ai/docs/fr/assets/images/ledger-en-00249386c17043004b0f00b190bba2fd.jpg" width="1600" height="1058" class="img__qZa"></p>
<p>Two headers come back on every billed call:</p>
<table><thead><tr><th>Header</th><th>Meaning</th></tr></thead><tbody><tr><td><code>X-AICU-AP-Cost</code></td><td>what this request cost — <code>0</code> on a cache hit</td></tr><tr><td><code>X-AICU-AP-Balance</code></td><td>what is left afterwards</td></tr></tbody></table>
<p>Log the first one and you have your own cost accounting without waiting for an invoice. The same rows, endpoint by endpoint, are in <a href="https://api.aicu.ai/dashboard/history" target="_blank" rel="noopener noreferrer" class="">your usage history</a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="paying-in-yen">Paying in yen<a href="https://api.aicu.ai/docs/fr/blog/one-key-six-calls#paying-in-yen" class="hash-link" aria-label="Lien direct vers Paying in yen" title="Lien direct vers Paying in yen" translate="no">​</a></h2>
<p>Buying in <strong>USD is fine for anyone</strong> — individuals, sole traders, a team trying things out. The yen packs exist for a narrower reason: Japanese companies that need a <strong>qualified invoice (適格請求書)</strong>, bank transfer, or a purchase booked against this year's budget. Those are sold by <strong>AICU Japan K.K. (法人向け・円建・適格事業者)</strong>, and the conversion rate is republished weekly against the market rate. From <strong>Sep 30</strong> the yen packs move to 1 USD = ¥180. USD pricing is unaffected.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="what-happens-next">What happens next<a href="https://api.aicu.ai/docs/fr/blog/one-key-six-calls#what-happens-next" class="hash-link" aria-label="Lien direct vers What happens next" title="Lien direct vers What happens next" translate="no">​</a></h2>
<p>The beta calendar, all times 09:00 JST:</p>
<table><thead><tr><th>Date</th><th></th></tr></thead><tbody><tr><td><strong>Oct 7</strong></td><td>AP packs open for purchase in USD; every account holder gets the production guide by email</td></tr><tr><td><strong>Oct 14</strong></td><td>no new beta keys — keys issued from here are production <code>aicu_live_</code> keys</td></tr><tr><td><strong>Oct 21</strong></td><td>production operation begins; new keys require a registered card</td></tr><tr><td><strong>Oct 31</strong></td><td>beta keys stop working</td></tr></tbody></table>
<p>Expiry never deletes anything, and we email the owner a week before any key lapses.</p>
<p>Until then the beta is open, and the fastest way to find out whether this fits your project is to spend about twelve cents finding out.</p>
<hr>
<p><em>Every AP figure in this post was measured on 2026-09-22 against production. Reproduce it with your own key and you should land on the same numbers.</em></p>]]></content>
        <author>
            <name>AICU API Team</name>
            <uri>https://api.aicu.ai</uri>
        </author>
        <category label="getting-started" term="getting-started"/>
        <category label="tts" term="tts"/>
        <category label="images" term="images"/>
        <category label="llm" term="llm"/>
        <category label="decisions" term="decisions"/>
        <category label="pricing" term="pricing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Raspberry Pi 4 の Slack ボットから AICU API を使う — 生成・X 読み取り・文字起こしを鍵 1 本で]]></title>
        <id>https://api.aicu.ai/docs/fr/blog/slack-bot-on-raspberry-pi-4-with-aicu-api</id>
        <link href="https://api.aicu.ai/docs/fr/blog/slack-bot-on-raspberry-pi-4-with-aicu-api"/>
        <updated>2026-09-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Written by AICU API Team]]></summary>
        <content type="html"><![CDATA[<p>Written by <strong>AICU API Team</strong></p>
<p>AICU 編集部の Slack ボット「AiCuty」は、Raspberry Pi 4（8GB）の Docker Compose 上で動いています。
記事の初稿を書き、カバー画像を描き、X の投稿を引用カードにし、動画を文字起こしする 18 本のコマンドのうち、
生成 AI を呼ぶものはすべて <strong>AICU API の鍵 1 本</strong>で動くように寄せました。
このページは、その構成と、各コマンドがどのエンドポイントをどう呼んでいるかの技術メモです。
移植の経緯や運用の教訓は、しらいはかせの連載（note / 窓の杜）に譲ります。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="構成">構成<a href="https://api.aicu.ai/docs/fr/blog/slack-bot-on-raspberry-pi-4-with-aicu-api#%E6%A7%8B%E6%88%90" class="hash-link" aria-label="Lien direct vers 構成" title="Lien direct vers 構成" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="Raspberry Pi 4 は入口と組み立てだけ。重い仕事は API へ" src="https://api.aicu.ai/docs/fr/assets/images/aicuty-pi-architecture-c88eb0d27a9fee6f2de05e3f59cc765e.png" width="1520" height="968" class="img__qZa"></p>
<ul>
<li class="">Raspberry Pi 4 Model B（8GB）、Debian 13、Docker Compose。ボットは Slack Socket Mode で接続するので、Pi 側にポート開放も Tunnel も要りません</li>
<li class="">常駐メモリ 106 MB、CPU 温度 61 ℃（アイドル相当）。Pi の CPU で LLM 推論や画像生成はしません</li>
<li class="">生成 AI の呼び出しは <code>https://api.aicu.ai/v1</code> に集約。鍵は 1 本（スコープ <code>llm</code> / <code>images</code> / <code>tts</code> / <code>x</code>）</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="コマンドと経路">コマンドと経路<a href="https://api.aicu.ai/docs/fr/blog/slack-bot-on-raspberry-pi-4-with-aicu-api#%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A8%E7%B5%8C%E8%B7%AF" class="hash-link" aria-label="Lien direct vers コマンドと経路" title="Lien direct vers コマンドと経路" translate="no">​</a></h2>
<table><thead><tr><th>コマンド</th><th>エンドポイント</th><th>モデル</th><th>目安</th></tr></thead><tbody><tr><td><code>generate</code>（記事初稿＋カバー）</td><td><code>POST /v1/chat/completions</code> ＋ <code>POST /v1/images/edits</code></td><td><code>gpt-5.6-sol</code> ＋ <code>gpt-image-2.5-flare</code></td><td>本文 約 7,700 AP・53〜62 秒、カバー 5,100 AP・約 20 秒</td></tr><tr><td><code>preview</code>（内容分析）</td><td><code>POST /v1/chat/completions</code></td><td><code>gpt-5.6-sol</code></td><td>本文生成より軽い</td></tr><tr><td><code>xshot</code>（X の引用カード）</td><td><code>GET /v1/x/status/:id</code> ＋ ローカル描画（Pillow）</td><td>—</td><td>数秒。現在 0 AP、2026-09-23 から上流参照 1 回 100 AP</td></tr><tr><td><code>gpt-image2</code> 系（参照画像つき）</td><td><code>POST /v2.5/images/edits</code>（OpenAI SDK 同形）</td><td><code>gpt-image-2.5-flare</code> / <code>-sunburst</code></td><td>1536×1024 high 5,100 AP。flare 約 20 秒、sunburst 約 67 秒</td></tr><tr><td><code>whisper</code> <code>youtube</code>（文字起こし）</td><td><code>POST /v1/audio/transcriptions</code></td><td><code>whisper-large-v3-turbo</code></td><td>音声 10 秒 = 3 AP</td></tr></tbody></table>
<p><code>banana</code>（Gemini 固有の画像モデル）だけは Gemini の鍵が要ります。<code>xheader</code> / <code>kdp</code> / <code>upload</code> / <code>members</code> などはローカル処理と R2 で、API を呼びません。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="x-の投稿を-1-回で引用カードにする">X の投稿を 1 回で引用カードにする<a href="https://api.aicu.ai/docs/fr/blog/slack-bot-on-raspberry-pi-4-with-aicu-api#x-%E3%81%AE%E6%8A%95%E7%A8%BF%E3%82%92-1-%E5%9B%9E%E3%81%A7%E5%BC%95%E7%94%A8%E3%82%AB%E3%83%BC%E3%83%89%E3%81%AB%E3%81%99%E3%82%8B" class="hash-link" aria-label="Lien direct vers X の投稿を 1 回で引用カードにする" title="Lien direct vers X の投稿を 1 回で引用カードにする" translate="no">​</a></h2>
<p>X は未ログインのアクセスに投稿ページを返さなくなったため（HTTP 403）、ブラウザのスクリーンショットは使えなくなりました。
<code>GET /v1/x/status/:id</code> は本文・著者・投稿日時に加えて添付メディアを返すので、カードはボット側で組めます。</p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl https://api.aicu.ai/v1/x/status/2099311063212994603 \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer $AICU_API_KEY"</span><br></div></code></pre></div></div>
<div class="language-json codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-json codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2099311063212994603"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"text"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"台風14号の進路予想を更新しました …"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"author"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"username"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"wni_jp"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"name"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ウェザーニュース"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"profile_image_url"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://pbs.twimg.com/…"</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"created_at"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2026-09-14T01:35:35.000Z"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"media"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"photo"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"url"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://pbs.twimg.com/media/….png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"width"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">800</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token property" style="color:#36acaa">"height"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">600</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<ul>
<li class=""><code>media[]</code> は添付の順。無ければ <code>[]</code>。<code>type</code> は <code>photo</code> / <code>video</code> / <code>animated_gif</code>。動画は <code>url</code> が mp4、サムネイルは <code>preview_image_url</code></li>
<li class=""><code>alt_text</code> は元の投稿に代替テキストがあるときだけ付きます</li>
<li class="">同じ id は 10 分間サーバ側でキャッシュされ、その間の再取得は無料</li>
<li class=""><code>id</code> は <code>x.com/&lt;user&gt;/status/&lt;id&gt;</code> の末尾の数字。X の API キーは要りません</li>
</ul>
<p>ボット側は <code>media[0]</code> を本文の下に貼り（高さ 560 px 上限）、<code>created_at</code> を JST に直し、出典 URL を添えるだけです。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="画像生成を-openai-sdk-のまま向ける">画像生成を OpenAI SDK のまま向ける<a href="https://api.aicu.ai/docs/fr/blog/slack-bot-on-raspberry-pi-4-with-aicu-api#%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%82%92-openai-sdk-%E3%81%AE%E3%81%BE%E3%81%BE%E5%90%91%E3%81%91%E3%82%8B" class="hash-link" aria-label="Lien direct vers 画像生成を OpenAI SDK のまま向ける" title="Lien direct vers 画像生成を OpenAI SDK のまま向ける" translate="no">​</a></h2>
<p><code>POST /v2.5/images/edits</code> は OpenAI の <code>images.edit()</code> と同じ multipart を受けます。SDK の <code>base_url</code> を変えるだけで動きます。</p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> openai </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> OpenAI</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> OpenAI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">base_url</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"https://api.aicu.ai/v2.5"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> api_key</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">os</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">environ</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"AICU_API_KEY"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">img </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">images</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">edit</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-image-2.5-flare"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> image</span><span class="token operator" style="color:#393A34">=</span><span class="token builtin">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"ref.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"rb"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                         prompt</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"記事カバー。参照画像の人物をそのまま、背景を秋の書店に"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                         size</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"1536x1024"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> quality</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"high"</span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<p><code>quality</code> は <code>low</code> / <code>medium</code> / <code>high</code>。<code>xhigh</code> / <code>max</code> も 2026-09-21 から使えますが、<strong>60 秒を超えると結果はメールで届く</strong>ため、Slack にその場で返すボットには向きません。
<code>/v1/images/edits</code> は AICU 独自の JSON（<code>reference_image</code> に base64）なので、SDK からは <code>/v2.5</code> を使ってください。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="文字起こしを-pi-の-cpu-から外す">文字起こしを Pi の CPU から外す<a href="https://api.aicu.ai/docs/fr/blog/slack-bot-on-raspberry-pi-4-with-aicu-api#%E6%96%87%E5%AD%97%E8%B5%B7%E3%81%93%E3%81%97%E3%82%92-pi-%E3%81%AE-cpu-%E3%81%8B%E3%82%89%E5%A4%96%E3%81%99" class="hash-link" aria-label="Lien direct vers 文字起こしを Pi の CPU から外す" title="Lien direct vers 文字起こしを Pi の CPU から外す" translate="no">​</a></h2>
<p>Pi 4 の faster-whisper（small）は 48 秒の音声に約 5 分かかります。同じ音声を API に投げると数秒で、15 AP です。</p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl https://api.aicu.ai/v1/audio/transcriptions \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer $AICU_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -F model=whisper-large-v3-turbo -F file=@clip.mp3 -F response_format=srt</span><br></div></code></pre></div></div>
<p>yt-dlp と ffmpeg で音声を切り出すところまでが Pi の仕事です。1 リクエスト 30 MB / 30 分まで。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="料金2026-09-14-時点1-usd--10000-ap課金は-http-200-のみ">料金（2026-09-14 時点・1 USD = 10,000 AP・課金は HTTP 200 のみ）<a href="https://api.aicu.ai/docs/fr/blog/slack-bot-on-raspberry-pi-4-with-aicu-api#%E6%96%99%E9%87%912026-09-14-%E6%99%82%E7%82%B91-usd--10000-ap%E8%AA%B2%E9%87%91%E3%81%AF-http-200-%E3%81%AE%E3%81%BF" class="hash-link" aria-label="Lien direct vers 料金（2026-09-14 時点・1 USD = 10,000 AP・課金は HTTP 200 のみ）" title="Lien direct vers 料金（2026-09-14 時点・1 USD = 10,000 AP・課金は HTTP 200 のみ）" translate="no">​</a></h2>
<table><thead><tr><th>用途</th><th>エンドポイント</th><th>料金</th></tr></thead><tbody><tr><td>画像生成（GPT-Image-2.5 Flare / Sunburst）</td><td><code>/v1/images/generations</code> <code>/v1/images/edits</code> <code>/v2.5/images/edits</code></td><td>1024×1024: low 700 / medium 1,600 / high 6,400 AP。1536×1024: 1,300 / 2,300 / 5,100 AP</td></tr><tr><td>X の投稿 1 件（添付つき）</td><td><code>/v1/x/status/:id</code></td><td>現在 0 AP。2026-09-23 から上流参照 1 回 100 AP（10 分キャッシュ、ヒットは 0）</td></tr><tr><td>X のプロフィール</td><td><code>/v1/x/user/:username</code></td><td>現在 0 AP。2026-09-23 から 100 AP</td></tr><tr><td>X のタイムライン・検索</td><td><code>/v1/x/timeline/:username</code> <code>/v1/x/search</code></td><td>2,250 AP/回</td></tr><tr><td>文字起こし</td><td><code>/v1/audio/transcriptions</code></td><td>音声 10 秒 = 3 AP</td></tr></tbody></table>
<p>X の投稿取得は 9 月 13 日の告知で 10 AP としていましたが、添付メディアまで返す拡張に合わせて 100 AP に改めました（改訂告知 9 月 14 日、発効の 9 日前）。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="仕様">仕様<a href="https://api.aicu.ai/docs/fr/blog/slack-bot-on-raspberry-pi-4-with-aicu-api#%E4%BB%95%E6%A7%98" class="hash-link" aria-label="Lien direct vers 仕様" title="Lien direct vers 仕様" translate="no">​</a></h2>
<ul>
<li class="">X: <a href="https://api.aicu.ai/skills/x" target="_blank" rel="noopener noreferrer" class="">https://api.aicu.ai/skills/x</a></li>
<li class="">文字起こし: <a href="https://api.aicu.ai/skills/stt" target="_blank" rel="noopener noreferrer" class="">https://api.aicu.ai/skills/stt</a></li>
<li class="">画像: <a href="https://api.aicu.ai/docs/image-api" target="_blank" rel="noopener noreferrer" class="">https://api.aicu.ai/docs/image-api</a></li>
<li class="">OpenAPI: <a href="https://api.aicu.ai/openapi.json" target="_blank" rel="noopener noreferrer" class="">https://api.aicu.ai/openapi.json</a></li>
</ul>]]></content>
        <author>
            <name>AICU API Team</name>
            <uri>https://api.aicu.ai</uri>
        </author>
        <category label="x" term="x"/>
        <category label="images" term="images"/>
        <category label="stt" term="stt"/>
        <category label="gateway" term="gateway"/>
        <category label="raspberry-pi" term="raspberry-pi"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AiCutyBench — GPT-Image-2.5 は AiCuty を再現できるか（歩留まり実測）]]></title>
        <id>https://api.aicu.ai/docs/fr/blog/aicutybench-gpt-image-2-5</id>
        <link href="https://api.aicu.ai/docs/fr/blog/aicutybench-gpt-image-2-5"/>
        <updated>2026-09-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[AICU 公式キャラクター AiCuty を、GPT-Image-2.5 がどれだけ確実に再現できるかを測りました。]]></summary>
        <content type="html"><![CDATA[<p>AICU 公式キャラクター <strong>AiCuty</strong> を、GPT-Image-2.5 が<strong>どれだけ確実に再現できるか</strong>を測りました。
主観の「なんとなく似てる」ではなく、<strong>正本のデザイン仕様（プロンプト＝設計図）を判定軸に、生成物を機械採点して歩留まりを出す</strong>——
これを <strong>AiCutyBench</strong> として、再現可能な形でまとめています。この記事はその過程と結果の記録です。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="なぜ歩留まりで測るのか">なぜ「歩留まり」で測るのか<a href="https://api.aicu.ai/docs/fr/blog/aicutybench-gpt-image-2-5#%E3%81%AA%E3%81%9C%E6%AD%A9%E7%95%99%E3%81%BE%E3%82%8A%E3%81%A7%E6%B8%AC%E3%82%8B%E3%81%AE%E3%81%8B" class="hash-link" aria-label="Lien direct vers なぜ「歩留まり」で測るのか" title="Lien direct vers なぜ「歩留まり」で測るのか" translate="no">​</a></h2>
<p>キャラクター API の価値は「1 枚きれいに出る」ことではなく、<strong>何度呼んでも同じキャラが出ること</strong>です。
GPT-Image-2.5 には seed がないため、再現性は「同じ設計図（プロンプト）から、どれくらいの確率で合格品が出るか」＝<strong>歩留まり</strong>で評価するのが正直です。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="方法aicutybench">方法（AiCutyBench）<a href="https://api.aicu.ai/docs/fr/blog/aicutybench-gpt-image-2-5#%E6%96%B9%E6%B3%95aicutybench" class="hash-link" aria-label="Lien direct vers 方法（AiCutyBench）" title="Lien direct vers 方法（AiCutyBench）" translate="no">​</a></h2>
<ol>
<li class=""><strong>グラウンドトゥルース＝正本プロンプト</strong>。AiCuty の各キャラには公式リポジトリに「設計図」としてのプロンプトがあり（<a href="https://github.com/aicuai/AiCuty" target="_blank" rel="noopener noreferrer" class="">github.com/aicuai/AiCuty</a>）、
そこから「変えても残る特徴」を判定軸として抜き出します（例: Mei なら高いサイドポニー・星のヘアピン・そばかす・スカート下のショートパンツ…の 8 項目）。</li>
<li class=""><strong>生成</strong>: 正本プロンプトを <strong>text-to-image</strong>（参照画像なし）で <code>gpt-image-2.5-flare</code> / <code>sunburst</code> に渡す。</li>
<li class=""><strong>採点</strong>: 生成物を GPT-4o Vision に渡し、<strong>判定軸ごとに present / partial / absent</strong> を判定させ、総合スコア（0–100）を出す。</li>
<li class=""><strong>歩留まり</strong>: 同条件で N 枚生成し、<strong>スコア 85 以上を合格</strong>として合格率を出す。</li>
</ol>
<p>主観を排し、同じ手順を誰が回しても同じ数字が出る設計です（スクリプトは AiCuty リポジトリの <code>bench/</code> に置いています）。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="結果-1-歩留まり正本プロンプト--text-to-image">結果 1: 歩留まり（正本プロンプト → text-to-image）<a href="https://api.aicu.ai/docs/fr/blog/aicutybench-gpt-image-2-5#%E7%B5%90%E6%9E%9C-1-%E6%AD%A9%E7%95%99%E3%81%BE%E3%82%8A%E6%AD%A3%E6%9C%AC%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88--text-to-image" class="hash-link" aria-label="Lien direct vers 結果 1: 歩留まり（正本プロンプト → text-to-image）" title="Lien direct vers 結果 1: 歩留まり（正本プロンプト → text-to-image）" translate="no">​</a></h2>
<p><strong>GPT-Image-2.5 Flare（6 人 × 各 10 枚 ＝ 60 枚）</strong></p>
<table><thead><tr><th>キャラ</th><th>合格</th><th>歩留まり</th><th>平均スコア</th><th>各回のスコア</th></tr></thead><tbody><tr><td><strong>Mei Soleil</strong></td><td>10 / 10</td><td><strong>100%</strong></td><td>92</td><td>100 90 95 85 87 95 90 95 87 95</td></tr><tr><td><strong>Saki Noire</strong></td><td>10 / 10</td><td><strong>100%</strong></td><td>100</td><td>100 95 100 100 100 100 100 100 100 100</td></tr><tr><td><strong>Elena Bloom</strong></td><td>10 / 10</td><td><strong>100%</strong></td><td>99</td><td>100 95 95 100 100 100 100 95 100 100</td></tr><tr><td><strong>Nao Verde</strong></td><td>10 / 10</td><td><strong>100%</strong></td><td>98</td><td>95 100 100 90 100 100 95 100 95 100</td></tr><tr><td><strong>Mina Azure</strong></td><td>10 / 10</td><td><strong>100%</strong></td><td>100</td><td>100 100 100 100 100 100 100 100 100 100</td></tr><tr><td><strong>Marsha Arancia</strong></td><td>10 / 10</td><td><strong>100%</strong></td><td>100</td><td>100 100 100 100 100 100 100 100 100 100</td></tr><tr><td><strong>合計</strong></td><td><strong>60 / 60</strong></td><td><strong>100%</strong></td><td>98</td><td>—</td></tr></tbody></table>
<p><strong>GPT-Image-2.5 Sunburst（各 5 枚）</strong></p>
<table><thead><tr><th>キャラ</th><th>合格</th><th>歩留まり</th><th>平均スコア</th><th>各回のスコア</th></tr></thead><tbody><tr><td><strong>Mei Soleil</strong></td><td>5 / 5</td><td><strong>100%</strong></td><td>95</td><td>100 100 87 100 90</td></tr><tr><td><strong>Saki Noire</strong></td><td>5 / 5</td><td><strong>100%</strong></td><td>99</td><td>100 100 100 100 95</td></tr></tbody></table>
<ul>
<li class=""><strong>6 人全員・60 枚すべてが合格（歩留まり 100%）</strong>。「正本プロンプトを渡せば、ほぼ毎回そのキャラが出る」が数字で言えました。</li>
<li class="">Mei のスコアのばらつき（85〜100）は、主に<strong>そばかす</strong>の有無。細部の取りこぼしが起きるのはここです。</li>
<li class="">Saki（濃色・情報量の多い衣装・左目にかかる前髪・指を唇に）は<strong>ほぼ毎回満点</strong>。複雑な設計でも、設計図が明確なら再現できます。</li>
<li class="">Elena・Nao も最低 90〜95 で、減点はどの回も 1 項目分（partial）程度。合格ライン 85 を割った回はありません。</li>
<li class="">Mina・Marsha は <strong>10 枚とも満点</strong>。色数が少なく輪郭のはっきりした設計ほど安定します。</li>
<li class="">Sunburst は平均スコアがわずかに高い（Mei 92 → 95）が、歩留まりは同じ。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="結果-2-quality-5-段階meiflare10241024">結果 2: quality 5 段階（Mei・Flare・1024×1024）<a href="https://api.aicu.ai/docs/fr/blog/aicutybench-gpt-image-2-5#%E7%B5%90%E6%9E%9C-2-quality-5-%E6%AE%B5%E9%9A%8Emeiflare10241024" class="hash-link" aria-label="Lien direct vers 結果 2: quality 5 段階（Mei・Flare・1024×1024）" title="Lien direct vers 結果 2: quality 5 段階（Mei・Flare・1024×1024）" translate="no">​</a></h2>
<table><thead><tr><th>quality</th><th>出力画像トークン</th><th>生成時間</th><th>忠実度</th></tr></thead><tbody><tr><td>low</td><td>196</td><td>15.3 s</td><td>87</td></tr><tr><td>medium</td><td>439</td><td>13.1 s</td><td>90</td></tr><tr><td>high</td><td>1,756</td><td>21.6 s</td><td>88</td></tr><tr><td><strong>xhigh</strong></td><td>3,122</td><td>29.2 s</td><td><strong>100</strong></td></tr><tr><td>max</td><td>7,024</td><td>51.9 s</td><td><strong>100</strong></td></tr></tbody></table>
<ul>
<li class="">出力トークン（＝生成コストの実体）は <strong>low → max で約 36 倍</strong>。</li>
<li class="">トークン数は<strong>サイズではなく形状</strong>で変わり、正方形がいちばん高い。同じ high でも 1024×1024 = 1,756、1920×1088 = 1,325（画素数は約 2 倍なのに少ない）、1728×800 = 893、1536×512 = 535。<strong>横長バナーは正方形より安い</strong>。この表の数字は 1024×1024 のもの。</li>
<li class="">忠実度は low〜high でほぼ横ばい、<strong>xhigh で満点</strong>に跳ね上がる。max は xhigh の約 2.3 倍のトークンで忠実度は同じ。</li>
<li class="">実務の目安: <strong>速く回すなら medium、細部まで確実に再現したいなら xhigh</strong>。max は必要な時だけ。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="途中で分かったこと正直に">途中で分かったこと（正直に）<a href="https://api.aicu.ai/docs/fr/blog/aicutybench-gpt-image-2-5#%E9%80%94%E4%B8%AD%E3%81%A7%E5%88%86%E3%81%8B%E3%81%A3%E3%81%9F%E3%81%93%E3%81%A8%E6%AD%A3%E7%9B%B4%E3%81%AB" class="hash-link" aria-label="Lien direct vers 途中で分かったこと（正直に）" title="Lien direct vers 途中で分かったこと（正直に）" translate="no">​</a></h2>
<ul>
<li class=""><strong>「作り直し」はダメ</strong>。既存のリファレンスシートを "Recreate" させると、レイアウトごと描き直して崩れる。絵は<strong>作り直さず高画質化</strong>し、<strong>文字は画像生成に任せず PIL で合成</strong>する二段構えが正解（文字は画像モデルが崩す）。</li>
<li class=""><strong>正本プロンプトを使うと細部が来る</strong>。単体の参照画像＋汎用プロンプトでは Mei のショートパンツがスカートになった。正本の設計図プロンプトにしたら、ショートパンツまで再現された。</li>
<li class=""><strong>多人数同時は楽器・衣装の取り違えが起きる</strong>。6 人を 1 枚にすると、担当楽器（Mei＝ドラム、Mina＝キーボード、Saki＝ベース）が入れ替わることがある。<strong>キャラごとに楽器と衣装を明示</strong>し、直らない箇所は<strong>局所編集</strong>で 2 回目を回す。</li>
<li class=""><strong><code>input_fidelity</code> は GPT-Image-2.5 系（Flare / Sunburst）も gpt-image-2 も受け付けない</strong>（400 <code>invalid_input_fidelity_model</code>。gpt-image-1.5 系のパラメータ）。顔やロゴの忠実度は、プロンプトで参照画像の役割を書いて担保する。</li>
<li class="">Flare と Sunburst は同じ設定なら消費トークンが同じ。差は品質と待ち時間だけ。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="商品化判断の材料として">商品化判断の材料として<a href="https://api.aicu.ai/docs/fr/blog/aicutybench-gpt-image-2-5#%E5%95%86%E5%93%81%E5%8C%96%E5%88%A4%E6%96%AD%E3%81%AE%E6%9D%90%E6%96%99%E3%81%A8%E3%81%97%E3%81%A6" class="hash-link" aria-label="Lien direct vers 商品化判断の材料として" title="Lien direct vers 商品化判断の材料として" translate="no">​</a></h2>
<ul>
<li class=""><strong>正本プロンプト × GPT-Image-2.5 Flare で、6 キャラ・計 60 枚が歩留まり 100%（平均スコア 98）</strong>。Sunburst も 2 キャラ・10 枚で 100%。
「呼ぶたびに同じキャラが出る」がキャラクター API の前提条件で、それは<strong>満たせました</strong>。</li>
<li class="">残る詰めどころは「そばかす」のような<strong>微細な特徴の取りこぼし</strong>（最低スコア 85、Mei）。xhigh 指定、または判定軸で落ちた特徴をプロンプトで強調して 2 回目を回す、で埋まります。</li>
<li class=""><strong>結論: キャラクター API の生成エンジンとして GPT-Image-2.5 は採用に足る</strong>、が AiCutyBench の答えです。
採用の形（既定モデルの切替、quality の既定値、多人数構図の扱い）はこの結果をもとに決め、決まり次第この blog でお知らせします。</li>
</ul>
<hr>
<p><em>AiCutyBench のスクリプト・正本プロンプト・判定軸・結果 CSV は <a href="https://github.com/aicuai/AiCuty" target="_blank" rel="noopener noreferrer" class="">github.com/aicuai/AiCuty</a> の <code>bench/</code> にあります。同じ手順で再現できます。</em></p>]]></content>
        <author>
            <name>AICU API Team</name>
            <uri>https://api.aicu.ai</uri>
        </author>
        <category label="images" term="images"/>
        <category label="gpt-image" term="gpt-image"/>
        <category label="aicuty" term="aicuty"/>
        <category label="benchmark" term="benchmark"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GPT-Image-2.5 画像生成ガイド（日本語訳・Part 1）]]></title>
        <id>https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part1</id>
        <link href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part1"/>
        <updated>2026-09-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[OpenAI 公式「Image generation」ガイド（原文）の日本語訳です。]]></summary>
        <content type="html"><![CDATA[<p>OpenAI 公式「<strong>Image generation</strong>」ガイド（<a href="https://developers.openai.com/api/docs/guides/image-generation" target="_blank" rel="noopener noreferrer" class="">原文</a>）の日本語訳です。
Part 1 は <strong>概要／Image API と Responses API の選び方／画像生成／マルチターン／ストリーミング</strong>まで。
編集・出力のカスタマイズ・対応モデルなどは Part 2 で続けます。</p>
<p>api.aicu.ai は <strong>Image API（<code>/v1/images/generations</code> / <code>/v1/images/edits</code>）を OpenAI 互換で提供</strong>しています。
<code>base_url</code> を <code>https://api.aicu.ai/v1</code>、キーを <code>aicu_live_...</code> にすれば、下の Image API の例はそのまま動きます。
Responses API（会話内で画像を生成するツール）の例は OpenAI 直の呼び出しです。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="概要">概要<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part1#%E6%A6%82%E8%A6%81" class="hash-link" aria-label="Lien direct vers 概要" title="Lien direct vers 概要" translate="no">​</a></h2>
<p>この API では、テキストプロンプトから <code>gpt-image-2.5-sunburst</code> と <code>gpt-image-2.5-flare</code> で画像を生成・編集できます。
<strong>編集の精度が最重要なワークフローには Sunburst</strong>、<strong>速くて高品質な日常の生成には Flare</strong> を選びます。画像生成には 2 つの API があります。</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="image-api">Image API<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part1#image-api" class="hash-link" aria-label="Lien direct vers Image API" title="Lien direct vers Image API" translate="no">​</a></h3>
<p><a href="https://developers.openai.com/api/reference/resources/images" target="_blank" rel="noopener noreferrer" class="">Image API</a> は、役割の異なる 2 つのエンドポイントを提供します。</p>
<ul>
<li class=""><strong>Generations</strong>: テキストプロンプトから画像を<strong>ゼロから生成</strong></li>
<li class=""><strong>Edits</strong>: 既存の画像を新しいプロンプトで<strong>部分的または全体的に変更</strong></li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="responses-api">Responses API<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part1#responses-api" class="hash-link" aria-label="Lien direct vers Responses API" title="Lien direct vers Responses API" translate="no">​</a></h3>
<p><a href="https://developers.openai.com/api/reference/resources/responses/methods/create#responses-create-tools" target="_blank" rel="noopener noreferrer" class="">Responses API</a> は、会話やマルチステップのフローの一部として画像を生成できます。
画像生成を<a href="https://developers.openai.com/api/docs/guides/tools?api-mode=responses" target="_blank" rel="noopener noreferrer" class="">組み込みツール</a>として扱い、文脈内で画像の入出力を受け付けます。</p>
<p>Image API に比べて次が加わります。</p>
<ul>
<li class=""><strong>マルチターン編集</strong>: プロンプトで高忠実度の編集を繰り返し重ねられる</li>
<li class=""><strong>柔軟な入力</strong>: バイト列だけでなく、画像の <a href="https://developers.openai.com/api/reference/resources/files" target="_blank" rel="noopener noreferrer" class="">File</a> ID も入力にできる</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="どちらの-api-を使うか">どちらの API を使うか<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part1#%E3%81%A9%E3%81%A1%E3%82%89%E3%81%AE-api-%E3%82%92%E4%BD%BF%E3%81%86%E3%81%8B" class="hash-link" aria-label="Lien direct vers どちらの API を使うか" title="Lien direct vers どちらの API を使うか" translate="no">​</a></h3>
<ul>
<li class=""><strong>1 つのプロンプトから 1 枚を生成・編集するだけ</strong>なら Image API。</li>
<li class=""><strong>会話しながら編集できる画像体験</strong>を作るなら Responses API。</li>
</ul>
<p>Image API では <code>model</code> に <code>gpt-image-2.5-sunburst</code> または <code>gpt-image-2.5-flare</code> を直接指定します。
Responses API では、トップレベルに対応するメインラインモデルを選び、画像生成ツールの <code>model</code> フィールドに <code>gpt-image-2.5-sunburst</code> / <code>gpt-image-2.5-flare</code> を指定します。</p>
<p>どちらの API でも、品質・サイズ・形式・圧縮を調整して<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part1#" class="">出力をカスタマイズ</a>できます（Part 2）。</p>
<div class="theme-admonition theme-admonition-info admonition_FoJG alert alert--info"><div class="admonitionHeading_Fyt5"><span class="admonitionIcon_R76F"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_tCQf"><p>GPT Image モデルを責任を持って使うため、利用前に開発者コンソールで
<a href="https://help.openai.com/en/articles/10910291-api-organization-verification" target="_blank" rel="noopener noreferrer" class="">API Organization Verification</a>
を完了する必要がある場合があります。</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="画像を生成する">画像を生成する<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part1#%E7%94%BB%E5%83%8F%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B" class="hash-link" aria-label="Lien direct vers 画像を生成する" title="Lien direct vers 画像を生成する" translate="no">​</a></h2>
<p><a href="https://developers.openai.com/api/reference/resources/images" target="_blank" rel="noopener noreferrer" class="">画像生成エンドポイント</a>でテキストプロンプトから生成するか、
Responses API の<a href="https://developers.openai.com/api/docs/guides/tools?api-mode=responses" target="_blank" rel="noopener noreferrer" class="">画像生成ツール</a>で会話の一部として生成します。
出力のカスタマイズ（サイズ・品質・形式・圧縮）は Part 2 を参照してください。</p>
<p><code>n</code> パラメータで 1 リクエストに複数枚を生成できます（既定は 1 枚）。</p>
<p><strong>Image API — 画像を生成する</strong>（api.aicu.ai では <code>base_url</code> を差し替えるだけ）</p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> openai </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> OpenAI</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> base64</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> OpenAI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># api.aicu.ai なら OpenAI(base_url="https://api.aicu.ai/v1", api_key="aicu_live_...")</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">prompt </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:#e3116c">"""</span><br></div><div class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">A children's book drawing of a veterinarian using a stethoscope to</span><br></div><div class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">listen to the heartbeat of a baby otter.</span><br></div><div class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">"""</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">result </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">images</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">generate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> prompt</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">prompt</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">image_base64 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> result</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">b64_json</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">image_bytes </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> base64</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">b64decode</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">image_base64</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token builtin">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"otter.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"wb"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> f</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    f</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">write</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">image_bytes</span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST "https://api.aicu.ai/v1/images/generations" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    -H "Authorization: Bearer $AICU_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    -H "Content-type: application/json" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    -d '{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "model": "gpt-image-2.5-sunburst",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "prompt": "A children'\''s book drawing of a veterinarian using a stethoscope to listen to the heartbeat of a baby otter."</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    }' | jq -r '.data[0].b64_json' | base64 --decode &gt; otter.png</span><br></div></code></pre></div></div>
<div class="language-javascript codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-javascript codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports maybe-class-name">OpenAI</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"openai"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword module" style="color:#00009f">import</span><span class="token plain"> </span><span class="token imports">fs</span><span class="token plain"> </span><span class="token keyword module" style="color:#00009f">from</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"fs"</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> openai </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">new</span><span class="token plain"> </span><span class="token class-name">OpenAI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> result </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> openai</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">images</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">generate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">model</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token literal-property property" style="color:#36acaa">prompt</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"A children's book drawing of a veterinarian using a stethoscope to listen to the heartbeat of a baby otter."</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">fs</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">writeFileSync</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"otter.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token maybe-class-name">Buffer</span><span class="token punctuation" style="color:#393A34">.</span><span class="token keyword module" style="color:#00009f">from</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">result</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">b64_json</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"base64"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><br></div></code></pre></div></div>
<p>（原文には Go / Java / C# / Ruby / CLI の例もあります。）</p>
<p><strong>Responses API — 画像を生成する</strong>（OpenAI 直）</p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> openai </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> OpenAI</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> base64</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> OpenAI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">responses</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-6-astra"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token builtin">input</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"Generate an image of gray tabby cat hugging an otter with an orange scarf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    tools</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">image_data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    output</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">result</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> output </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">output</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> output</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">type</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation_call"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> image_data</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token builtin">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"otter.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"wb"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> f</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        f</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">write</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">base64</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">b64decode</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">image_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="マルチターンの画像生成">マルチターンの画像生成<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part1#%E3%83%9E%E3%83%AB%E3%83%81%E3%82%BF%E3%83%BC%E3%83%B3%E3%81%AE%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90" class="hash-link" aria-label="Lien direct vers マルチターンの画像生成" title="Lien direct vers マルチターンの画像生成" translate="no">​</a></h3>
<p>Responses API では、画像生成の呼び出し結果を文脈に含める（画像 ID だけでも可）か、
<a href="https://developers.openai.com/api/docs/guides/conversation-state?api-mode=responses#openai-apis-for-conversation-state" target="_blank" rel="noopener noreferrer" class=""><code>previous_response_id</code> パラメータ</a>を使って、
複数ターンにわたる画像生成の会話を組み立てられます。プロンプトを練り直し、新しい指示を加え、会話の進行に合わせて画像を育てていけます。</p>
<p>対応するツールモデルは、<strong>新しい画像を生成するか、文脈内の画像を編集するか</strong>を選べます。任意の <code>action</code> パラメータで制御します:
<code>action: "auto"</code>（モデルに任せる・既定）、<code>action: "generate"</code>（常に新規生成）、<code>action: "edit"</code>（文脈に画像があるとき編集を強制）。</p>
<p><strong>action で生成を強制する</strong></p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">responses</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-6-astra"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token builtin">input</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"Generate an image of gray tabby cat hugging an otter with an orange scarf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    tools</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"action"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"generate"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<div class="theme-admonition theme-admonition-note admonition_FoJG alert alert--secondary"><div class="admonitionHeading_Fyt5"><span class="admonitionIcon_R76F"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>remarque</div><div class="admonitionContent_tCQf"><p>文脈に画像が無いのに <code>edit</code> を強制するとエラーになります。生成と編集の判断をモデルに任せるなら <code>action</code> は <code>auto</code> のままにします。</p></div></div>
<p><strong>previous_response_id を使う</strong></p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">responses</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-6-astra"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token builtin">input</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"Generate an image of gray tabby cat hugging an otter with an orange scarf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    tools</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># ...最初の画像を保存...</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># フォローアップ</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">response_fwup </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">responses</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-6-astra"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    previous_response_id</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">id</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token builtin">input</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"Now make it look realistic"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    tools</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<p><strong>画像 ID を使う</strong></p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">responses</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-6-astra"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token builtin">input</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"Generate an image of gray tabby cat hugging an otter with an orange scarf"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    tools</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">image_generation_calls </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">o </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> o </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">output </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> o</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">type</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation_call"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># フォローアップ: 前の画像生成呼び出しの id を文脈に渡す</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">response_fwup </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">responses</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-6-astra"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token builtin">input</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"input_text"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"text"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Now make it look realistic"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation_call"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"id"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> image_generation_calls</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">id</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    tools</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<p>結果のイメージ: 「灰色のトラ猫がオレンジのマフラーのカワウソを抱きしめる」→ 2 ターン目「写実的にして」で、同じ構図のまま写実化された画像が返ります。</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="ストリーミング">ストリーミング<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part1#%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0" class="hash-link" aria-label="Lien direct vers ストリーミング" title="Lien direct vers ストリーミング" translate="no">​</a></h3>
<p>Responses API と Image API はどちらも<strong>画像生成のストリーミング</strong>に対応しています。生成途中の<strong>部分画像</strong>を受け取れるので、体験がインタラクティブになります。</p>
<p><code>partial_images</code> パラメータで <strong>0〜3 枚</strong>の部分画像を受け取れます。</p>
<ul>
<li class=""><code>partial_images</code> を 0 にすると、最終画像だけを受け取ります。</li>
<li class="">1 以上でも、最終画像の生成が速い場合は指定枚数より少ない部分画像しか届かないことがあります。</li>
</ul>
<p><strong>Responses API — 画像をストリームする</strong></p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">stream </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">responses</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-6-astra"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token builtin">input</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"Draw a gorgeous image of a river made of white owl feathers, snaking its way through a serene winter landscape"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    stream</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    tools</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"partial_images"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> event </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> stream</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> event</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">type</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"response.image_generation_call.partial_image"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        save_base64_image</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"river-partial-</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">event</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">partial_image_index</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> event</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">partial_image_b64</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">elif</span><span class="token plain"> event</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">type</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"response.completed"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        image_data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">o</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">result </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> o </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> event</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">output </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> o</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">type</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation_call"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> image_data</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            save_base64_image</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"river-final.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> image_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<p><strong>Image API — 画像をストリームする</strong></p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">stream </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">images</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">generate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    prompt</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"Draw a gorgeous image of a river made of white owl feathers, snaking its way through a serene winter landscape"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    stream</span><span class="token operator" style="color:#393A34">=</span><span class="token boolean" style="color:#36acaa">True</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    partial_images</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">2</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> event </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> stream</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> event</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">type</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation.partial_image"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token builtin">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"river</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">event</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">.</span><span class="token string-interpolation interpolation">partial_image_index</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"wb"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> f</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            f</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">write</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">base64</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">b64decode</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">event</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">b64_json</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<p>結果のイメージ: 部分画像 1 → 部分画像 2 → 最終画像、の順にだんだん精細になっていきます。</p>
<div class="theme-admonition theme-admonition-tip admonition_FoJG alert alert--success"><div class="admonitionHeading_Fyt5"><span class="admonitionIcon_R76F"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>api.aicu.ai での長い生成</div><div class="admonitionContent_tCQf"><p>api.aicu.ai では、100 秒を超える生成は <code>stream</code> の <code>X-AICU-Image-Id</code> で id を受け取り、<code>GET /v1/images/status/:id</code> でポーリングして回収できます（Cloudflare のエッジ制限を越えるため）。<code>status/:id</code> は API キーが要ります。Cloudflare Pages Function から呼ぶ場合、<code>stream: true</code> で応答本文を途中で捨てる（<code>body.cancel</code>）と 502 になった実例があるので、Pages Function では <code>stream</code> を使わず同期応答の <code>id</code> を控えるか、<code>flare</code> のように 100 秒に収まるモデルを既定にしてください。</p></div></div>
<hr>
<p><em>Part 2（出力のカスタマイズ・画像の編集・マスク・透過・対応モデル・制約）に続きます。原文: <a href="https://developers.openai.com/api/docs/guides/image-generation" target="_blank" rel="noopener noreferrer" class="">Image generation</a>。</em></p>]]></content>
        <author>
            <name>AICU API Team</name>
            <uri>https://api.aicu.ai</uri>
        </author>
        <category label="images" term="images"/>
        <category label="gpt-image" term="gpt-image"/>
        <category label="guide" term="guide"/>
        <category label="api" term="api"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GPT-Image-2.5 画像生成ガイド（日本語訳・Part 2）]]></title>
        <id>https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2</id>
        <link href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2"/>
        <updated>2026-09-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[OpenAI 公式「Image generation」ガイド（原文）の日本語訳、Part 2 です。]]></summary>
        <content type="html"><![CDATA[<p>OpenAI 公式「<strong>Image generation</strong>」ガイド（<a href="https://developers.openai.com/api/docs/guides/image-generation" target="_blank" rel="noopener noreferrer" class="">原文</a>）の日本語訳、Part 2 です。
<strong>プロンプトの自動改稿／画像の編集（参照画像・マスク）／出力のカスタマイズ／制限／モデレーション／対応モデル／コストと待ち時間</strong>を扱います。
Part 1（概要・API 選択・生成・マルチターン・ストリーミング）は<a class="" href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part1">こちら</a>。</p>
<p>api.aicu.ai は Image API（<code>/v1/images/generations</code> / <code>/v1/images/edits</code>）を OpenAI 互換で提供しており、参照画像・マスク・<code>moderation</code> はそのまま使えます。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="改稿されたプロンプトrevised-prompt">改稿されたプロンプト（Revised prompt）<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E6%94%B9%E7%A8%BF%E3%81%95%E3%82%8C%E3%81%9F%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88revised-prompt" class="hash-link" aria-label="Lien direct vers 改稿されたプロンプト（Revised prompt）" title="Lien direct vers 改稿されたプロンプト（Revised prompt）" translate="no">​</a></h2>
<p>Responses API の画像生成ツールでは、メインラインモデル（例: gpt-5.5）が<strong>性能向上のためにプロンプトを自動で改稿</strong>します。
改稿後のプロンプトは、画像生成呼び出しの <code>revised_prompt</code> フィールドで確認できます。</p>
<div class="language-json codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-json codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"id"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"ig_123"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation_call"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"status"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"completed"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"revised_prompt"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"A gray tabby cat hugging an otter. The otter is wearing an orange scarf. Both animals are cute and friendly, depicted in a warm, heartwarming style."</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"result"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"..."</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="画像を編集する">画像を編集する<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E7%94%BB%E5%83%8F%E3%82%92%E7%B7%A8%E9%9B%86%E3%81%99%E3%82%8B" class="hash-link" aria-label="Lien direct vers 画像を編集する" title="Lien direct vers 画像を編集する" translate="no">​</a></h2>
<p>画像編集エンドポイントでできること:</p>
<ul>
<li class="">既存の画像を編集する</li>
<li class="">他の画像を<strong>参照</strong>として新しい画像を生成する</li>
<li class="">画像と、置き換える領域を示す<strong>マスク</strong>をアップロードして、画像の一部を編集する</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="参照画像から新しい画像を作る">参照画像から新しい画像を作る<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E5%8F%82%E7%85%A7%E7%94%BB%E5%83%8F%E3%81%8B%E3%82%89%E6%96%B0%E3%81%97%E3%81%84%E7%94%BB%E5%83%8F%E3%82%92%E4%BD%9C%E3%82%8B" class="hash-link" aria-label="Lien direct vers 参照画像から新しい画像を作る" title="Lien direct vers 参照画像から新しい画像を作る" translate="no">​</a></h3>
<p>1 枚以上の画像を参照にして新しい画像を生成できます。例では 4 枚の入力画像（ボディローション・石けん・お香セット・バスボム）から、
それらを詰めたギフトバスケットの画像を作ります。</p>
<p>Responses API では入力画像を 3 通りで渡せます: <strong>完全な URL</strong>／<strong>Base64 データ URL</strong>／<strong>File ID</strong>（Files API で作成）。</p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> openai </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> OpenAI</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> base64</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">client </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> OpenAI</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">encode_image</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">file_path</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token builtin">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">file_path</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"rb"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> image_file</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> base64</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">b64encode</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">image_file</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">read</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">decode</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"utf-8"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">create_file</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">file_path</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token builtin">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">file_path</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"rb"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> file_content</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        result </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">files</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token builtin">file</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">file_content</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> purpose</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"vision"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> result</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">id</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">prompt </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token triple-quoted-string string" style="color:#e3116c">"""Generate a photorealistic image of a gift basket on a white background</span><br></div><div class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">labeled 'Relax &amp; Unwind' with a ribbon and handwriting-like font,</span><br></div><div class="token-line" style="color:#393A34"><span class="token triple-quoted-string string" style="color:#e3116c">containing all the items in the reference pictures."""</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">base64_image1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> encode_image</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"body-lotion.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">base64_image2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> encode_image</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"soap.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">file_id1 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> create_file</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"bath-bomb.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">file_id2 </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> create_file</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"incense-kit.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">responses</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-6-astra"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token builtin">input</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"input_text"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"text"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> prompt</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"input_image"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_url"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"data:image/png;base64,</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">base64_image1</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"input_image"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_url"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"data:image/png;base64,</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">base64_image2</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"input_image"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"file_id"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> file_id1</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"input_image"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"file_id"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> file_id2</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    tools</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">image_data </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">o</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">result </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> o </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">output </span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> o</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">type</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation_call"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">if</span><span class="token plain"> image_data</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token builtin">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"gift-basket.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"wb"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> f</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        f</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">write</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">base64</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">b64decode</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">image_data</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">else</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">response</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">output_text</span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<p>Image API（api.aicu.ai 互換）なら、<code>/v1/images/edits</code> に <code>image[]</code> として複数枚を multipart で渡します:</p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST "https://api.aicu.ai/v1/images/edits" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer $AICU_API_KEY" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -F model="gpt-image-2.5-sunburst" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -F "image[]=@body-lotion.png" -F "image[]=@soap.png" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -F "image[]=@bath-bomb.png" -F "image[]=@incense-kit.png" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -F prompt="Generate a photorealistic image of a gift basket on a white background labeled 'Relax &amp; Unwind' with a ribbon and handwriting-like font, containing all the items in the reference pictures." \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  | jq -r '.data[0].b64_json' | base64 --decode &gt; gift-basket.png</span><br></div></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="マスクで画像を編集する">マスクで画像を編集する<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E3%83%9E%E3%82%B9%E3%82%AF%E3%81%A7%E7%94%BB%E5%83%8F%E3%82%92%E7%B7%A8%E9%9B%86%E3%81%99%E3%82%8B" class="hash-link" aria-label="Lien direct vers マスクで画像を編集する" title="Lien direct vers マスクで画像を編集する" translate="no">​</a></h3>
<p>マスクで<strong>編集する領域</strong>を示せます。GPT Image でマスクを使うと、編集を導く追加の指示がモデルに送られます。</p>
<p>GPT Image の<strong>マスクは完全にプロンプトベース</strong>です。モデルはマスクを手がかりにしますが、その形状を完全な精度で守るとは限りません。
複数の入力画像がある場合、マスクは<strong>1 枚目</strong>に適用されます。</p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">fileId </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> create_file</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"sunlit_lounge.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">maskId </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> create_file</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"mask.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">response </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> client</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">responses</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">create</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    model</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"gpt-6-astra"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token builtin">input</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"role"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"user"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"content"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"input_text"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">             </span><span class="token string" style="color:#e3116c">"text"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"generate an image of the same sunlit indoor lounge area with a pool but the pool should contain a flamingo"</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"input_image"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"file_id"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> fileId</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    tools</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"type"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"quality"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"high"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token string" style="color:#e3116c">"input_image_mask"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"file_id"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> maskId</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<p>例: 「プールのある日当たりのよいラウンジ」の画像＋プール部分のマスク → プールにフラミンゴ（浮き輪）が置き換わった画像。</p>
<h4 class="anchor anchorTargetStickyNavbar_RHNx" id="マスクの要件">マスクの要件<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E3%83%9E%E3%82%B9%E3%82%AF%E3%81%AE%E8%A6%81%E4%BB%B6" class="hash-link" aria-label="Lien direct vers マスクの要件" title="Lien direct vers マスクの要件" translate="no">​</a></h4>
<ul>
<li class="">編集する画像とマスクは<strong>同じ形式・同じサイズ</strong>（50MB 未満）。</li>
<li class="">マスク画像は<strong>アルファチャンネル</strong>を含む必要があります。画像編集ツールで作る場合は、アルファ付きで保存してください。</li>
<li class="">白黒画像から、プログラムでアルファチャンネルを付けることもできます:</li>
</ul>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> PIL </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> Image</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">from</span><span class="token plain"> io </span><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> BytesIO</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 1. 白黒マスクをグレースケールで読む</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">mask </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> Image</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"mask.png"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">convert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"L"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 2. RGBA に変換してアルファの器を作る</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">mask_rgba </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> mask</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">convert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"RGBA"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 3. マスク自身でアルファを埋める</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">mask_rgba</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">putalpha</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">mask</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 4-5. PNG で保存</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">buf </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> BytesIO</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">mask_rgba</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">save</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">buf</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">format</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"PNG"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> </span><span class="token builtin">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"mask_alpha.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"wb"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> f</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    f</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">write</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">buf</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">getvalue</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="出力のカスタマイズ">出力のカスタマイズ<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E5%87%BA%E5%8A%9B%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA" class="hash-link" aria-label="Lien direct vers 出力のカスタマイズ" title="Lien direct vers 出力のカスタマイズ" translate="no">​</a></h2>
<p>設定できる出力オプション:</p>
<ul>
<li class=""><strong>Size</strong>: 画像の寸法（例: 1024x1024、1024x1536）</li>
<li class=""><strong>Quality</strong>: レンダリング品質（例: low、medium、high）</li>
<li class=""><strong>Format</strong>: 出力ファイル形式</li>
<li class=""><strong>Compression</strong>: JPEG / WebP の圧縮率（0–100%）</li>
<li class=""><strong>Background</strong>: 透過・不透過・自動</li>
</ul>
<p><code>size</code> <code>quality</code> <code>background</code> は <code>auto</code> に対応し、プロンプトに応じてモデルが最適な値を選びます。</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="サイズと品質">サイズと品質<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%A8%E5%93%81%E8%B3%AA" class="hash-link" aria-label="Lien direct vers サイズと品質" title="Lien direct vers サイズと品質" translate="no">​</a></h3>
<p><code>gpt-image-2.5-sunburst</code> と <code>gpt-image-2.5-flare</code> は <strong><code>xhigh</code> と <code>max</code></strong> の品質設定を追加しました。既定はどちらも <code>auto</code>。以前の GPT Image モデルは <code>high</code> までです。</p>
<table><thead><tr><th>設定</th><th>選択肢</th></tr></thead><tbody><tr><td>推奨サイズ</td><td>1024x1024（正方）、1536x1024（横）、1024x1536（縦）</td></tr><tr><td>Quality</td><td>low、medium、high、xhigh、max、auto</td></tr></tbody></table>
<p>両モデルとも <code>1536x864</code> のような任意寸法（<code>幅x高さ</code>）に対応します。幅・高さは <strong>16 の倍数</strong>、縦横比は <strong>1:3〜3:1</strong>、各辺 <strong>3840px 以下</strong>、
総ピクセル数は <strong>655,360〜8,294,400（4K）</strong>。2560x1440 を超える解像度は実験的です。</p>
<p>透過背景は <code>background: "transparent"</code> と <code>output_format: "png"</code> または <code>"webp"</code> を指定します。
下書きには <code>quality: "low"</code>、最終アセットは高い設定を比較して、ディテール・待ち時間・コストの均衡点を探します。</p>
<div class="theme-admonition theme-admonition-note admonition_FoJG alert alert--secondary"><div class="admonitionHeading_Fyt5"><span class="admonitionIcon_R76F"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>api.aicu.ai の現状</div><div class="admonitionContent_tCQf"><p>api.aicu.ai でも <code>xhigh</code> / <code>max</code> が使えます（<strong>2026-09-21 追記</strong>。それまでは価格未設定のため 400 <code>quality_not_priced</code> を返していました）。1024×1024 で <code>xhigh</code> 11,400 AP・<code>max</code> 25,600 AP。ただし <strong>60 秒を超えることがあり、その場合は結果がメールで届きます</strong>。アプリの中でそのまま待つ用途には <code>low</code> / <code>medium</code> / <code>high</code> を使ってください。詳細は <a class="" href="https://api.aicu.ai/docs/fr/pricing">料金</a> を参照。</p></div></div>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="出力形式">出力形式<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E5%87%BA%E5%8A%9B%E5%BD%A2%E5%BC%8F" class="hash-link" aria-label="Lien direct vers 出力形式" title="Lien direct vers 出力形式" translate="no">​</a></h3>
<p>Image API は Base64 エンコードの画像データを返します。既定は <code>png</code>、<code>jpeg</code> / <code>webp</code> も指定できます。
<code>jpeg</code> / <code>webp</code> では <code>output_compression</code>（0–100%）で圧縮率を指定できます（例: <code>output_compression=50</code> で 50% 圧縮）。
<strong><code>jpeg</code> は <code>png</code> より速い</strong>ので、待ち時間が気になるなら優先してください。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="制限事項">制限事項<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E5%88%B6%E9%99%90%E4%BA%8B%E9%A0%85" class="hash-link" aria-label="Lien direct vers 制限事項" title="Lien direct vers 制限事項" translate="no">​</a></h2>
<p>GPT Image は強力で汎用的ですが、次の制限があります。</p>
<ul>
<li class=""><strong>待ち時間</strong>: 複雑なプロンプトは処理に最大 2 分かかることがあります。</li>
<li class=""><strong>文字の描画</strong>: 大きく改善しましたが、正確な配置と鮮明さで苦戦することがあります。</li>
<li class=""><strong>一貫性</strong>: 繰り返し登場するキャラクターやブランド要素の視覚的一貫性を、複数回の生成で保てないことがあります。</li>
<li class=""><strong>構図の制御</strong>: 指示追従は向上しましたが、レイアウトに敏感な構図で要素を正確に配置するのは難しい場合があります。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="コンテンツモデレーション">コンテンツモデレーション<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E3%82%B3%E3%83%B3%E3%83%86%E3%83%B3%E3%83%84%E3%83%A2%E3%83%87%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3" class="hash-link" aria-label="Lien direct vers コンテンツモデレーション" title="Lien direct vers コンテンツモデレーション" translate="no">​</a></h2>
<p>すべてのプロンプトと生成画像は、コンテンツポリシーに従ってフィルタリングされます。</p>
<p>GPT Image の画像生成では、<code>moderation</code> パラメータで厳しさを制御できます。</p>
<ul>
<li class=""><code>auto</code>（既定）: 年齢に不適切な可能性のある一部カテゴリの生成を制限する標準のフィルタリング</li>
<li class=""><code>low</code>: より制限の緩いフィルタリング</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="ブロックされたリクエストとエラーの扱い">ブロックされたリクエストとエラーの扱い<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%81%95%E3%82%8C%E3%81%9F%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%81%A8%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AE%E6%89%B1%E3%81%84" class="hash-link" aria-label="Lien direct vers ブロックされたリクエストとエラーの扱い" title="Lien direct vers ブロックされたリクエストとエラーの扱い" translate="no">​</a></h3>
<p>画像生成の失敗も他の API エラーと同様に扱います: HTTP ステータス／SDK の例外型を確認し、リクエスト ID を記録し、認証・クォータ・レート制限・サーバー障害はエラーコードガイドを参照。
<strong>一時的なレート制限・サーバー障害はバックオフして再試行</strong>し、クォータエラーやリクエスト変更が必要なユーザーエラーは自動再試行しません。</p>
<p>ユーザー側で修正できる失敗は <code>error.type = "image_generation_user_error"</code> を返すことがあります。プロンプトや入力画像を変えずに自動再試行しないでください。
プログラムでは <code>error.code</code> を安定した判別子として使います。</p>
<p><code>error.code = "moderation_blocked"</code> のとき、任意の <code>error.moderation_details</code> が付くことがあります:</p>
<div class="language-json codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-json codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token property" style="color:#36acaa">"error"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"type"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"image_generation_user_error"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"code"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"moderation_blocked"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token property" style="color:#36acaa">"moderation_details"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"moderation_stage"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"input"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token property" style="color:#36acaa">"categories"</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"harassment"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<p><code>moderation_details</code> は、内部の分類ラベルやスコアを露出せずに、粗いデバッグ文脈を提供します。</p>
<ul>
<li class=""><code>moderation_stage</code>: <code>input</code>（プロンプト・入力側でブロック）／<code>output</code>（生成画像・出力側でブロック）／<code>unknown</code>（判定困難な稀なケース）</li>
<li class=""><code>categories</code>: 粗い公開ラベル（例: <code>harassment</code>、<code>self-harm</code>、<code>sexual</code>、<code>violence</code>）</li>
</ul>
<p>多くのアプリでは、エンドユーザー向けメッセージは汎用にとどめ、<code>moderation_details</code> は開発者ログ・サポート・分析・軽い修正ヒントに使います。</p>
<div class="language-javascript codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-javascript codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token keyword control-flow" style="color:#00009f">try</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">await</span><span class="token plain"> openai</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">images</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">generate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">model</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-sunburst"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token literal-property property" style="color:#36acaa">prompt</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Create a poster humiliating my coworker with insulting captions"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">catch</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">error</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">error</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">code </span><span class="token operator" style="color:#393A34">!==</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"moderation_blocked"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">throw</span><span class="token plain"> error</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> md </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> error</span><span class="token punctuation" style="color:#393A34">.</span><span class="token property-access">error</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">moderation_details</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> categories </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> md</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">categories </span><span class="token operator" style="color:#393A34">??</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">const</span><span class="token plain"> stage </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> md</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">moderation_stage</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword" style="color:#00009f">let</span><span class="token plain"> hint </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"This request could not be completed because it did not meet safety requirements."</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">categories</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">includes</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"harassment"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> hint </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Try removing abusive or targeting language and focus on neutral visual details instead."</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">stage </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"input"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> hint </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"Try revising the prompt or input images and submit the request again."</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token keyword control-flow" style="color:#00009f">else</span><span class="token plain"> </span><span class="token keyword control-flow" style="color:#00009f">if</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">stage </span><span class="token operator" style="color:#393A34">===</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"output"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> hint </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"The generated result was blocked by a safety check. Try changing the prompt and generating again."</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">error</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Image generation blocked"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">request_id</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> error</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">requestID</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">code</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> error</span><span class="token operator" style="color:#393A34">?.</span><span class="token plain">code</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token literal-property property" style="color:#36acaa">moderation_details</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> md </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token console class-name">console</span><span class="token punctuation" style="color:#393A34">.</span><span class="token method function property-access" style="color:#d73a49">log</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">hint</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">;</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">}</span><br></div></code></pre></div></div>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="対応モデル">対応モデル<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E5%AF%BE%E5%BF%9C%E3%83%A2%E3%83%87%E3%83%AB" class="hash-link" aria-label="Lien direct vers 対応モデル" title="Lien direct vers 対応モデル" translate="no">​</a></h2>
<p>Responses API で画像生成を使う場合、<strong>gpt-5 以降</strong>のモデルは画像生成ツールに対応しているはずです。使いたいモデルの詳細ページで対応を確認してください。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="コストと待ち時間openai-公式の公表値">コストと待ち時間（OpenAI 公式の公表値）<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E3%82%B3%E3%82%B9%E3%83%88%E3%81%A8%E5%BE%85%E3%81%A1%E6%99%82%E9%96%93openai-%E5%85%AC%E5%BC%8F%E3%81%AE%E5%85%AC%E8%A1%A8%E5%80%A4" class="hash-link" aria-label="Lien direct vers コストと待ち時間（OpenAI 公式の公表値）" title="Lien direct vers コストと待ち時間（OpenAI 公式の公表値）" translate="no">​</a></h2>
<p>Responses API のリクエストは、画像生成コストに加えてメインラインモデルのトークン使用量も含みます。</p>
<p><strong>GPT Image 2.5 の 2 モデルは同じトークン単価</strong>です: 画像入力 $8 / 1M、画像入力（キャッシュ）$2 / 1M、<strong>画像出力 $30 / 1M</strong>、テキスト入力 $5 / 1M、テキスト入力（キャッシュ）$1.25 / 1M。
（最新は <a href="https://openai.com/api/pricing/" target="_blank" rel="noopener noreferrer" class="">OpenAI の料金ページ</a>。）</p>
<p>レスポンスの <code>usage</code> で、プロンプト・サイズ・品質ごとのトークン消費を測ってください。<strong>単価が同じでも 1 枚あたりのコストは同じではありません</strong>——トークン消費量はモデルと品質設定で変わります。</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="出力トークンの目安">出力トークンの目安<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E5%87%BA%E5%8A%9B%E3%83%88%E3%83%BC%E3%82%AF%E3%83%B3%E3%81%AE%E7%9B%AE%E5%AE%89" class="hash-link" aria-label="Lien direct vers 出力トークンの目安" title="Lien direct vers 出力トークンの目安" translate="no">​</a></h3>
<p>モデル・品質・サイズから出力トークンと画像出力コストを見積もれます。<code>gpt-image-2.5-*</code> の品質は low / medium / high / xhigh / max、<code>gpt-image-2</code> は low / medium / high。
同じ品質設定でもモデルによってトークン数は異なり、画像出力トークンの単価は共通です。見積もりには <code>auto</code> でなく明示的な quality と size を使います。</p>
<ul>
<li class="">例（公式の計算機）: <code>gpt-image-2.5</code> の <strong>low・1024x1024 → 出力 196 トークン ≈ $0.00588 / 枚</strong>（画像出力 $30 / 1M 換算。テキスト・画像入力トークンと部分画像は除く）。<strong>この換算は 1024x1024 限定</strong>です。出力トークンは画素数ではなく形状で決まり、正方形がいちばん高く、横長ほど安くなります（実測: high で 1024×1024 = 1,756、1920×1088 = 1,325、1728×800 = 893、1536×512 = 535）。横長バナーは正方形より安い、と覚えておくと見積もりが狂いません。</li>
<li class=""><strong>部分画像のコスト</strong>: <code>partial_images</code> でストリーミングする場合、部分画像 1 枚につき <strong>追加で 100 画像出力トークン</strong>がかかります。</li>
</ul>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="以前の-gpt-image-モデル">以前の GPT Image モデル<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-image-generation-guide-ja-part2#%E4%BB%A5%E5%89%8D%E3%81%AE-gpt-image-%E3%83%A2%E3%83%87%E3%83%AB" class="hash-link" aria-label="Lien direct vers 以前の GPT Image モデル" title="Lien direct vers 以前の GPT Image モデル" translate="no">​</a></h3>
<p>以下は Sunburst / Flare <strong>ではなく</strong>以前のモデルの情報です。新規の統合では GPT Image 2.5 を使ってください。</p>
<p><code>gpt-image-2</code> の <code>quality</code> は low / medium / high に加えて <code>auto</code>（既定）も指定できます。また <strong><code>input_fidelity</code> は GPT-Image-2.5 系（Flare / Sunburst）と gpt-image-2 のどちらも受け付けません</strong>（400 <code>invalid_input_fidelity_model</code>。gpt-image-1.5 系のパラメータ）。参照画像の忠実度はプロンプトで役割を書いて担保します。</p>
<p><code>gpt-image-2</code> より前のモデルは、まず専用の画像トークンを生成してから画像を描きます。待ち時間もコストも、描画に必要なトークン数に比例します（大きいサイズ・高い品質ほど多い）。</p>
<table><thead><tr><th>品質</th><th>正方（1024×1024）</th><th>縦（1024×1536）</th><th>横（1536×1024）</th></tr></thead><tbody><tr><td>Low</td><td>272</td><td>408</td><td>400</td></tr><tr><td>Medium</td><td>1056</td><td>1584</td><td>1568</td></tr><tr><td>High</td><td>4160</td><td>6240</td><td>6208</td></tr></tbody></table>
<p>入力トークン（プロンプトのテキスト、編集時の入力画像）も加算されます。<code>gpt-image-2</code> は画像入力を常に高忠実度で処理するため、参照画像つきの編集は入力トークンが増えます。
最終コスト＝入力テキストトークン＋（編集時）入力画像トークン＋画像出力トークン。</p>
<p><strong>旧モデルの 1 枚あたり価格例（OpenAI 公表）</strong></p>
<table><thead><tr><th>モデル</th><th>品質</th><th>1024x1024</th><th>1024x1536</th><th>1536x1024</th></tr></thead><tbody><tr><td>GPT Image 2</td><td>Low / Medium / High</td><td>$0.006 / $0.053 / $0.211</td><td>$0.005 / $0.041 / $0.165</td><td>$0.005 / $0.041 / $0.165</td></tr><tr><td>GPT Image 1.5</td><td>Low / Medium / High</td><td>$0.009 / $0.034 / $0.133</td><td>$0.013 / $0.05 / $0.2</td><td>$0.013 / $0.05 / $0.2</td></tr><tr><td>GPT Image 1</td><td>Low / Medium / High</td><td>$0.011 / $0.042 / $0.167</td><td>$0.016 / $0.063 / $0.25</td><td>$0.016 / $0.063 / $0.25</td></tr><tr><td>GPT Image 1 Mini</td><td>Low / Medium / High</td><td>$0.005 / $0.011 / $0.036</td><td>$0.006 / $0.015 / $0.052</td><td>$0.006 / $0.015 / $0.052</td></tr></tbody></table>
<p>非正方の大きい解像度が、同じ品質の小さい／正方の解像度より<strong>少ない</strong>出力トークンになることもあります。</p>
<hr>
<p><em>本記事は OpenAI 公式ガイドの日本語訳です。掲載の料金は OpenAI の公表値で、AICU API の従量課金（AP）とは別です。原文: <a href="https://developers.openai.com/api/docs/guides/image-generation" target="_blank" rel="noopener noreferrer" class="">Image generation</a>。</em></p>]]></content>
        <author>
            <name>AICU API Team</name>
            <uri>https://api.aicu.ai</uri>
        </author>
        <category label="images" term="images"/>
        <category label="gpt-image" term="gpt-image"/>
        <category label="guide" term="guide"/>
        <category label="api" term="api"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GPT-Image-2.5 プロンプトガイド（日本語訳）]]></title>
        <id>https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja</id>
        <link href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja"/>
        <updated>2026-09-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[OpenAI 公式の GPT Image 2.5 プロンプトガイド（原文）を日本語訳しました。]]></summary>
        <content type="html"><![CDATA[<p>OpenAI 公式の <strong>GPT Image 2.5 プロンプトガイド</strong>（<a href="https://developers.openai.com/api/docs/guides/image-prompting" target="_blank" rel="noopener noreferrer" class="">原文</a>）を日本語訳しました。
モデルの選び方、効果的なプロンプトの書き方、編集で細部を保つコツをまとめた実務ガイドです。
例のプロンプトは<strong>そのまま使える起点</strong>なので、英語のまま掲載し、自分の画像・要件に合わせて調整してください。</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="概要">概要<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja#%E6%A6%82%E8%A6%81" class="hash-link" aria-label="Lien direct vers 概要" title="Lien direct vers 概要" translate="no">​</a></h2>
<p>必要な画像から出発し、被写体・構図・スタイル・制約を記述します。編集では「何を変え」「何を変えないか」を明確にし、
一度に一つずつ調整して結果を確認します。</p>
<p>GPT Image 2.5 には 2 つのモデルがあります。<strong>GPT Image 2.5 Flare</strong> は速度に最適化した小型モデルで、画質は GPT Image 2 相当。
<strong>GPT Image 2.5 Sunburst</strong> は品質に最適化したベースモデルで、GPT Image 2 より高画質。<strong>両モデルとも精密な編集と被写体維持が向上</strong>しています。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="モデルの選び方">モデルの選び方<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E9%81%B8%E3%81%B3%E6%96%B9" class="hash-link" aria-label="Lien direct vers モデルの選び方" title="Lien direct vers モデルの選び方" translate="no">​</a></h2>
<p>新しいワークフローでは、<strong>速度優先なら Flare</strong>、<strong>厳しい品質要件が優先なら Sunburst</strong> から始めます。要件を満たしたら、待ち時間を減らせないか検討します。</p>
<p>既存モデルからの移行では、いまの画質を出発点にします。両モデルとも生成・編集・透過背景に対応します。</p>
<table><thead><tr><th>いまのワークフロー</th><th>まず試すもの</th></tr></thead><tbody><tr><td>検証済みの GPT Image 2 ワークフローが既に品質要件を満たしている</td><td><strong>Flare</strong>。品質を保ったまま待ち時間を減らせるか確認</td></tr><tr><td>GPT Image 2 では品質が足りない複雑なユースケース</td><td><strong>Sunburst</strong>。まず必要な品質が出ることを確認</td></tr></tbody></table>
<p>Sunburst が要件を満たしたら、同じプロンプト・入力で <strong>Flare</strong> を試し、同等の品質かつ待ち時間が改善するなら Flare へ切り替えます。
Sunburst の品質優位が必要な場合はそのまま使います。<strong>応答時間と品質は自分のワークロードで測定</strong>してください（あるワークロードの速度改善が他でも同じとは限りません）。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="モデルパラメータ">モデルパラメータ<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja#%E3%83%A2%E3%83%87%E3%83%AB%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF" class="hash-link" aria-label="Lien direct vers モデルパラメータ" title="Lien direct vers モデルパラメータ" translate="no">​</a></h2>
<p>API パラメータはプロンプトとは別に設定します。</p>
<table><thead><tr><th>パラメータ</th><th>GPT Image 2.5 の設定</th></tr></thead><tbody><tr><td><code>model</code></td><td><code>gpt-image-2.5-flare</code>（小型）/ <code>gpt-image-2.5-sunburst</code>（ベース）</td></tr><tr><td><code>quality</code></td><td><code>auto</code>（既定）/ <code>low</code> / <code>medium</code> / <code>high</code> / <code>xhigh</code> / <code>max</code></td></tr><tr><td><code>size</code></td><td><code>auto</code> または任意解像度。定番: <code>1024x1024</code>（正方）、<code>1536x1024</code>（横）、<code>1024x1536</code>（縦）、<code>2048x2048</code>（2K 正方）、<code>2048x1152</code>（2K 横）、<code>3840x2160</code>（4K 横）、<code>2160x3840</code>（4K 縦）</td></tr><tr><td><code>background</code></td><td><code>auto</code> / <code>opaque</code> / <code>transparent</code></td></tr></tbody></table>
<p>任意解像度 <code>幅x高さ</code> の制約:</p>
<ul>
<li class="">各辺は <strong>3,840px 以下</strong></li>
<li class="">各辺は <strong>16 の倍数</strong></li>
<li class="">長辺 : 短辺は <strong>3:1 以下</strong></li>
<li class="">総ピクセル数は <strong>655,360〜8,294,400</strong></li>
<li class="">3,686,400 px（2560x1440）超は<strong>実験的</strong></li>
</ul>
<p>品質は上記のモデル選択後に調整します。最初の比較では、両モデルが対応する品質設定を<strong>明示的に固定</strong>し、プロンプト・参照画像・出力サイズも揃えます
（同じ品質ラベルでも、モデル間で画質・応答時間が同じとは限りません）。</p>
<p>不足なら高い品質設定を試し、要件を満たしたら低い設定でも許容できるか試します。<code>xhigh</code> / <code>max</code> は<strong>待ち時間の予算内で、満たせない品質要件を改善する時だけ</strong>使います。</p>
<div class="theme-admonition theme-admonition-note admonition_FoJG alert alert--secondary"><div class="admonitionHeading_Fyt5"><span class="admonitionIcon_R76F"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>api.aicu.ai での <code>xhigh</code> / <code>max</code></div><div class="admonitionContent_tCQf"><p>api.aicu.ai でも <code>xhigh</code> / <code>max</code> が使えます（<strong>2026-09-21 追記</strong>。それまでは価格未設定のため 400 <code>quality_not_priced</code> を返していました）。1024×1024 で <code>xhigh</code> 11,400 AP・<code>max</code> 25,600 AP。ただし <strong>60 秒を超えることがあり、その場合は結果がメールで届きます</strong>。アプリの中でそのまま待つ用途には <code>low</code> / <code>medium</code> / <code>high</code> を使ってください。詳細は <a class="" href="https://api.aicu.ai/docs/fr/pricing">料金</a> を参照。</p></div></div>
<p>透過アセットは <code>background="transparent"</code> を明示し、PNG か WebP を使います。デコード後のアルファチャンネル（髪・ガラス・影・輪郭）を確認します。<code>output_compression</code> は JPEG / WebP のみ（PNG には使わない）。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="既存ワークフローの移行">既存ワークフローの移行<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja#%E6%97%A2%E5%AD%98%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E7%A7%BB%E8%A1%8C" class="hash-link" aria-label="Lien direct vers 既存ワークフローの移行" title="Lien direct vers 既存ワークフローの移行" translate="no">​</a></h2>
<ol>
<li class=""><strong>ベースラインを保存</strong>: 代表的な本番プロンプトと参照画像（難しい編集・正確なテキスト・顔・製品形状・透過アセットを含む）、現行モデル・設定・結果を記録。</li>
<li class=""><strong>最初の候補を選ぶ</strong>: GPT Image 2 で足りていれば Flare から（待ち時間改善を確認）。複雑用途で足りなければ Sunburst から（まず品質を確認）。最初の比較はプロンプト・参照・寸法・出力形式を固定。</li>
<li class=""><strong>完全な結果を確認</strong>: 指示追従、同一性・製品維持、テキスト精度、意図しない変化、透過を比較。<strong>同じ要求を繰り返して一貫性を測る</strong>。編集は個別ステップと連続シーケンスの両方を検証。</li>
<li class=""><strong>品質が通ってから待ち時間を評価</strong>: Sunburst で始めて要件を満たしたら、同じ要件で Flare を評価。品質が許容でき待ち時間が改善する時だけ切替。</li>
<li class=""><strong>一度に一設定だけ調整</strong>: プロンプト書き換えより先に品質レベルを比較。通常・遅い応答、失敗、リトライ、<strong>受理画像あたりのコスト</strong>を測る。速いモデルが安いと決めつけず、現行料金を確認。</li>
<li class=""><strong>ワークフロー単位で段階展開</strong>: 受理基準を通ったら少量のトラフィックから始め、同じ指標を監視して徐々に拡大。ロールバック用に旧モデルを残す。</li>
</ol>
<p>繰り返し編集は、保つはずの細部を変えてしまうことがあります。制約を<strong>再掲</strong>し、各結果を確認。ピクセル単位で不変にしたい領域は、プロンプト頼みでなく<strong>承認済みの編集を元画像に合成</strong>します。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="プロンプトの基本8-原則">プロンプトの基本（8 原則）<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja#%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%81%AE%E5%9F%BA%E6%9C%AC8-%E5%8E%9F%E5%89%87" class="hash-link" aria-label="Lien direct vers プロンプトの基本（8 原則）" title="Lien direct vers プロンプトの基本（8 原則）" translate="no">​</a></h2>
<ol>
<li class=""><strong>結果を定義する</strong>: 被写体と用途（製品写真・広告・図解など）を挙げ、構図・アスペクト比・重要な配置制約を指定。複雑なら「シーン／被写体／詳細／制約」のラベル付き節に整理。</li>
<li class=""><strong>保守しやすい形式を選ぶ</strong>: 短文・記述段落・JSON 風・命令・タグ、どれでも同じ意図を表せる。特殊構文に頼らず、<strong>読みやすく更新しやすい形式</strong>を選ぶ。</li>
<li class=""><strong>見える詳細を記述</strong>: 素材・照明・色・視覚媒体を挙げる。目的なら「photorealistic」「real photograph」を明示。カメラ諸元は「見た目のヒント」であって物理シミュレーションの保証ではない。広角・シネマ・低照度・雨・ネオンは、雰囲気語だけでなく<strong>規模・空気感・色</strong>を指定。</li>
<li class=""><strong>人物と動作を指定</strong>: 身体のフレーミング、相対サイズ、視線、物との関わり。「full body visible, feet included」「looking down at the open book」「hands naturally gripping the handlebars」のように具体的に。</li>
<li class=""><strong>正確なテキストを指定</strong>: 必要な文言を<strong>引用符</strong>で囲み、位置とタイポグラフィを記述。珍しい語・ブランド名は一文字ずつ綴る。余計なテキストは禁止と伝え、出力の綴り・可読性を確認。小さな文字・密な情報は medium と high を比較。</li>
<li class=""><strong>変更と制約を分ける</strong>: 編集は「change only X」と言い、保つ詳細（同一性・幾何・レイアウト・照明・ラベル）を列挙。除外（不要なテキスト・ロゴ・透かし）も明示。精密な局所編集では、彩度・コントラスト・矢印・カメラ角度・周囲の物も「不変」と指定。</li>
<li class=""><strong>参照に役割を割り当てる</strong>: 各入力を番号と用途（被写体・スタイル・服・背景）で識別。どう組み合わせ、どの要素をどこへ動かすかを説明。</li>
<li class=""><strong>意図的に反復する</strong>: 前の出力を次の編集入力に渡し、<strong>一度に一つ</strong>変更し、保つ詳細を再掲。「same style as before」等は文脈を運ぶが、ドリフトしたら重要な制約を再掲。指示を足す前に結果を比較。</li>
</ol>
<p>以下の例はそれぞれ別の技法を示します。プロンプトは起点として、自分の画像・要件に合わせて調整してください。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="画像生成の例">画像生成の例<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja#%E7%94%BB%E5%83%8F%E7%94%9F%E6%88%90%E3%81%AE%E4%BE%8B" class="hash-link" aria-label="Lien direct vers 画像生成の例" title="Lien direct vers 画像生成の例" translate="no">​</a></h2>
<p>各例の設定と、そのまま使えるプロンプト（英語）を掲載します。</p>
<p><strong>スタイルと照明の制御</strong>（<code>size="1024x1536"</code>, <code>quality="medium"</code>）— 被写体・フレーミング・光・質感で写真を記述し、過度なレタッチを明示的に除外。</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Create a photorealistic candid photograph of an elderly sailor standing on a small fishing boat.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">He has weathered skin with visible wrinkles, pores, and sun texture, and a few faded traditional sailor tattoos on his arms.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">He is calmly adjusting a net while his dog sits nearby on the deck. Shot like a 35mm film photograph, medium close-up at eye level, using a 50mm lens.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Soft coastal daylight, shallow depth of field, subtle film grain, natural color balance.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">The image should feel honest and unposed, with real skin texture, worn materials, and everyday detail. No glamorization, no heavy retouching.</span><br></div></code></pre></div></div>
<p><strong>プロセスを図解する</strong>（<code>1024x1536</code>, <code>medium</code>）— 図・情報グラフィックはラベルと事実関係も検証。</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Create a detailed Infographic of the functioning and flow of an automatic coffee machine like a Jura.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">From bean basket, to grinding, to scale, water tank, boiler, etc.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">I'd like to understand technically and visually the flow.</span><br></div></code></pre></div></div>
<p><strong>正確なテキストを描画</strong>（<code>1024x1536</code>, <code>medium</code>）— 文言を引用し、出現回数と視覚処理を指定。</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Give me a cool in culture ad / fashion shot for a brand called Thread.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">It's a hip young street brand. The ad shows a group of friends hanging out together with the tagline "Yours to Create."</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Make it feel like a polished campaign image for a youth streetwear audience: stylish, contemporary, energetic, and tasteful.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Use clean composition, strong color direction, natural poses, and premium fashion photography cues.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Render the tagline exactly once, clearly and legibly, integrated into the ad layout.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">No extra text, no watermarks, no unrelated logos.</span><br></div></code></pre></div></div>
<p><strong>再利用できるロゴを設計</strong>（<code>1024x1536</code>, <code>medium</code>, <code>background="transparent"</code>, <code>output_format="png"</code>, <code>n=1</code>）— ブランドと形状を記述、小さくても読める構図に。<code>n</code> で複数バリエーション。</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Create an original, non-infringing logo for a company called Field &amp; Flour, a local bakery.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">The logo should feel warm, simple, and timeless. Use clean, vector-like shapes, a strong silhouette, and balanced negative space.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Favor simplicity over detail so it reads clearly at small and large sizes. Flat design, minimal strokes, no gradients unless essential.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Fully transparent background. Deliver a single centered logo with generous padding, clean alpha edges, and no solid backdrop, scenery, checkerboard, or watermark.</span><br></div></code></pre></div></div>
<p><strong>歴史・実世界の文脈</strong>（<code>1024x1536</code>, <code>medium</code>）— 場所と日付で時代設定。衣装・演出・環境の史実性を確認。</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Create a realistic outdoor crowd scene in Bethel, New York on August 16, 1969.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Photorealistic, period-accurate clothing, staging, and environment.</span><br></div></code></pre></div></div>
<p><strong>物語をコマ漫画に</strong>（<code>1024x1536</code>, <code>medium</code>）— 物語を「1 コマ 1 ビート」の明確な視覚に分解。</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Create a short vertical comic-style reel with 4 panels.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Panel 1: The owner leaves through the front door. The pet is framed in the window behind them, small against the glass, eyes wide, paws pressed high, the house suddenly quiet.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Panel 2: The door clicks shut. Silence breaks. The pet slowly turns toward the empty house, posture shifting, eyes sharp with possibility.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Panel 3: The house transformed. The pet sprawls across the couch like it owns the place, crumbs nearby, sunlight cutting across the room like a spotlight.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Panel 4: The door opens. The pet is seated perfectly by the entrance, alert and composed, as if nothing happened.</span><br></div></code></pre></div></div>
<p><strong>UI プレビュー</strong>（<code>1024x1536</code>, <code>medium</code>）— 「既に存在する製品」として記述。レイアウト・階層・余白・実際の UI 要素に集中し、コンセプトアート語を避ける。</p>
<p><strong>科学・教育ビジュアル</strong>（<code>1536x1024</code>, <code>high</code>）— 授業設計ブリーフのように、対象・学習目標・形式・必須ラベル・科学的制約を定義。密なラベルは <code>high</code>。</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Create a simple biology diagram titled "Cellular Respiration at a Glance" for high school students.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Show how glucose turns into energy inside a cell. Include glycolysis, the Krebs cycle, and the electron transport chain.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Use arrows to connect the steps, and label the main molecules: glucose, pyruvate, ATP, NADH, FADH2, CO2, O2, and H2O.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Make it look like a clean classroom handout or slide, with a white background, simple icons, clear labels, and easy-to-read text.</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Avoid tiny text, extra decoration, or anything that makes the diagram hard to understand.</span><br></div></code></pre></div></div>
<p><strong>スライド・図表・チャート</strong>（<code>1536x864</code>, <code>high</code>）— 「成果物の仕様書」として、正確なテキスト・データを与える。小さな文字・凡例・軸・脚注があるなら <code>high</code>。数値・出典はダミーであり、使用前に検証済みデータに差し替える。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="画像編集の例">画像編集の例<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja#%E7%94%BB%E5%83%8F%E7%B7%A8%E9%9B%86%E3%81%AE%E4%BE%8B" class="hash-link" aria-label="Lien direct vers 画像編集の例" title="Lien direct vers 画像編集の例" translate="no">​</a></h2>
<p><code>client.images.edit</code>（参照入力画像つき）を使います。マスクが要る局所編集はマスク編集を参照。</p>
<ul>
<li class=""><strong>レイアウトを保って翻訳</strong>（<code>1024x1536</code>, <code>high</code>）: <code>Translate the text in the infographic to Spanish. Do not change any other aspect of the image.</code></li>
<li class=""><strong>スタイル転写</strong>（<code>1024x1536</code>, <code>medium</code>）: 参照画像に「パレット／質感／媒体」の役割を割り当て、新しい被写体は別に記述。<code>Use the same style from the input image and generate a man riding a motorcycle on a white background.</code></li>
<li class=""><strong>同一性を保って服だけ変える</strong>（<code>1024x1536</code>, <code>medium</code>）: 人物写真＋服の参照を渡し、「顔・肌・体型・ポーズは不変、服だけ変更」と明示。</li>
<li class=""><strong>参照を合成</strong>（<code>1024x1536</code>, <code>medium</code>）: <code>image 1</code>=シーン、<code>image 2</code>=対象、動かす要素と保つ要素を指定。</li>
<li class=""><strong>透過の切り抜き</strong>（<code>1024x1536</code>, <code>medium</code>, <code>background="transparent"</code>, <code>output_format="png"</code>）: プロンプトで被写体の分離を要求し、API で透過を指定。市松模様は透過ではない。</li>
<li class=""><strong>線画→写実</strong>（<code>1024x1536</code>, <code>medium</code>）: レイアウト・比率・遠近を保ち、素材と照明で写実化。<code>Do not add new elements or text.</code></li>
<li class=""><strong>物体を消す</strong>（<code>1024x1536</code>, <code>medium</code>）: <code>Remove the flower from man's hand. Do not change anything else.</code></li>
<li class=""><strong>人物をシーンに挿入</strong>（<code>1024x1536</code>, <code>medium</code>）: 同一性を保ちつつ新しいシーンへ。保つ顔の特徴と比率を明示（gpt-image-2 では <code>input_fidelity</code> を省く＝常に高忠実度）。</li>
<li class=""><strong>ターンをまたいで洗練</strong>: 1 つの出力を次の入力にし、変更は毎回一つに絞る。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="そのほかのワークフロー">そのほかのワークフロー<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja#%E3%81%9D%E3%81%AE%E3%81%BB%E3%81%8B%E3%81%AE%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC" class="hash-link" aria-label="Lien direct vers そのほかのワークフロー" title="Lien direct vers そのほかのワークフロー" translate="no">​</a></h2>
<ul>
<li class=""><strong>部屋の家具を変える</strong>（<code>1536x1024</code>, <code>medium</code>）: カメラ角度・照明・影・周囲を保ち、1 つの物だけ差し替える「外科的な写実」。</li>
<li class=""><strong>ホリデーカード</strong>（<code>1024x1536</code>, <code>medium</code>）: シーン・情感・素材・照明・正確なコピーを記述。カード文言は verbatim で。</li>
<li class=""><strong>コレクタブル商品</strong>（<code>1024x1536</code>, <code>medium</code>）: 素材・パッケージ・印刷の鮮明さを製品写真の語彙で。オリジナルで非侵害に。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="キャラクターの一貫性を保つ">キャラクターの一貫性を保つ<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja#%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%AF%E3%82%BF%E3%83%BC%E3%81%AE%E4%B8%80%E8%B2%AB%E6%80%A7%E3%82%92%E4%BF%9D%E3%81%A4" class="hash-link" aria-label="Lien direct vers キャラクターの一貫性を保つ" title="Lien direct vers キャラクターの一貫性を保つ" translate="no">​</a></h2>
<p>複数の挿絵がある本などでは、<strong>再利用できるキャラクター参照</strong>を作り、シーン・ポーズ・ページをまたいで見た目を保ちます。
まずキャラの外見・比率・衣装・トーンを確立し（generation）、続く各シーンで<strong>外見の制約を再掲</strong>しながら環境と物語だけ変えます（edit）。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="大量生成バッチのサンプル--apiaicuai">大量生成（バッチ）のサンプル — api.aicu.ai<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja#%E5%A4%A7%E9%87%8F%E7%94%9F%E6%88%90%E3%83%90%E3%83%83%E3%83%81%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB--apiaicuai" class="hash-link" aria-label="Lien direct vers 大量生成（バッチ）のサンプル — api.aicu.ai" title="Lien direct vers 大量生成（バッチ）のサンプル — api.aicu.ai" translate="no">​</a></h2>
<p>Flare は「ラピッドプロトタイピング・大量生成」に向いています。api.aicu.ai は OpenAI 互換なので、
<strong>同じプロンプトの複数バリエーションや、多数のプロンプトを一括で回す</strong>のも簡単です。下は同時実行で
まとめて生成する Python サンプル（<code>AICU_API_KEY</code> を使用）。</p>
<div class="language-python codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-python codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token keyword" style="color:#00009f">import</span><span class="token plain"> os</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> base64</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> concurrent</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">futures </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> cf</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> urllib</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">request</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> json</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">API </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"https://api.aicu.ai/v1/images/generations"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">KEY </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> os</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">environ</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"AICU_API_KEY"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">          </span><span class="token comment" style="color:#999988;font-style:italic"># aicu_live_...</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">def</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">generate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">i</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> prompt</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    body </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> json</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">dumps</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">{</span><span class="token string" style="color:#e3116c">"model"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"gpt-image-2.5-flare"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                       </span><span class="token string" style="color:#e3116c">"size"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"1024x1024"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"quality"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"high"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">                       </span><span class="token string" style="color:#e3116c">"prompt"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> prompt</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">encode</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    req </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> urllib</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">request</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">Request</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">API</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> data</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">body</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> method</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"POST"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    req</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">add_header</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Authorization"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string-interpolation string" style="color:#e3116c">f"Bearer </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">KEY</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    req</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">add_header</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"Content-Type"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"application/json"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    d </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> json</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">load</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">urllib</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">request</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">urlopen</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">req</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> timeout</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">180</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token builtin">open</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string-interpolation string" style="color:#e3116c">f"out_</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">i</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">:</span><span class="token string-interpolation interpolation format-spec">02d</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">.png"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"wb"</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">write</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">base64</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">b64decode</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">d</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"data"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token number" style="color:#36acaa">0</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">[</span><span class="token string" style="color:#e3116c">"b64_json"</span><span class="token punctuation" style="color:#393A34">]</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">return</span><span class="token plain"> i</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">prompts </span><span class="token operator" style="color:#393A34">=</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">[</span><span class="token string-interpolation string" style="color:#e3116c">f"a cute mascot robot, pose variation </span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">{</span><span class="token string-interpolation interpolation">i</span><span class="token string-interpolation interpolation punctuation" style="color:#393A34">}</span><span class="token string-interpolation string" style="color:#e3116c">, studio lighting, no text"</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">           </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> i </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> </span><span class="token builtin">range</span><span class="token punctuation" style="color:#393A34">(</span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token comment" style="color:#999988;font-style:italic"># 同時 4 本で 10 枚を一括生成（大量生成・歩留まり評価にも使える形）</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token keyword" style="color:#00009f">with</span><span class="token plain"> cf</span><span class="token punctuation" style="color:#393A34">.</span><span class="token plain">ThreadPoolExecutor</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">max_workers</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">4</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token keyword" style="color:#00009f">as</span><span class="token plain"> ex</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token keyword" style="color:#00009f">for</span><span class="token plain"> done </span><span class="token keyword" style="color:#00009f">in</span><span class="token plain"> ex</span><span class="token punctuation" style="color:#393A34">.</span><span class="token builtin">map</span><span class="token punctuation" style="color:#393A34">(</span><span class="token keyword" style="color:#00009f">lambda</span><span class="token plain"> a</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> generate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token operator" style="color:#393A34">*</span><span class="token plain">a</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token builtin">enumerate</span><span class="token punctuation" style="color:#393A34">(</span><span class="token plain">prompts</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token keyword" style="color:#00009f">print</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">"done"</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> done</span><span class="token punctuation" style="color:#393A34">)</span><br></div></code></pre></div></div>
<ul>
<li class="">残高（AP）は成功呼び出しに応じて消費され、<strong>残高ゼロで自動停止</strong>します（想定外の請求は出ません）。</li>
<li class="">100 秒を超える生成は、<code>stream</code> の <code>X-AICU-Image-Id</code> で id を受け取り <code>/v1/images/status/:id</code> でポーリングして回収できます（大量・高解像度で有効）。</li>
</ul>
<div class="theme-admonition theme-admonition-note admonition_FoJG alert alert--secondary"><div class="admonitionHeading_Fyt5"><span class="admonitionIcon_R76F"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>バッチと料金について（OpenAI 公式）</div><div class="admonitionContent_tCQf"><p><strong>GPT-Image-2.5（Flare / Sunburst）には「バッチ料金」の設定がありません</strong>。＝非同期 Batch モードは無く、標準の同期生成のみ。<strong>十分に高速だから</strong>バッチ枠を設けていない、という位置づけです（バッチ枠があるのは旧 <code>gpt-image-2</code>）。
また <strong>Flare と Sunburst は同一料金</strong>（画像 入力 $8 / キャッシュ $2 / 出力 $30、テキスト $5 / $1.25・いずれも 1M tokens 単位）。<strong>価格差はなく、違いは「品質」と「待ち時間」だけ</strong>。だから「大量生成」は上のように<strong>同時実行</strong>で回すのが実務的です。（最新の公式料金は <a href="https://openai.com/api/pricing/" target="_blank" rel="noopener noreferrer" class="">OpenAI API pricing</a>。）</p></div></div>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="結果を確認する">結果を確認する<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5-prompting-guide-ja#%E7%B5%90%E6%9E%9C%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B" class="hash-link" aria-label="Lien direct vers 結果を確認する" title="Lien direct vers 結果を確認する" translate="no">​</a></h2>
<p>使う前に、要件に照らして確認します。</p>
<ul>
<li class="">必要なテキストは正確・可読か。図のラベルと関係は正しいか。</li>
<li class="">同一性・製品形状・ラベル・参照の細部は保たれているか。</li>
<li class="">編集は<strong>要求した箇所だけ</strong>を変えたか。</li>
<li class="">透過が必要なら、塗られた背景でなく<strong>アルファチャンネル</strong>を含むか。</li>
</ul>
<p>プロンプトやモデルを変えるときは、代表的な入力で<strong>品質・待ち時間・コスト</strong>を比較します（現行の料金は <a href="https://openai.com/api/pricing/" target="_blank" rel="noopener noreferrer" class="">OpenAI の公式料金ページ</a> を参照）。</p>
<hr>
<p><em>本記事は OpenAI 公式「GPT Image 2.5 prompting guide」の日本語訳です（<a href="https://developers.openai.com/api/docs/guides/image-prompting" target="_blank" rel="noopener noreferrer" class="">原文</a>）。例のプロンプトは起点として自由に調整してください。</em></p>]]></content>
        <author>
            <name>AICU API Team</name>
            <uri>https://api.aicu.ai</uri>
        </author>
        <category label="images" term="images"/>
        <category label="gpt-image" term="gpt-image"/>
        <category label="guide" term="guide"/>
        <category label="prompting" term="prompting"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[AiCuty で GPT-Image-2.5 を試してみた — メイ×エレナ]]></title>
        <id>https://api.aicu.ai/docs/fr/blog/aicuty-gpt-image-2-5-verify</id>
        <link href="https://api.aicu.ai/docs/fr/blog/aicuty-gpt-image-2-5-verify"/>
        <updated>2026-09-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[AICU 公式キャラクター AiCuty の 6 人を題材に、画像生成担当の メイ・ソレイユ と]]></summary>
        <content type="html"><![CDATA[<p>AICU 公式キャラクター <strong>AiCuty</strong> の 6 人を題材に、画像生成担当の <strong>メイ・ソレイユ</strong> と
リーダーの <strong>エレナ・ブルーム</strong> が <code>gpt-image-2.5-flare</code> を実際に叩いてみました。
使ったプロンプトもそのまま載せるので、同じことが再現できます。</p>
<!-- -->
<blockquote>
<p><strong>メイ</strong>: ではいってみよー！ 今日は新しい <code>gpt-image-2.5-flare</code> で、AiCuty のみんなを作ってみるよ。
<strong>エレナ</strong>: よろしくね。参照は <a href="https://github.com/aicuai/AiCuty" target="_blank" rel="noopener noreferrer" class="">github.com/aicuai/AiCuty</a> の公式リファレンス。
全部ホンモノの結果だよ。API は <code>POST /v1/images/edits</code>、<code>model</code> に <code>gpt-image-2.5-flare</code> を渡すだけ。</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="1-まずは一人ずつ">1. まずは一人ずつ<a href="https://api.aicu.ai/docs/fr/blog/aicuty-gpt-image-2-5-verify#1-%E3%81%BE%E3%81%9A%E3%81%AF%E4%B8%80%E4%BA%BA%E3%81%9A%E3%81%A4" class="hash-link" aria-label="Lien direct vers 1. まずは一人ずつ" title="Lien direct vers 1. まずは一人ずつ" translate="no">​</a></h2>
<blockquote>
<p><strong>メイ</strong>: 各メンバーを、公式リファレンスから 1 枚ずつ。顔・髪・衣装・色をどれだけ保てるか、だね。</p>
</blockquote>
<p>生成条件（全部この設定。再現するときはここを合わせてね）:</p>
<table><thead><tr><th>項目</th><th>値</th></tr></thead><tbody><tr><td>model</td><td><code>gpt-image-2.5-flare</code></td></tr><tr><td>endpoint</td><td><code>POST /v1/images/edits</code>（参照画像を <code>image[]</code> に渡す）</td></tr><tr><td>size</td><td><code>1024x1024</code></td></tr><tr><td>quality</td><td><code>high</code>（api.aicu.ai の既定。<code>xhigh</code> / <code>max</code> は 2026-09-21 から利用可・60 秒超はメール送達）</td></tr><tr><td>所要時間</td><td>1 枚あたりおよそ 20 秒（1024² high の実測 21.6 秒）</td></tr><tr><td>usage</td><td>出力 1,756 トークン前後（1024² high。横長にすると減る）</td></tr><tr><td><code>input_fidelity</code></td><td>指定しない（2.5 系と gpt-image-2 は受け付けない。400 になる）</td></tr></tbody></table>
<p>使ったプロンプト（各キャラのリファレンスを <code>image[]</code> に渡す）:</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Full-body portrait of this AiCuty character. Keep the face, hairstyle,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">outfit and colors faithful to the reference. Friendly confident pose,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">clean soft-lit studio background. No text, no watermark.</span><br></div></code></pre></div></div>
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:8px"><p><img decoding="async" loading="lazy" alt="Elena Bloom" src="https://api.aicu.ai/docs/fr/assets/images/ElenaBloom-2.5-flare-e451a1d43516c7ed5b6c55f3a00380fa.png" width="1024" height="1024" class="img__qZa">
<img decoding="async" loading="lazy" alt="Nao Verde" src="https://api.aicu.ai/docs/fr/assets/images/NaoVerde-2.5-flare-ea9463de7eb75ebf22f117e1e7337e0e.png" width="1024" height="1024" class="img__qZa">
<img decoding="async" loading="lazy" alt="Saki Noire" src="https://api.aicu.ai/docs/fr/assets/images/SakiNoire-2.5-flare-7a0d33ca07fee1da3af0dc4a23666772.png" width="1024" height="1024" class="img__qZa">
<img decoding="async" loading="lazy" alt="Mei Soleil" src="https://api.aicu.ai/docs/fr/assets/images/MeiSoleil-2.5-flare-546a1ac28d08a6742671aea7571181ab.png" width="1024" height="1024" class="img__qZa">
<img decoding="async" loading="lazy" alt="Mina Azure" src="https://api.aicu.ai/docs/fr/assets/images/MinaAzure-2.5-flare-201b51ccf77d3d03f6d63281c9d3fc0a.png" width="1024" height="1024" class="img__qZa">
<img decoding="async" loading="lazy" alt="Marsha Arancia" src="https://api.aicu.ai/docs/fr/assets/images/MarshaArancia-2.5-flare-8024d9e134f6a2ebf8bcf4d0d5b3e2d4.png" width="1024" height="1024" class="img__qZa"></p><blockquote>
<p><strong>エレナ</strong>: 私の髪飾りも、マーシャの新衣装もちゃんと来てるね。
<strong>メイ</strong>: そうなの！ リファレンスの特徴をよく拾ってくれるようになったんだよ。</p>
</blockquote></div>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="2-6-人いっしょに多人数同時">2. 6 人いっしょに（多人数同時）<a href="https://api.aicu.ai/docs/fr/blog/aicuty-gpt-image-2-5-verify#2-6-%E4%BA%BA%E3%81%84%E3%81%A3%E3%81%97%E3%82%87%E3%81%AB%E5%A4%9A%E4%BA%BA%E6%95%B0%E5%90%8C%E6%99%82" class="hash-link" aria-label="Lien direct vers 2. 6 人いっしょに（多人数同時）" title="Lien direct vers 2. 6 人いっしょに（多人数同時）" translate="no">​</a></h2>
<blockquote>
<p><strong>メイ</strong>: ここが本番！ 多人数は顔の混同とか人数の間違いが起きやすい難所なんだ。6 人を 1 枚にしてみるよ。</p>
</blockquote>
<p>プロンプト（6 人分のリファレンスを <code>image[]</code> にまとめて渡す）:</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Group shot of these six AiCuty idol characters standing together as a unit,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Halloween night in a neon Shibuya-like city at sunset, jack-o-lanterns and</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">playful ghosts, cinematic lighting. Keep each character's face, hairstyle,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">outfit and colors faithful to the six reference images. Cheerful confident</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">poses. Landscape composition. No text, no watermark.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="AiCuty 6 together — Halloween" src="https://api.aicu.ai/docs/fr/assets/images/AiCuty-6-together-2.5-flare-9475bdd33fadbc206df07eed335ab901.png" width="1536" height="1024" class="img__qZa"></p>
<blockquote>
<p><strong>メイ</strong>: ……あれ？ わたし、ショートパンツのはずがスカートになってる！ 見た目はかわいいけど、
再現性でいうとちょっと残念ショットだね。こういうときは <strong>もう一回まわしてみるよ！</strong>
プロンプトに「wearing shorts, not a skirt」って足すのも効くんだ。
<strong>エレナ</strong>: 6 人が 1 枚にちゃんと並ぶのはすごいけどね。細かい衣装は 2 回目でそろえていこ。</p>
</blockquote>
<p>ステージ版はこう指定したよ:</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">An idol-unit key visual of these six AiCuty characters performing together</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">on a bright concert stage, dynamic band formation, colorful stage lighting</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">and confident expressions. Each of the six must match their own reference</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">exactly, with no mixing between characters, exactly six. Wide cinematic</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">landscape. No text.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="AiCuty 6 together — Key Visual" src="https://api.aicu.ai/docs/fr/assets/images/verify-keyvisual-6-9024d5cdae93fcb7da2aaf4085d97c28.png" width="1536" height="1024" class="img__qZa"></p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="3-服だけ着替える局所編集">3. 服だけ着替える（局所編集）<a href="https://api.aicu.ai/docs/fr/blog/aicuty-gpt-image-2-5-verify#3-%E6%9C%8D%E3%81%A0%E3%81%91%E7%9D%80%E6%9B%BF%E3%81%88%E3%82%8B%E5%B1%80%E6%89%80%E7%B7%A8%E9%9B%86" class="hash-link" aria-label="Lien direct vers 3. 服だけ着替える（局所編集）" title="Lien direct vers 3. 服だけ着替える（局所編集）" translate="no">​</a></h2>
<blockquote>
<p><strong>メイ</strong>: 変えたいところ以外はそのまま、っていうのが得意になったの。エレナの 1 枚を入力に、<strong>衣装だけ</strong>変えてみるね。</p>
</blockquote>
<p>プロンプト（さっき作ったエレナの画像を <code>image[]</code> に渡す）:</p>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">Change ONLY her outfit to a cute Halloween witch costume (hat and cape).</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">Keep her face, hairstyle, pose, and the background exactly the same as the</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">input. No text.</span><br></div></code></pre></div></div>
<div style="display:grid;grid-template-columns:repeat(2,1fr);gap:8px"><p><img decoding="async" loading="lazy" alt="Elena — original" src="https://api.aicu.ai/docs/fr/assets/images/ElenaBloom-2.5-flare-e451a1d43516c7ed5b6c55f3a00380fa.png" width="1024" height="1024" class="img__qZa">
<img decoding="async" loading="lazy" alt="Elena — 衣装だけ Halloween" src="https://api.aicu.ai/docs/fr/assets/images/verify-localedit-Elena-halloween-28aed8338d26374659cac7e02a0f8942.png" width="1024" height="1024" class="img__qZa"></p></div>
<blockquote>
<p><strong>エレナ</strong>: 顔と雰囲気は私のまま、服だけ変わってる。表情差分やコスチューム替えが作りやすいね。</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="4-スプライトシート同じキャラで-9-ポーズ">4. スプライトシート（同じキャラで 9 ポーズ）<a href="https://api.aicu.ai/docs/fr/blog/aicuty-gpt-image-2-5-verify#4-%E3%82%B9%E3%83%97%E3%83%A9%E3%82%A4%E3%83%88%E3%82%B7%E3%83%BC%E3%83%88%E5%90%8C%E3%81%98%E3%82%AD%E3%83%A3%E3%83%A9%E3%81%A7-9-%E3%83%9D%E3%83%BC%E3%82%BA" class="hash-link" aria-label="Lien direct vers 4. スプライトシート（同じキャラで 9 ポーズ）" title="Lien direct vers 4. スプライトシート（同じキャラで 9 ポーズ）" translate="no">​</a></h2>
<blockquote>
<p><strong>メイ</strong>: ゲーム素材みたいに、わたしを 3×3 のポーズ集にしてみるよ。</p>
</blockquote>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">A 3x3 sprite sheet of this exact character showing nine different full-body</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">poses and expressions (idle, waving, jumping, surprised, thinking, pointing,</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">victory sign, bowing, cheering). Keep the character's face, hairstyle, outfit</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">and colors identical in every cell. Evenly spaced grid, clean flat</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">illustration, plain light background. No text.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Mei — sprite sheet 3x3" src="https://api.aicu.ai/docs/fr/assets/images/verify-sprite-Mei-94624e1b0fd3b8e1541afbe40e29bc02.png" width="1024" height="1024" class="img__qZa"></p>
<blockquote>
<p><strong>エレナ</strong>: 待機もジャンプもびっくりも、全部メイのまま！</p>
</blockquote>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="5-1-枚から-4-コマ物語">5. 1 枚から 4 コマ物語<a href="https://api.aicu.ai/docs/fr/blog/aicuty-gpt-image-2-5-verify#5-1-%E6%9E%9A%E3%81%8B%E3%82%89-4-%E3%82%B3%E3%83%9E%E7%89%A9%E8%AA%9E" class="hash-link" aria-label="Lien direct vers 5. 1 枚から 4 コマ物語" title="Lien direct vers 5. 1 枚から 4 コマ物語" translate="no">​</a></h2>
<blockquote>
<p><strong>メイ</strong>: エレナのリファレンスから、起きる → 出会う → 作る → 完成、の 4 コマ。</p>
</blockquote>
<div class="language-text codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-text codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain">A 2x2 four-panel manga telling a short story with this exact character:</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">panel 1 she wakes up sleepy, panel 2 she discovers AI image generation on a</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">laptop and is amazed, panel 3 she creates art excitedly, panel 4 she smiles</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">proudly holding the finished picture. Keep her face, hairstyle, outfit and</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">colors consistent across all four panels. Clean anime/manga style.</span><br></div></code></pre></div></div>
<p><img decoding="async" loading="lazy" alt="Elena — 4-panel story" src="https://api.aicu.ai/docs/fr/assets/images/verify-panels-Elena-6835cc7191e903255d8c92d16042c916.png" width="1024" height="1024" class="img__qZa"></p>
<blockquote>
<p><strong>エレナ</strong>: コマごとに表情が変わるのに、私は私のまま。絵コンテやショート漫画に使えそう。
<strong>メイ</strong>: 完璧じゃない絵も出るけど、プロンプトを足したりもう一回まわせば近づけられるよ。
これ全部 api.aicu.ai の <code>POST /v1/images/edits</code> に <code>model: gpt-image-2.5-flare</code> で叩けるから、
ぜひ試してみてね（<a class="" href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5">GPT-Image-2.5 の技術レポートはこちら</a>）。
じゃ またね！ いつも元気な AiCuty 画像生成担当、メイ・ソレイユでした〜！バイバイ！👋💛</p>
</blockquote>]]></content>
        <author>
            <name>AICU API Team</name>
            <uri>https://api.aicu.ai</uri>
        </author>
        <category label="images" term="images"/>
        <category label="gpt-image" term="gpt-image"/>
        <category label="aicuty" term="aicuty"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[GPT-Image-2.5（Flare / Sunburst）を試す — API マニュアル翻訳]]></title>
        <id>https://api.aicu.ai/docs/fr/blog/gpt-image-2-5</id>
        <link href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5"/>
        <updated>2026-09-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Written by Mei Soleil 🌟（AiCuty・画像生成担当）& AICU API Team]]></summary>
        <content type="html"><![CDATA[<p>Written by <strong>Mei Soleil 🌟</strong>（AiCuty・画像生成担当）&amp; <strong>AICU API Team</strong></p>
<p>OpenAI が 2026-09-08 に <strong>ChatGPT Images 2.5</strong> を発表し、API に 2 つの新しい画像モデル
<strong>GPT-Image-2.5 Flare</strong> と <strong>GPT-Image-2.5 Sunburst</strong> が追加されました。この記事では、
公式ドキュメントの内容をそのまま日本語 API マニュアルに翻訳し、<strong>AICU API（api.aicu.ai）での
使い方</strong>をまとめた<strong>技術レポート</strong>です。</p>
<p>出典（公式）:
<a href="https://openai.com/ja-JP/index/introducing-chatgpt-images-2-5/" target="_blank" rel="noopener noreferrer" class="">ご紹介 ChatGPT Images 2.5</a> ／
<a href="https://developers.openai.com/api/docs/models/gpt-image-2.5-flare" target="_blank" rel="noopener noreferrer" class="">API Docs: gpt-image-2.5-flare</a> ／
<a href="https://developers.openai.com/api/docs/models/gpt-image-2.5-sunburst" target="_blank" rel="noopener noreferrer" class="">gpt-image-2.5-sunburst</a> ／
<a href="https://developers.openai.com/api/docs/guides/image-generation" target="_blank" rel="noopener noreferrer" class="">Image generation guide</a></p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="2--25-で何が変わったか">2 → 2.5 で何が変わったか<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5#2--25-%E3%81%A7%E4%BD%95%E3%81%8C%E5%A4%89%E3%82%8F%E3%81%A3%E3%81%9F%E3%81%8B" class="hash-link" aria-label="Lien direct vers 2 → 2.5 で何が変わったか" title="Lien direct vers 2 → 2.5 で何が変わったか" translate="no">​</a></h2>
<p>OpenAI の発表（公式）を要約すると、GPT-Image-2.5 は次の点で GPT-Image-2 を上回ります。</p>
<ul>
<li class=""><strong>参照写真の忠実度</strong> — 参照写真の被写体（人・場所・特徴）をより忠実に保ちながら、新しい
場面・スタイル・構図へ変換できる。参照画像を軸にしたワークフローの信頼性が上がる。</li>
<li class=""><strong>精密な編集</strong> — 複雑な被写体・背景でも、ほかのディテールを変えずに<strong>指定箇所だけ</strong>を
正確に編集できる（商品・背景・コピーなど 1 要素だけの更新）。</li>
<li class=""><strong>複数ターン編集の一貫性</strong> — 長い会話でも以前の変更を保ったまま編集を重ねられ、画質が劣化
しにくい。</li>
<li class=""><strong>応答速度</strong> — 生成の待ち時間を <strong>Images 2.0 比で最大 50% 短縮</strong>（Flare）。</li>
<li class=""><strong>品質段階の追加</strong> — <code>xhigh</code> と <code>max</code> が増え、<strong>任意解像度</strong>（16 の倍数・縦横比 1:3〜3:1・
最長辺 3840px）にも対応。</li>
<li class=""><strong>透明背景・複雑なレイアウト・スタイル再現性</strong>の向上。</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="api-の-2-モデル--flare-と-sunburst-の使い分け">API の 2 モデル — Flare と Sunburst の使い分け<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5#api-%E3%81%AE-2-%E3%83%A2%E3%83%87%E3%83%AB--flare-%E3%81%A8-sunburst-%E3%81%AE%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91" class="hash-link" aria-label="Lien direct vers API の 2 モデル — Flare と Sunburst の使い分け" title="Lien direct vers API の 2 モデル — Flare と Sunburst の使い分け" translate="no">​</a></h2>
<table><thead><tr><th></th><th><strong>GPT-Image-2.5 Flare</strong></th><th><strong>GPT-Image-2.5 Sunburst</strong></th></tr></thead><tbody><tr><td>位置づけ</td><td>標準・<strong>ほとんどの用途の推奨</strong></td><td>高度・精密ワークフロー向け</td></tr><tr><td>特徴</td><td>GPT-Image-2 より高品質、<strong>待ち時間 50% 短縮</strong></td><td>生成時間を長く取り、編集を<strong>より厳密に制御</strong></td></tr><tr><td>向いている用途</td><td>クリエイター/ソーシャル、製品体験、画像検索、高速プロトタイピング、大量生成</td><td>キャンペーンクリエイティブ、洗練された商品画像、制作・編集ワークフロー</td></tr><tr><td>モデル ID</td><td><code>gpt-image-2.5-flare</code></td><td><code>gpt-image-2.5-sunburst</code></td></tr></tbody></table>
<p>迷ったら <strong>Flare</strong>。厳密な編集制御や高精度が要る制作物だけ <strong>Sunburst</strong> を選ぶ、が基本です。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="api-マニュアル公式ドキュメントの日本語訳">API マニュアル（公式ドキュメントの日本語訳）<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5#api-%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB%E5%85%AC%E5%BC%8F%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E6%97%A5%E6%9C%AC%E8%AA%9E%E8%A8%B3" class="hash-link" aria-label="Lien direct vers API マニュアル（公式ドキュメントの日本語訳）" title="Lien direct vers API マニュアル（公式ドキュメントの日本語訳）" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="エンドポイント">エンドポイント<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5#%E3%82%A8%E3%83%B3%E3%83%89%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88" class="hash-link" aria-label="Lien direct vers エンドポイント" title="Lien direct vers エンドポイント" translate="no">​</a></h3>
<table><thead><tr><th>エンドポイント</th><th>用途</th></tr></thead><tbody><tr><td><code>POST /v1/images/generations</code></td><td>テキストから画像生成</td></tr><tr><td><code>POST /v1/images/edits</code></td><td>参照画像つき生成・編集（inpainting 対応）</td></tr></tbody></table>
<p>両モデルとも上記2つに対応します。</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="パラメータgenerations--edits-共通">パラメータ（generations / edits 共通）<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5#%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BFgenerations--edits-%E5%85%B1%E9%80%9A" class="hash-link" aria-label="Lien direct vers パラメータ（generations / edits 共通）" title="Lien direct vers パラメータ（generations / edits 共通）" translate="no">​</a></h3>
<table><thead><tr><th>パラメータ</th><th>値</th><th>説明</th></tr></thead><tbody><tr><td><code>model</code></td><td><code>gpt-image-2.5-flare</code> / <code>gpt-image-2.5-sunburst</code></td><td>モデル</td></tr><tr><td><code>prompt</code></td><td>文字列</td><td>生成指示</td></tr><tr><td><code>n</code></td><td>整数（既定 1）</td><td>生成枚数</td></tr><tr><td><code>size</code></td><td><code>1024x1024</code> / <code>1536x1024</code> / <code>1024x1536</code>、または任意の <code>幅x高さ</code></td><td>任意解像度は <strong>16 の倍数</strong>・<strong>縦横比 1:3〜3:1</strong>・<strong>最長辺 3840px</strong>・総ピクセル 655,360〜8,294,400</td></tr><tr><td><code>quality</code></td><td><code>low</code> / <code>medium</code> / <code>high</code> / <code>xhigh</code> / <code>max</code> / <code>auto</code>（既定）</td><td>2.5 で <code>xhigh</code> <code>max</code> が追加</td></tr><tr><td><code>background</code></td><td><code>transparent</code> / <code>opaque</code> / <code>auto</code></td><td>透過 PNG は <code>transparent</code></td></tr><tr><td><code>output_format</code></td><td><code>png</code>（既定）/ <code>jpeg</code> / <code>webp</code></td><td></td></tr><tr><td><code>output_compression</code></td><td>0–100</td><td>jpeg / webp のみ</td></tr><tr><td><code>moderation</code></td><td><code>auto</code>（既定）/ <code>low</code></td><td><code>low</code> は制限が緩い</td></tr></tbody></table>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="編集editsで追加されるパラメータ">編集（edits）で追加されるパラメータ<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5#%E7%B7%A8%E9%9B%86edits%E3%81%A7%E8%BF%BD%E5%8A%A0%E3%81%95%E3%82%8C%E3%82%8B%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF" class="hash-link" aria-label="Lien direct vers 編集（edits）で追加されるパラメータ" title="Lien direct vers 編集（edits）で追加されるパラメータ" translate="no">​</a></h3>
<table><thead><tr><th>パラメータ</th><th>値</th><th>説明</th></tr></thead><tbody><tr><td><code>image</code></td><td>画像ファイル、または<strong>参照画像の配列</strong></td><td>キャラクター一貫性・スタイル参照に使う</td></tr><tr><td><code>mask</code></td><td>アルファ付き PNG</td><td>置き換える領域を示す。<strong>元画像と同じ寸法</strong>・<strong>50MB 未満</strong></td></tr><tr><td><code>input_fidelity</code></td><td><code>low</code> / <code>high</code></td><td>参照画像への忠実度</td></tr></tbody></table>
<p>編集の画像入力はファイルアップロードのほか、Responses API 経由なら base64 データ URL や
Files API の File ID でも渡せます。</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="課金の考え方">課金の考え方<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5#%E8%AA%B2%E9%87%91%E3%81%AE%E8%80%83%E3%81%88%E6%96%B9" class="hash-link" aria-label="Lien direct vers 課金の考え方" title="Lien direct vers 課金の考え方" translate="no">​</a></h3>
<p>GPT-Image-2.5 はトークン課金です（テキスト出力は課金されず、画像出力のトークンが中心）。
最新の単価は OpenAI 公式ページを参照してください（<a href="https://openai.com/api/pricing/" target="_blank" rel="noopener noreferrer" class="">OpenAI API pricing</a>）。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="aicu-apiapiaicuaiでの使い方">AICU API（api.aicu.ai）での使い方<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5#aicu-apiapiaicuai%E3%81%A7%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9" class="hash-link" aria-label="Lien direct vers AICU API（api.aicu.ai）での使い方" title="Lien direct vers AICU API（api.aicu.ai）での使い方" translate="no">​</a></h2>
<p>AICU API は <strong>OpenAI 互換</strong>です。キー（<code>aicu_live_...</code>）を用意し、<code>model</code> に上記 ID を渡すだけで
切り替えられます（<strong>リリース後</strong>。下記「リリース予定」参照）。</p>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain"># テキストから生成（Flare 推奨）</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST https://api.aicu.ai/v1/images/generations \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer aicu_live_xxx" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Content-Type: application/json" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -d '{</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "model": "gpt-image-2.5-flare",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "prompt": "a cheerful mascot character, studio lighting, clean background",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "size": "1024x1024",</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">        "quality": "high"</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">      }'</span><br></div></code></pre></div></div>
<div class="language-bash codeBlockContainer_TjPC theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_dWZH"><pre tabindex="0" class="prism-code language-bash codeBlock_T9K6 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_xlQU"><div class="token-line" style="color:#393A34"><span class="token plain"># 参照画像つき（キャラクター一貫性）— 精密な編集は Sunburst</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">curl -X POST https://api.aicu.ai/v1/images/edits \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -H "Authorization: Bearer aicu_live_xxx" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -F model="gpt-image-2.5-sunburst" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -F "image[]=@reference.png" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -F input_fidelity="high" \</span><br></div><div class="token-line" style="color:#393A34"><span class="token plain">  -F prompt="Keep the character's appearance. Change only the background to a night city."</span><br></div></code></pre></div></div>
<p><code>character</code>（キャラクタープリセット）でも 2.5 を指定できます（<code>gpt-image-2.5-flare</code> プリセットを
用意予定）。100 秒を超える生成は非同期経路（<code>/v1/images/status/:id</code> でポーリング）で受け取れます。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="提供状況">提供状況<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5#%E6%8F%90%E4%BE%9B%E7%8A%B6%E6%B3%81" class="hash-link" aria-label="Lien direct vers 提供状況" title="Lien direct vers 提供状況" translate="no">​</a></h2>
<p><strong>GPT-Image-2.5（Flare / Sunburst）は api.aicu.ai で利用可能</strong>です。<code>/v1/images/models</code> に
<code>gpt-image-2.5-flare</code> / <code>gpt-image-2.5-sunburst</code> が並び、上記 curl が通ります（OpenAI 互換）。</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="aicuty-6-人で試す-gpt-image-25-flare">AiCuty 6 人で試す GPT-Image-2.5 Flare<a href="https://api.aicu.ai/docs/fr/blog/gpt-image-2-5#aicuty-6-%E4%BA%BA%E3%81%A7%E8%A9%A6%E3%81%99-gpt-image-25-flare" class="hash-link" aria-label="Lien direct vers AiCuty 6 人で試す GPT-Image-2.5 Flare" title="Lien direct vers AiCuty 6 人で試す GPT-Image-2.5 Flare" translate="no">​</a></h2>
<p>AICU 公式キャラクター <strong>AiCuty</strong> の 6 人を、それぞれの<strong>公式リファレンス</strong>（<a href="https://github.com/aicuai/AiCuty" target="_blank" rel="noopener noreferrer" class="">github.com/aicuai/AiCuty</a>）から
<code>gpt-image-2.5-flare</code> で生成しました。参照忠実度（顔・髪・衣装・色を保つ）を、実際のキャラクターで確かめています。</p>
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:8px"><p><img decoding="async" loading="lazy" alt="Elena Bloom" src="https://api.aicu.ai/docs/fr/assets/images/ElenaBloom-2.5-flare-e451a1d43516c7ed5b6c55f3a00380fa.png" width="1024" height="1024" class="img__qZa">
<img decoding="async" loading="lazy" alt="Nao Verde" src="https://api.aicu.ai/docs/fr/assets/images/NaoVerde-2.5-flare-ea9463de7eb75ebf22f117e1e7337e0e.png" width="1024" height="1024" class="img__qZa">
<img decoding="async" loading="lazy" alt="Saki Noire" src="https://api.aicu.ai/docs/fr/assets/images/SakiNoire-2.5-flare-7a0d33ca07fee1da3af0dc4a23666772.png" width="1024" height="1024" class="img__qZa">
<img decoding="async" loading="lazy" alt="Mei Soleil" src="https://api.aicu.ai/docs/fr/assets/images/MeiSoleil-2.5-flare-546a1ac28d08a6742671aea7571181ab.png" width="1024" height="1024" class="img__qZa">
<img decoding="async" loading="lazy" alt="Mina Azure" src="https://api.aicu.ai/docs/fr/assets/images/MinaAzure-2.5-flare-201b51ccf77d3d03f6d63281c9d3fc0a.png" width="1024" height="1024" class="img__qZa">
<img decoding="async" loading="lazy" alt="Marsha Arancia" src="https://api.aicu.ai/docs/fr/assets/images/MarshaArancia-2.5-flare-8024d9e134f6a2ebf8bcf4d0d5b3e2d4.png" width="1024" height="1024" class="img__qZa"></p></div>
<p><strong>6 人同時</strong>（複数リファレンスを 1 回の生成に渡した集合ショット）:</p>
<p><img decoding="async" loading="lazy" alt="AiCuty 6 together — Halloween" src="https://api.aicu.ai/docs/fr/assets/images/AiCuty-6-together-2.5-flare-9475bdd33fadbc206df07eed335ab901.png" width="1536" height="1024" class="img__qZa"></p>
<div class="theme-admonition theme-admonition-note admonition_FoJG alert alert--secondary"><div class="admonitionHeading_Fyt5"><span class="admonitionIcon_R76F"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>実装メモ</div><div class="admonitionContent_tCQf"><p><code>gpt-image-2.5-flare</code> は <code>images/edits</code> で参照画像を受け取れますが、<strong><code>input_fidelity</code> パラメータは
非対応</strong>（指定すると 400）。参照忠実度はモデル側で担保されます（<code>gpt-image-2</code> とはここが異なります）。</p></div></div>
<hr>
<p><em>この記事は公式ドキュメント（2026-09-08 発表）の日本語訳と、AICU API での使い方をまとめた技術レポートです。</em></p>]]></content>
        <author>
            <name>AICU API Team</name>
            <uri>https://api.aicu.ai</uri>
        </author>
        <category label="images" term="images"/>
        <category label="gpt-image" term="gpt-image"/>
        <category label="release" term="release"/>
        <category label="pricing" term="pricing"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[We Benchmarked Japanese STT on One Shared Audio Source — ElevenLabs Scribe Pulled Ahead]]></title>
        <id>https://api.aicu.ai/docs/fr/blog/japanese-stt-benchmark</id>
        <link href="https://api.aicu.ai/docs/fr/blog/japanese-stt-benchmark"/>
        <updated>2026-08-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[To choose the backend for AICU API transcription (POST /v1/audio/transcriptions), we measured the major STT APIs against the same Japanese audio and the same ground truth. The verdict: ElevenLabs Scribe was the most accurate, at a CER (character error rate) of 15.31%. We are now evaluating it as a high-accuracy lane in AICU API.]]></summary>
        <content type="html"><![CDATA[<p>To choose the backend for AICU API transcription (<code>POST /v1/audio/transcriptions</code>), we measured the major STT APIs against <strong>the same Japanese audio and the same ground truth</strong>. The verdict: <strong>ElevenLabs Scribe was the most accurate, at a CER (character error rate) of 15.31%</strong>. We are now evaluating it as a high-accuracy lane in AICU API.</p>
<!-- -->
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="method--use-audio-whose-ground-truth-already-exists">Method — use audio whose ground truth already exists<a href="https://api.aicu.ai/docs/fr/blog/japanese-stt-benchmark#method--use-audio-whose-ground-truth-already-exists" class="hash-link" aria-label="Lien direct vers Method — use audio whose ground truth already exists" title="Lien direct vers Method — use audio whose ground truth already exists" translate="no">​</a></h2>
<p>The hardest part of any STT benchmark is producing the ground truth. So we took the article announcing AiCuty's newest member — <a href="https://aicu.jp/study" target="_blank" rel="noopener noreferrer" class="">Marsha Arancia's appointment as AICU STUDY navigator</a> (3,023 characters) — and <strong>turned it into audio by having Marsha herself read it aloud (AICU API TTS, <code>voice: "marsha"</code>)</strong>. 8.2 minutes, 7.9 MB of mp3. The script is the ground truth, so CER can be computed mechanically.</p>
<ul>
<li class="">CER = character error rate (lower is better). Levenshtein distance after NFKC normalization and removal of punctuation and whitespace, divided by the ground truth character count</li>
<li class="">Every provider received <strong>the same file, once</strong>. The proper-noun hint (<code>prompt</code>) was identical as well</li>
<li class="">Quirks in the TTS reading (for example, how "AiCuty" gets pronounced) are a handicap shared by all providers — so read this as a <strong>relative comparison</strong></li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="results">Results<a href="https://api.aicu.ai/docs/fr/blog/japanese-stt-benchmark#results" class="hash-link" aria-label="Lien direct vers Results" title="Lien direct vers Results" translate="no">​</a></h2>
<table><thead><tr><th>Provider / model</th><th>CER</th><th>Processing time</th><th>List price (per hour of audio)</th></tr></thead><tbody><tr><td><strong>ElevenLabs Scribe (scribe_v1)</strong></td><td><strong>15.31%</strong></td><td>16.7s</td><td>$0.22–0.40</td></tr><tr><td>OpenAI whisper-1</td><td>21.89%</td><td>29.4s</td><td>$0.36</td></tr><tr><td>OpenAI gpt-4o-mini-transcribe</td><td>23.40%</td><td>16.9s</td><td>$0.18</td></tr><tr><td>whisper-large-v3-turbo (via the current AICU API backend)</td><td>64.97%</td><td>9.9s</td><td>—</td></tr></tbody></table>
<p>The 64.97% via the current backend is not a reflection of model quality: <strong>roughly 40% of the body text was dropped at the seams where long audio is split internally</strong> (whisper-1, from the same model family, scored 21.89%). We are reviewing how that path should be handled, and as a first step we have documented the limits (30 MB / 30 minutes per request) and a chunking recipe in <a href="https://api.aicu.ai/skills/stt" target="_blank" rel="noopener noreferrer" class=""><code>/skills/stt</code></a>.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="what-scribe-got-right">What Scribe got right<a href="https://api.aicu.ai/docs/fr/blog/japanese-stt-benchmark#what-scribe-got-right" class="hash-link" aria-label="Lien direct vers What Scribe got right" title="Lien direct vers What Scribe got right" translate="no">​</a></h2>
<ul>
<li class=""><strong>Nothing dropped</strong>: no omissions across the full 8.2 minutes. It holds up on long audio (the spec allows up to 10 hours / 3 GB per file)</li>
<li class=""><strong>Strong on spoken language</strong>: it picks up colloquial phrasing and hesitations accurately — lines like "……と名乗ったところで気づいたんだけど"</li>
<li class="">Word- and character-level timestamps, speaker diarization (up to 32 speakers), and audio event tags such as laughter</li>
</ul>
<p>For balance, one weakness: it likes to romanize personal names ("マーシャ・アランチャ" → <em>Marcia Arancja</em>). For subtitling, that is well within what a post-processing dictionary can absorb.</p>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="what-aicu-api-will-do">What AICU API will do<a href="https://api.aicu.ai/docs/fr/blog/japanese-stt-benchmark#what-aicu-api-will-do" class="hash-link" aria-label="Lien direct vers What AICU API will do" title="Lien direct vers What AICU API will do" translate="no">​</a></h2>
<ol>
<li class=""><strong>No automatic fallback.</strong> The backend will be selectable explicitly via the <code>model</code> parameter (silently switching you to a different model is the scariest outcome of all — that is our design principle)</li>
<li class=""><strong>Evaluating a high-accuracy lane</strong> on Scribe (pricing to be announced separately)</li>
<li class=""><strong>Pricing change, announced in advance</strong>: from 2026-09-09 05:00 UTC, transcription will be billed at <strong>3 AP per 10 seconds of audio</strong> (≈ $0.11 per hour, under the cost×3 policy). Details on <a href="https://api.aicu.ai/news" target="_blank" rel="noopener noreferrer" class="">News</a></li>
</ol>
<p>The reproduction script and the full logs live in the repository at <code>scripts/stt-benchmark.py</code> and <code>docs/internal/stt-benchmark-2026-08.md</code> (internal). Round two will be measured on real meeting audio.</p>
<p><em>Thanks to Marsha Arancia (AiCuty's editorial and publishing member / <a href="https://aicu.jp/study" target="_blank" rel="noopener noreferrer" class="">AICU STUDY</a> navigator) for lending her voice to the audio source.</em></p>]]></content>
        <author>
            <name>AICU API Team</name>
            <uri>https://api.aicu.ai</uri>
        </author>
        <category label="stt" term="stt"/>
        <category label="benchmark" term="benchmark"/>
        <category label="audio" term="audio"/>
    </entry>
</feed>