<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://api.aicu.ai/docs/blog</id>
    <title>AICU API Docs Blog</title>
    <updated>2026-09-22T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://api.aicu.ai/docs/blog"/>
    <subtitle>AICU API Docs Blog</subtitle>
    <icon>https://api.aicu.ai/docs/img/aicu-icon.svg</icon>
    <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/blog/one-key-six-calls</id>
        <link href="https://api.aicu.ai/docs/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/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/blog/one-key-six-calls#first-a-key" class="hash-link" aria-label="Direct link to First, a key" title="Direct link to 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/blog/one-key-six-calls#1-speech-in-japanese--5-ap" class="hash-link" aria-label="Direct link to 1. Speech, in Japanese — 5 AP" title="Direct link to 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/blog/one-key-six-calls#2-the-same-sentence-again--0-ap" class="hash-link" aria-label="Direct link to 2. The same sentence again — 0 AP" title="Direct link to 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/blog/one-key-six-calls#3-eleven_v3-and-inline-direction--7-ap" class="hash-link" aria-label="Direct link to 3-eleven_v3-and-inline-direction--7-ap" title="Direct link to 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/blog/one-key-six-calls#4-an-image--1170-ap" class="hash-link" aria-label="Direct link to 4. An image — 1,170 AP" title="Direct link to 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/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/blog/one-key-six-calls#5-a-decision-with-a-type--2-ap" class="hash-link" aria-label="Direct link to 5. A decision, with a type — 2 AP" title="Direct link to 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/blog/one-key-six-calls#6-chat-openai-compatible--1-ap" class="hash-link" aria-label="Direct link to 6. Chat, OpenAI-compatible — 1 AP" title="Direct link to 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/blog/one-key-six-calls#the-bill" class="hash-link" aria-label="Direct link to The bill" title="Direct link to 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/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/blog/one-key-six-calls#paying-in-yen" class="hash-link" aria-label="Direct link to Paying in yen" title="Direct link to 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/blog/one-key-six-calls#what-happens-next" class="hash-link" aria-label="Direct link to What happens next" title="Direct link to 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/blog/slack-bot-on-raspberry-pi-4-with-aicu-api</id>
        <link href="https://api.aicu.ai/docs/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/blog/slack-bot-on-raspberry-pi-4-with-aicu-api#%E6%A7%8B%E6%88%90" class="hash-link" aria-label="Direct link to 構成" title="Direct link to 構成" translate="no">​</a></h2>
<p><img decoding="async" loading="lazy" alt="Raspberry Pi 4 は入口と組み立てだけ。重い仕事は API へ" src="https://api.aicu.ai/docs/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/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="Direct link to コマンドと経路" title="Direct link to コマンドと経路" 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/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="Direct link to X の投稿を 1 回で引用カードにする" title="Direct link to 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/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="Direct link to 画像生成を OpenAI SDK のまま向ける" title="Direct link to 画像生成を 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/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="Direct link to 文字起こしを Pi の CPU から外す" title="Direct link to 文字起こしを 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/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="Direct link to 料金（2026-09-14 時点・1 USD = 10,000 AP・課金は HTTP 200 のみ）" title="Direct link to 料金（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/blog/slack-bot-on-raspberry-pi-4-with-aicu-api#%E4%BB%95%E6%A7%98" class="hash-link" aria-label="Direct link to 仕様" title="Direct link to 仕様" 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/blog/aicutybench-gpt-image-2-5</id>
        <link href="https://api.aicu.ai/docs/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/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="Direct link to なぜ「歩留まり」で測るのか" title="Direct link to なぜ「歩留まり」で測るのか" 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/blog/aicutybench-gpt-image-2-5#%E6%96%B9%E6%B3%95aicutybench" class="hash-link" aria-label="Direct link to 方法（AiCutyBench）" title="Direct link to 方法（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/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="Direct link to 結果 1: 歩留まり（正本プロンプト → text-to-image）" title="Direct link to 結果 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/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="Direct link to 結果 2: quality 5 段階（Mei・Flare・1024×1024）" title="Direct link to 結果 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/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="Direct link to 途中で分かったこと（正直に）" title="Direct link to 途中で分かったこと（正直に）" 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/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="Direct link to 商品化判断の材料として" title="Direct link to 商品化判断の材料として" 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/blog/gpt-image-2-5-image-generation-guide-ja-part1</id>
        <link href="https://api.aicu.ai/docs/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/blog/gpt-image-2-5-image-generation-guide-ja-part1#%E6%A6%82%E8%A6%81" class="hash-link" aria-label="Direct link to 概要" title="Direct link to 概要" 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/blog/gpt-image-2-5-image-generation-guide-ja-part1#image-api" class="hash-link" aria-label="Direct link to Image API" title="Direct link to 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/blog/gpt-image-2-5-image-generation-guide-ja-part1#responses-api" class="hash-link" aria-label="Direct link to Responses API" title="Direct link to 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/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="Direct link to どちらの API を使うか" title="Direct link to どちらの 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/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/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="Direct link to 画像を生成する" title="Direct link to 画像を生成する" 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/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="Direct link to マルチターンの画像生成" title="Direct link to マルチターンの画像生成" 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>note</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/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="Direct link to ストリーミング" title="Direct link to ストリーミング" 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>
