A ferramenta de geração de imagens permite criar imagens a partir de um prompt de texto. Você também pode fornecer imagens de entrada. A ferramenta usa modelos GPT Image, incluindo gpt-image-2.5-sunburst, gpt-image-2.5-flare, gpt-image-2, gpt-image-1.5 e gpt-image-1-mini, e otimiza automaticamente o texto de entrada para melhorar o desempenho.
Na ferramenta image_generation, defina model como gpt-image-2.5-sunburst para fazer edições precisas ou como gpt-image-2.5-flare para gerar imagens de alta qualidade com rapidez. No campo model de nível superior da requisição à API Responses, use um modelo compatível da linha principal.
O modelo gpt-image-1 foi desativado em 23 de outubro de 2026. Consulte o aviso de descontinuação para obter detalhes sobre a migração.
Ao incluir a ferramenta image_generation na requisição, você permite que o modelo decida quando e como gerar imagens durante a conversa com base no prompt e nas imagens de entrada que você fornecer.
O resultado da chamada de ferramenta image_generation_call inclui uma imagem codificada em base64.
Se o seu aplicativo atende usuários finais individualmente, inclua um safety_identifier estável que preserve a privacidade em cada requisição à API Responses, inclusive nas requisições de edição posteriores. Defina esse parâmetro no nível superior da requisição, fora das opções da ferramenta image_generation. Consulte a seção sobre identificadores de segurança para imagens para obter orientações sobre as duas APIs de imagens.
Gerar uma imagem
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20import OpenAI from "openai";const openai = new OpenAI();const response = await openai.responses.create({ model: "gpt-6-astra", input: "Generate an image of gray tabby cat hugging an otter with an orange scarf", tools: [{ type: "image_generation", model: "gpt-image-2.5-sunburst" }],});// Save the image to a fileconst imageData = response.output .filter((output) => output.type === "image_generation_call") .map((output) => output.result);if (imageData.length > 0) { const imageBase64 = imageData[0]; const fs = await import("fs"); fs.writeFileSync("otter.png", Buffer.from(imageBase64, "base64"));}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22from openai import OpenAIimport base64client = OpenAI()response = client.responses.create(model="gpt-6-astra",input="Generate an image of gray tabby cat hugging an otter with an orange scarf",tools=[{"type": "image_generation", "model": "gpt-image-2.5-sunburst"}],)# Save the image to a fileimage_data = [ output.resultfor output in response.outputif output.type =="image_generation_call"]if image_data: image_base64 = image_data[0]withopen("otter.png", "wb") as f: f.write(base64.b64decode(image_base64))
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42package mainimport ( "context" "encoding/base64" "os" "github.com/openai/openai-go/v3" "github.com/openai/openai-go/v3/responses")func main() { client := openai.NewClient() response, err := client.Responses.New(context.Background(), responses.ResponseNewParams{ Model: "gpt-6-astra", Input: responses.ResponseNewParamsInputUnion{ OfString: openai.String("Generate an image of gray tabby cat hugging an otter with an orange scarf"), }, Tools: []responses.ToolUnionParam{{OfImageGeneration: &responses.ToolImageGenerationParam{Model: "gpt-image-2.5-sunburst"}}}, }) if err != nil { panic(err) } saveFirstGeneratedImage(response, "otter.png")}func saveFirstGeneratedImage(response *responses.Response, filename string) { for _, output := range response.Output { if output.Type != "image_generation_call" { continue } image, err := base64.StdEncoding.DecodeString(output.AsImageGenerationCall().Result) if err != nil { panic(err) } if err := os.WriteFile(filename, image, 0o600); err != nil { panic(err) } return } panic("response did not include an image generation call")}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20using OpenAI.Responses;#pragma warning disable OPENAI001string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!;ResponsesClient client = new(key);CreateResponseOptions options = new() { Model = "gpt-6-astra" };options.InputItems.Add( ResponseItem.CreateUserMessageItem( "Generate an image of a gray tabby cat hugging an otter with an orange scarf." ));options.Tools.Add(ResponseTool.CreateImageGenerationTool(model: "gpt-image-2.5-sunburst"));ResponseResult response = await client.CreateResponseAsync(options);ImageGenerationCallResponseItem image = response .OutputItems.OfType<ImageGenerationCallResponseItem>() .FirstOrDefault() ?? throw new InvalidOperationException("No generated image was returned.");await File.WriteAllBytesAsync("otter.png", image.ImageResultBytes.ToArray());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24require "base64"require "openai"client = OpenAI::Client.newresponse = client.responses.create( model: "gpt-6-astra", input: "Generate an image of a gray tabby cat hugging an otter with an orange scarf.", tools: [ { type: :image_generation, model: "gpt-image-2.5-sunburst" } ])image_call = response.output.find do |item| item.is_a?(OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall)endunless image_call.is_a?(OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall) raise "No image generation call returned"endencoded_image = image_call.result or raise "No image returned"File.binwrite("otter.png", Base64.strict_decode64(encoded_image))
Tamanho: dimensões da imagem, como 1024 × 1024 ou 1024 × 1536
Qualidade: qualidade da renderização, como baixa, média ou alta
Formato: formato do arquivo de saída
Compressão: nível de compressão (de 0 a 100%) para os formatos JPEG e WebP
Fundo: transparente, opaco ou automático
Ação: permite que o modelo escolha entre gerar e editar uma imagem ou que você especifique qual dessas ações executar
Os parâmetros size, quality e background aceitam o valor auto. Com esse valor, o modelo seleciona automaticamente a melhor opção com base no prompt.
Nos modelos gpt-image-2.5-sunburst e gpt-image-2.5-flare, o parâmetro quality também aceita xhigh e max. Os modelos GPT Image anteriores não aceitam esses valores. A qualidade padrão continua sendo auto.
O modelo gpt-image-2 aceita diferentes valores de size, desde que atendam às restrições de resolução do modelo. O suporte a fundos transparentes está disponível em versão prévia. Para solicitar um fundo transparente, use background: "transparent". Use png (o padrão) ou webp, pois o formato jpeg não oferece suporte a fundos transparentes.
Na ferramenta de geração de imagens da API Responses, os modelos GPT Image compatíveis podem decidir se geram uma nova imagem ou editam uma imagem já presente na conversa. O parâmetro opcional action controla esse comportamento. Mantenha action em auto para que o modelo decida entre gerar e editar, ou defina o valor como generate ou edit para forçar a ação correspondente. Se você omitir o parâmetro, o valor padrão será auto.
Prompt revisado
Quando você usa a ferramenta de geração de imagens, o modelo da linha principal, como o gpt-5.5, revisa automaticamente o prompt para melhorar o desempenho.
Você pode acessar o prompt revisado no campo revised_prompt da chamada de geração de imagens:
1234567{ "id": "ig_123", "type": "image_generation_call", "status": "completed", "revised_prompt": "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.", "result": "..."}
Dicas para escrever prompts
A geração de imagens funciona melhor quando você usa termos como draw ou edit no prompt.
Por exemplo, para combinar imagens, em vez de usar combine ou merge, você pode dizer algo como “Edite a primeira imagem e acrescente este elemento da segunda imagem”.
Edição em várias etapas
Você pode editar imagens em etapas sucessivas usando os IDs de respostas ou imagens anteriores. Assim, é possível refinar as imagens ao longo da conversa.
A ferramenta de geração de imagens pode transmitir imagens parciais enquanto gera o resultado final. Assim, os usuários veem o progresso mais cedo, o que reduz a latência percebida.
Use o parâmetro partial_images para definir o número de imagens parciais (de 1 a 3).
Transmitir uma imagem
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33import OpenAI from "openai";import fs from "fs";const openai = new OpenAI();function saveBase64Image(filename, imageBase64) { const imageBuffer = Buffer.from(imageBase64, "base64"); fs.writeFileSync(filename, imageBuffer);}const stream = await openai.responses.create({ model: "gpt-6-astra", input: "Draw a gorgeous image of a river made of white owl feathers, snaking its way through a serene winter landscape", stream: true, tools: [ { type: "image_generation", model: "gpt-image-2.5-sunburst", partial_images: 2 }, ],});for await (const event of stream) { if (event.type === "response.image_generation_call.partial_image") { const idx = event.partial_image_index; saveBase64Image(`river-partial-${idx}.png`, event.partial_image_b64); } else if (event.type === "response.completed") { const imageData = event.response.output .filter((output) => output.type === "image_generation_call") .map((output) => output.result); if (imageData.length > 0) { saveBase64Image("river-final.png", imageData[0]); } }}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34from openai import OpenAIimport base64client = OpenAI()defsave_base64_image(filename, image_base64): image_bytes = base64.b64decode(image_base64)withopen(filename, "wb") as f: f.write(image_bytes)stream = client.responses.create(model="gpt-6-astra",input="Draw a gorgeous image of a river made of white owl feathers, snaking its way through a serene winter landscape",stream=True,tools=[ {"type": "image_generation", "model": "gpt-image-2.5-sunburst", "partial_images": 2} ],)for event in stream:if event.type =="response.image_generation_call.partial_image": idx = event.partial_image_index save_base64_image(f"river-partial-{idx}.png", event.partial_image_b64)elif event.type =="response.completed": image_data = [ output.resultfor output in event.response.outputif output.type =="image_generation_call" ]if image_data: save_base64_image("river-final.png", image_data[0])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49package mainimport ( "context" "encoding/base64" "fmt" "os" "github.com/openai/openai-go/v3" "github.com/openai/openai-go/v3/responses")func main() { client := openai.NewClient() stream := client.Responses.NewStreaming(context.Background(), responses.ResponseNewParams{ Model: "gpt-6-astra", Input: responses.ResponseNewParamsInputUnion{ OfString: openai.String("Draw a gorgeous image of a river made of white owl feathers, snaking its way through a serene winter landscape"), }, Tools: []responses.ToolUnionParam{{OfImageGeneration: &responses.ToolImageGenerationParam{Model: "gpt-image-2.5-sunburst", PartialImages: openai.Int(2)}}}, }) for stream.Next() { event := stream.Current() if event.Type == "response.image_generation_call.partial_image" { partial := event.AsResponseImageGenerationCallPartialImage() saveImage(fmt.Sprintf("river-partial-%d.png", partial.PartialImageIndex), partial.PartialImageB64) } if event.Type == "response.completed" { for _, output := range event.AsResponseCompleted().Response.Output { if output.Type == "image_generation_call" { saveImage("river-final.png", output.AsImageGenerationCall().Result) } } } } if err := stream.Err(); err != nil { panic(err) }}func saveImage(filename, encoded string) { image, err := base64.StdEncoding.DecodeString(encoded) if err != nil { panic(err) } if err := os.WriteFile(filename, image, 0o600); err != nil { panic(err) }}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33require "base64"require "openai"client = OpenAI::Client.newstream = client.responses.stream( model: "gpt-6-astra", input: "Generate an image of a river made of white owl feathers.", tools: [ { type: :image_generation, model: "gpt-image-2.5-sunburst", partial_images: 2 } ])stream.each do |event| case event when OpenAI::Models::Responses::ResponseImageGenCallPartialImageEvent image = Base64.strict_decode64(event.partial_image_b64) File.binwrite("river-partial-#{event.partial_image_index}.png", image) when OpenAI::Models::Responses::ResponseCompletedEvent image_call = event.response.output.find do |item| item.is_a?(OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall) end next unless image_call.is_a?(OpenAI::Models::Responses::ResponseOutputItem::ImageGenerationCall) File.binwrite( "river-final.png", Base64.strict_decode64(image_call.result) ) endend
Modelos compatíveis
Os modelos a seguir têm suporte documentado à ferramenta de geração de imagens da API Responses e não estão marcados para descontinuação. Use os IDs desses modelos no campo model de nível superior. Consulte a página de cada modelo para verificar a disponibilidade e os requisitos de acesso.