Python 88.3%
TypeScript 7.6%
Shell 4.1%
1#!/usr/bin/env python32"""Image generation tool. By default only exercises the validation path (invalid size -> 400) to avoid image costs;3set RUN_IMAGE_TESTS=true to actually generate a 1024x1024 low-quality image (gpt-image-1-mini) and save it to tmp-live/.4STATUS: LIVE_VERIFIED 2026-09-18 for the error path (400 image_generation_user_error / invalid_value); generation UNVERIFIED.5Run: .venv/bin/python examples/openai/tools/image-generation/image_generation.py6"""7import base64, os, sys8from pathlib import Path9ROOT = Path(__file__).resolve().parents[4]; sys.path.insert(0, str(ROOT))10from scripts.live import load_env, log_request; load_env()11from openai import OpenAI, BadRequestError12client = OpenAI(); MODEL = "gpt-5.4-nano"1314if os.environ.get("RUN_IMAGE_TESTS", "false").lower() in ("1", "true", "yes"):15 r = client.responses.create(model=MODEL, input="A tiny red dot on white.", max_output_tokens=64,16 tools=[{"type": "image_generation", "model": "gpt-image-1-mini", "size": "1024x1024", "quality": "low", "output_format": "png"}])17 log_request("openai", "POST", "/v1/responses", 200, 0.01, "image_generation.py generate (RUN_IMAGE_TESTS)")18 img = next(i for i in r.output if i.type == "image_generation_call")19 out = ROOT / "tmp-live" / "image_generation_tool.png"; out.write_bytes(base64.b64decode(img.result)); print("saved", out, img.revised_prompt)20else:21 try:22 client.responses.create(model=MODEL, input="Draw a red dot.", tools=[{"type": "image_generation", "size": "1x1"}], max_output_tokens=16)23 except BadRequestError as e:24 log_request("openai", "POST", "/v1/responses", 400, 0, "image_generation.py invalid size")25 print("expected 400:", e.body)26