<p>:::tip api.aicu.ai での長い生成
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>
<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/blog/gpt-image-2-5-image-generation-guide-ja-part2</id>
        <link href="https://api.aicu.ai/docs/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/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/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="Direct link to 改稿されたプロンプト（Revised prompt）" title="Direct link to 改稿されたプロンプト（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/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="Direct link to 画像を編集する" title="Direct link to 画像を編集する" 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/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="Direct link to 参照画像から新しい画像を作る" title="Direct link to 参照画像から新しい画像を作る" 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/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="Direct link to マスクで画像を編集する" title="Direct link to マスクで画像を編集する" 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/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="Direct link to マスクの要件" title="Direct link to マスクの要件" 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/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="Direct link to 出力のカスタマイズ" title="Direct link to 出力のカスタマイズ" 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/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="Direct link to サイズと品質" title="Direct link to サイズと品質" 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>
<p>:::note api.aicu.ai の現状
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/pricing">料金</a> を参照。
:::</p>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="出力形式">出力形式<a href="https://api.aicu.ai/docs/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="Direct link to 出力形式" title="Direct link to 出力形式" 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/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="Direct link to 制限事項" title="Direct link to 制限事項" 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/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="Direct link to コンテンツモデレーション" title="Direct link to コンテンツモデレーション" 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/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="Direct link to ブロックされたリクエストとエラーの扱い" title="Direct link to ブロックされたリクエストとエラーの扱い" 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/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="Direct link to 対応モデル" title="Direct link to 対応モデル" 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/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="Direct link to コストと待ち時間（OpenAI 公式の公表値）" title="Direct link to コストと待ち時間（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/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="Direct link to 出力トークンの目安" title="Direct link to 出力トークンの目安" 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/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="Direct link to 以前の GPT Image モデル" title="Direct link to 以前の 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/blog/gpt-image-2-5-prompting-guide-ja</id>
        <link href="https://api.aicu.ai/docs/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/blog/gpt-image-2-5-prompting-guide-ja#%E6%A6%82%E8%A6%81" class="hash-link" aria-label="Direct link to 概要" title="Direct link to 概要" 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/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="Direct link to モデルの選び方" title="Direct link to モデルの選び方" 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/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="Direct link to モデルパラメータ" title="Direct link to モデルパラメータ" 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>
