1️⃣ gpt-image-1 インターフェースの説明
OpenAIの描画インターフェースgpt-image-1は、テキストから画像を生成する機能(generate)と、画像とテキストから画像を編集する機能(edit)をサポートしています。
使用する前に、pip install -U openaiを実行して最新のOpenAIパッケージにアップグレードしてください。
注意事項
生成中に、いかなる状況で中断または失敗した場合でも、インターフェース呼び出しが一度発行されると、料金が請求されます
存命のアーティスト名(例:「宮崎駿」、「新海誠」など)はmoderation_blockedエラーをトリガーし、生成が失敗します 。これを回避するには、「ジブリ」、「明るい現代的な日本のアニメスタイル」などの非機密語を使用できます。露出度の高い服装や暗示的な画像も同様です。
全体的に、「スタイル」は「アーティスト」よりも安全です。「ピクサー」などもサポートされています。
より確実な方法は、故人アーティストまたは対応するスタイルを使用することです。例:「ゴッホ」、「モナリザ」など。
モデルと料金
モデル 品質 1024x1024 1024x1536 1536x1024 gpt-image-1 low $0.011 $0.016 $0.016 gpt-image-1 medium $0.042 $0.063 $0.063 gpt-image-1 high $0.167 $0.25 $0.25
注意:入力テキストトークン部分の料金は100万トークンあたり$5で、別途計算されます。
呼び出し方法
エンドポイント (Endpoints)
描画:https://aihubmix.com/v1/images/generations
編集:https://aihubmix.com/v1/images/edits
Python呼び出しの例は以下の通りです。
生成 (テキストから画像)
編集 (複数画像+テキストから画像)
from openai import OpenAI
import base64
import os
client = OpenAI(
api_key = "AIHUBMIX_API_KEY" , # バックエンドで生成したキー "sk-***" に置き換えてください
base_url = "https://aihubmix.com/v1"
)
prompt = """映画[ブラック・スワン]のポスターを再デザインしてください。3Dカートゥーン、スムーズなレンダリング、明るいトーン、2:3のポートレート。"""
result = client.images.generate(
model = "gpt-image-1" ,
prompt = prompt,
n = 1 , # 一度に生成する画像の数、最大10枚
size = "1024x1536" , # 1024x1024 (正方形), 1536x1024 (3:2横長), 1024x1536 (2:3縦長), auto (デフォルト)
quality = "high" , # high, medium, low, auto (デフォルト)
moderation = "low" , # low, auto (デフォルト) openaiパッケージのアップグレードが必要 📍
background = "auto" , # transparent, opaque, auto (デフォルト)
)
print (result.usage)
# ファイル名のプレフィックスと保存ディレクトリを定義
output_dir = "." # 他のディレクトリを指定できます
file_prefix = "image_gen"
# 出力ディレクトリが存在することを確認
os.makedirs(output_dir, exist_ok = True )
# 返されたすべての画像データを反復処理
for i, image_data in enumerate (result.data):
image_base64 = image_data.b64_json
if image_base64: # b64_jsonが空でないことを確認
image_bytes = base64.b64decode(image_base64)
# --- ファイル名の衝突処理ロジック開始 ---
current_index = i
while True :
# 自動インクリメント付きのファイル名を構築
file_name = f " { file_prefix } _ { current_index } .png"
file_path = os.path.join(output_dir, file_name) # 完全なファイルパスを構築
# ファイルが存在するかどうかを確認
if not os.path.exists(file_path):
break # ファイル名が衝突しないので、ループを抜ける
# ファイル名が衝突するので、インデックスを増やす
current_index += 1
# 見つかった一意のfile_pathに画像をファイルとして保存
with open (file_path, "wb" ) as f:
f.write(image_bytes)
print ( f "画像は以下に保存されました: { file_path } " )
else :
print ( f "画像 { i } のデータが空なので、保存をスキップします。" )
その他のパラメータの詳細については、OpenAI公式ドキュメント を参照してください。
出力例
Usage(input_tokens= 150 , input_tokens_details=UsageInputTokensDetails(image_tokens= 0 , text_tokens= 150 ), output_tokens= 6240 , total_tokens= 6390 )
画像は以下に保存されました:./image_gen_ 14 .png
拒否されるケース
リクエストが拒否された場合のエラーメッセージは以下の通りです。
Error code: 400 - { 'error' : { 'message' : 'Your request was rejected as a result of our safety system. Your request may contain content that is not allowed by our safety system.' , 'type' : 'user_error' , 'param' : None , 'code' : 'moderation_blocked' }}
一度のリクエストで2〜10枚の画像を生成する場合、システムがリクエストがプラットフォームポリシーに違反していると判断した場合、そのリクエストの違反部分は生成されません。これにより、実際に生成される画像の数がユーザーが要求した数よりも少なくなる可能性がありますが、複数枚の場合、moderation_blockedはスローされません。
したがって、作成時には潜在的な知的財産権(IP)や著作権の問題を積極的に回避し、システムによる生成ブロックのリスクを減らし、作成がスムーズに完了するようにしてください。
✍️ 重要なヒント:
既知の著作権保護されたキャラクター、ブランドロゴ、有名人の肖像などを直接使用することは避けてください。
「スタイルを参考にする」「クリエイティブな改変」「一般的な記述」などの方法で表現できます。
特定の要素を引用する必要がある場合は、その要素がパブリックドメインにあることを事前に確認してください。
実用的なヒント
どの言語でもサポートされており、中国語の描画も非常に安定していますが、大量のテキストを描画することはお勧めしません。
sizeパラメータはsize="auto"を明示的に渡すことをサポートしていません。デフォルトはautoです。
描画比率はプロンプトで指定できます。2:3、3:2、1:1をサポートしており、sizeパラメータで設定することもできます。
敏感度を制御するmoderationパラメータをサポートしていますが、このパラメータをlowに設定しても拒否される可能性があります。例えば、ヴィーナスが露出度が高すぎる場合などです。
editsポートはmoderationパラメータをサポートしていません。
テキスト記述と参照画像を組み合わせることで、画像合成の効果がより正確になります。
アップロードする画像を圧縮前処理することで、速度を向上させることができます。
透明な背景をサポートしており、切り抜き不要です。——プロンプトで要求を追加するだけです。
2️⃣ GPT描画の先行体験(逆方向)
ユーザーの強い要望に応えるため、gpt-4o-imageとgpt-4o-image-vipという2つの逆方向インターフェースを特別にリリースしました。このうち、VIPモデルは性能と安定性において優れています。
これらの逆方向インターフェースは完全に安定しているとは限らず、🕐 Queuing...のキューイング状態や生成失敗が発生する可能性があるため、新機能の体験やテストにのみ使用することをお勧めします。
OpenAIがgpt-image-1インターフェースを正式にリリースしたことを考慮し、呼び出しコストの観点から、これらの逆方向インターフェースは一時的に保持し、完全に互換性のある呼び出し方法を提供します。
注意事項
生成中に、いかなる状況で中断または失敗した場合でも、インターフェース呼び出しが一度発行されると、料金が請求されます
存命のアーティスト名(例:「宮崎駿」、「新海誠」など)はinput_moderationエラーをトリガーし、生成が失敗します 。これを回避するには、「ジブリ」、「明るい現代的な日本のアニメスタイル」などの非機密語を使用できます
全体的に、「スタイル」は「アーティスト」よりも安全です。「ピクサー」などもサポートされています
より確実な方法は、故人アーティストまたは対応するスタイルを使用することです。例:「ゴッホ」、「モナリザ」など
モデルと料金
モデル バックエンド料金 (米ドル/回) 約 (日本円/回) gpt-4o-image-vip$0.009 約 ¥0.06 gpt-4o-image$0.005 約 ¥0.04
バックエンド料金は米ドルに基づいています。
逆方向インターフェースの維持コストが増加したため、1回あたりの呼び出し価格が引き上げられました。(更新日:20250604)
正式なgpt-image-1インターフェースの入力テキストトークン部分の料金は100万トークンあたり$5ですが、逆方向インターフェースは画像描画回数のみで計算されます。
Python呼び出し例
おなじみのv1/completionsエンドポイントを使用してサポートを提供します。完全に互換性があり、具体的な使用方法は以下を参照してください。
テキストから画像
画像とテキストから画像
複数画像+テキストから画像
from openai import OpenAI
client = OpenAI(
api_key = "AIHUBMIX_API_KEY" , # バックエンドで生成したキー "sk-***" に置き換えてください
base_url = "https://aihubmix.com/v1"
)
# チャット完了リクエストを作成
stream = client.chat.completions.create(
model = "gpt-4o-image-vip" , #リスト: gpt-4o-image-vip, gpt-4o-image
messages = [
{
"role" : "user" ,
"content" : [
{
"type" : "text" ,
"text" : """[真珠の耳飾りの少女]をアニメ風のイラストカバーとして再デザインしてください。元の本質と構図を維持してください:象徴的な横顔の視線、穏やかな表情、親密なフレーミング。洗練された京都アニメ風のスタイルで、柔らかな筆致、映画のような照明、段階的な奥行きでレンダリングしてください。
AVカバーレイアウトでフォーマットしてください:
日本語と英語を混ぜたタイポグラフィ、視覚的な階層が重要なセリフのタイトル - デザインセンスが鍵です。
深い意味を伝える言葉をタイトルとして抽出し、創造的なスローガンを付けてください。元の名前は、必要であれば小さな情報としてのみ表示してください。
「jerlin」という透かしを服や背景にさりげなく埋め込んでください。感情的なトーンと姿勢を維持し、必要な場合にのみ柔らかくしてください。2:3のポートレート"""
}
]
}
],
stream = True
)
# forループを使用してストリーミング応答を処理
for chunk in stream:
try :
if chunk.choices and len (chunk.choices) > 0 and chunk.choices[ 0 ].delta and chunk.choices[ 0 ].delta.content:
print (chunk.choices[ 0 ].delta.content, end = "" , flush = True )
except Exception as e:
print ( f " \n 応答の処理中にエラーが発生しました: { str (e) } " )
出力例
{
"prompt": "真珠の耳飾りの少女をアニメ風のイラストカバーとして再デザインしてください。元の本質と構図を維持してください:象徴的な横顔の視線、穏やかな表情、親密なフレーミング。洗練された京都アニメ風のスタイルで、柔らかな筆致、映画のような照明、段階的な奥行きでレンダリングしてください。
AVカバーレイアウトでフォーマットしてください:
日本語と英語を混ぜたタイポグラフィ、視覚的な階層が重要なセリフのタイトル - デザインセンスが鍵です。
深い意味を伝える言葉をタイトルとして抽出し、創造的なスローガンを付けてください。元の名前は、必要であれば小さな情報としてのみ表示してください。
「jerlin」という透かしを服や背景にさりげなく埋め込んでください。慎重に、潜在的なヌードを流れるような布、髪、またはベールで置き換え、感情的なトーンと姿勢を維持してください。必要な場合にのみ詳細を柔らかくしてください。2:3のポートレート",
"ratio": "2:3"
}
>🕐 キューイング中...
>⚡ 生成中.....
>🏃 進捗 11....19....27...34....42....50....57...64....[100](https://videos.openai.com/vg-assets/assets%2Ftask_01jsccq77nfcsab7dn8bx7z230%2Fsrc_1.png?st=2025-04-21T13%3A08%3A48Z&se=2025-04-27T14%3A08%3A48Z&sks=b&skt=2025-04-21T13%3A08%3A48Z&ske=2025-04-27T14%3A08%3A48Z&sktid=a48cca56-e6da-484e-a814-9c849652bcb3&skoid=aa5ddad1-c91a-4f0a-9aca-e20682cc8969&skv=2019-02-02&sv=2018-11-09&sr=b&sp=r&spr=https%2Chttp&sig=xm6K6M7au3F3Vd9qcYxR3mYWrqAHsgbagbUV5GQo39w%3D&az=oaivgprodscus)
> ✅ 生成完了

[ダウンロードはこちら](https://filesystem.site/cdn/download/20250421/XBCrAs6qvMARG7BkFX0KI3MBs1qoto.png)

[ダウンロードはこちら](https://filesystem.site/cdn/download/20250421/tQ62gh0BbdESApNmFJMNzsdUFDflkl.png)%
OpenAI 正式インターフェース互換
OpenAIが最近リリースした画像生成の呼び出し方法を好む場合は、以下の処理を参照してください。3つの点に注意するだけです。
品質パラメータを渡すことはできません。モデルgpt-4o-image-vipとgpt-4o-imageはそれ自体にバンドルされています。
トークン使用量を追跡するusageフィールドの出力はサポートされていません。
最新の出力はBase64画像データであり、ユースケースは自動保存されています。
from openai import OpenAI
import os
import requests
import base64
client = OpenAI(
api_key = "AIHUBMIX_API_KEY" , # あなたのAiHubMixキーに置き換えてください
base_url = "https://aihubmix.com/v1"
)
prompt = """
映画[ブラック・スワン]のポスターを再デザインしてください。3Dカートゥーン、スムーズなレンダリング、明るいトーン、2:3
"""
result = client.images.generate(
model = "gpt-4o-image-vip" ,
prompt = prompt,
n = 1 , # 1回あたりの数量
size = "1024x1536" , # 1024x1024 (正方形), 1536x1024 (3:2横長), 1024x1536 (2:3縦長), auto (デフォルト)
#quality="high" # 逆方向モデルは品質パラメータを渡すことはできません。モデルにバンドルされています 📍
)
print (result) # 完全なAPI応答を出力します。逆方向インターフェースはusageをサポートしていません 📍
# ファイル名のプレフィックスと保存ディレクトリを定義
output_dir = "." # 他のディレクトリを指定できます
file_prefix = "image_gen-逆方向"
# 出力ディレクトリが存在することを確認
os.makedirs(output_dir, exist_ok = True )
# 返されたすべての画像データを反復処理
for i, image_data in enumerate (result.data):
# まずbase64文字列を処理
if hasattr (image_data, "b64_json" ) and image_data.b64_json:
image_bytes = base64.b64decode(image_data.b64_json)
current_index = i
while True :
file_name = f " { file_prefix } _ { current_index } .png"
file_path = os.path.join(output_dir, file_name)
if not os.path.exists(file_path):
break
current_index += 1
with open (file_path, "wb" ) as f:
f.write(image_bytes)
print ( f "画像は以下に保存されました: { file_path } (base64)" )
# 次にurlフィールドを処理(互換性のあるインターフェースが変更されるのを防ぐために堅牢な処理を維持)
elif hasattr (image_data, "url" ) and image_data.url:
try :
response = requests.get(image_data.url, stream = True )
response.raise_for_status()
image_bytes = response.content
current_index = i
while True :
file_name = f " { file_prefix } _ { current_index } .png"
file_path = os.path.join(output_dir, file_name)
if not os.path.exists(file_path):
break
current_index += 1
with open (file_path, "wb" ) as f:
f.write(image_bytes)
print ( f "画像は以下に保存されました: { file_path } (url)" )
except requests.exceptions.RequestException as e:
print ( f "画像 { i } のダウンロードに失敗しました: { e } " )
except Exception as e:
print ( f "画像 { i } の処理中にエラーが発生しました: { str (e) } " )
else :
print ( f "画像 { i } のデータにはb64_jsonもurlもありません。保存をスキップします。" )
効果展示
実用的なヒント
どの言語でもサポートされており、中国語の描画も非常に安定していますが、大量のテキストを描画することはお勧めしません。
描画比率はプロンプトで指定します。指定しない場合、4oが自動的に判断します。2:3、3:2、1:1をサポートします。
インスピレーションがない場合は、参照画像を提供してください。単一画像と複数画像をサポートします。
アップロードする画像を圧縮前処理することで、速度を向上させることができます。
透明な背景をサポートしており、切り抜き不要です。——プロンプトで要求を追加するだけです。