<p>:::note api.aicu.ai での <code>xhigh</code> / <code>max</code>
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/pricing">料金</a> を参照。
:::</p>
<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/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="Direct link to 既存ワークフローの移行" title="Direct link to 既存ワークフローの移行" 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/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="Direct link to プロンプトの基本（8 原則）" title="Direct link to プロンプトの基本（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/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="Direct link to 画像生成の例" title="Direct link to 画像生成の例" 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/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="Direct link to 画像編集の例" title="Direct link to 画像編集の例" 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/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="Direct link to そのほかのワークフロー" title="Direct link to そのほかのワークフロー" 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/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="Direct link to キャラクターの一貫性を保つ" title="Direct link to キャラクターの一貫性を保つ" 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/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="Direct link to 大量生成（バッチ）のサンプル — api.aicu.ai" title="Direct link to 大量生成（バッチ）のサンプル — 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>
<p>:::note バッチと料金について（OpenAI 公式）
<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>
<h2 class="anchor anchorTargetStickyNavbar_RHNx" id="結果を確認する">結果を確認する<a href="https://api.aicu.ai/docs/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="Direct link to 結果を確認する" title="Direct link to 結果を確認する" 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/blog/aicuty-gpt-image-2-5-verify</id>
        <link href="https://api.aicu.ai/docs/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/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="Direct link to 1. まずは一人ずつ" title="Direct link to 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/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/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/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/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/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/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/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="Direct link to 2. 6 人いっしょに（多人数同時）" title="Direct link to 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/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/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/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="Direct link to 3. 服だけ着替える（局所編集）" title="Direct link to 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/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/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/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="Direct link to 4. スプライトシート（同じキャラで 9 ポーズ）" title="Direct link to 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/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/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="Direct link to 5. 1 枚から 4 コマ物語" title="Direct link to 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/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/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/blog/gpt-image-2-5</id>
        <link href="https://api.aicu.ai/docs/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/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="Direct link to 2 → 2.5 で何が変わったか" title="Direct link to 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/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="Direct link to API の 2 モデル — Flare と Sunburst の使い分け" title="Direct link to 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/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="Direct link to API マニュアル（公式ドキュメントの日本語訳）" title="Direct link to API マニュアル（公式ドキュメントの日本語訳）" translate="no">​</a></h2>
<h3 class="anchor anchorTargetStickyNavbar_RHNx" id="エンドポイント">エンドポイント<a href="https://api.aicu.ai/docs/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="Direct link to エンドポイント" title="Direct link to エンドポイント" 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/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="Direct link to パラメータ（generations / edits 共通）" title="Direct link to パラメータ（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/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="Direct link to 編集（edits）で追加されるパラメータ" title="Direct link to 編集（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/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="Direct link to 課金の考え方" title="Direct link to 課金の考え方" 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/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="Direct link to AICU API（api.aicu.ai）での使い方" title="Direct link to 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/blog/gpt-image-2-5#%E6%8F%90%E4%BE%9B%E7%8A%B6%E6%B3%81" class="hash-link" aria-label="Direct link to 提供状況" title="Direct link to 提供状況" 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/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="Direct link to AiCuty 6 人で試す GPT-Image-2.5 Flare" title="Direct link to 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/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/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/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/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/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/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/assets/images/AiCuty-6-together-2.5-flare-9475bdd33fadbc206df07eed335ab901.png" width="1536" height="1024" class="img__qZa"></p>
<p>:::note 実装メモ
<code>gpt-image-2.5-flare</code> は <code>images/edits</code> で参照画像を受け取れますが、<strong><code>input_fidelity</code> パラメータは
非対応</strong>（指定すると 400）。参照忠実度はモデル側で担保されます（<code>gpt-image-2</code> とはここが異なります）。
:::</p>
<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/blog/japanese-stt-benchmark</id>
        <link href="https://api.aicu.ai/docs/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/blog/japanese-stt-benchmark#method--use-audio-whose-ground-truth-already-exists" class="hash-link" aria-label="Direct link to Method — use audio whose ground truth already exists" title="Direct link to 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/blog/japanese-stt-benchmark#results" class="hash-link" aria-label="Direct link to Results" title="Direct link to 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/blog/japanese-stt-benchmark#what-scribe-got-right" class="hash-link" aria-label="Direct link to What Scribe got right" title="Direct link to 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/blog/japanese-stt-benchmark#what-aicu-api-will-do" class="hash-link" aria-label="Direct link to What AICU API will do" title="Direct link to 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>