Gebruik het hulpprogramma voor het genereren van afbeeldingen (preview)

Belangrijk

  • Het hulpprogramma voor het genereren van afbeeldingen vereist het gpt-image-1 model. Zie de Azure OpenAI-transparantienotitie voor beperkingen en verantwoorde AI-overwegingen.
  • U hebt ook een compatibel orchestratormodel (gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini, of gpt-4.1-nanoo3gpt-5 reeks) nodig dat is geïmplementeerd in hetzelfde Foundry-project.

Het hulpprogramma imagegeneratie in Microsoft Foundry Agent Service genereert afbeeldingen van tekstprompts in gesprekken en werkstromen met meerdere paden. Het Foundry-model van de agent organiseert de aanvraag voor het genereren van afbeeldingen en retourneert base64-gecodeerde uitvoer die u in een bestand kunt opslaan.

Gebruiksondersteuning

In de volgende tabel ziet u SDK- en installatieondersteuning.

ondersteuning voor Microsoft Foundry Python SDK C#SDK JavaScript SDK Java SDK REST API Basisagent instellen Standaardagent configureren
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Voorwaarden

  • Een Azure-account met een actief abonnement.
  • Een Foundry-project.
  • Een basis- of standaardagentomgeving. Zie de installatie van de agentomgeving.
  • Machtigingen voor het maken en beheren van agentversies in het project.
  • Twee modelimplementaties in hetzelfde Foundry-project:
    • Een compatibele Azure OpenAI-modelimplementatie voor de agent (bijvoorbeeld gpt-4o).
    • Een implementatie van een beeldgeneratiemodel (gpt-image-1).

Het hulpmiddel voor het genereren van afbeeldingen configureren

  1. Implementeer uw orchestratormodel (bijvoorbeeld gpt-4o) in uw Foundry-project.
  2. Implementeren gpt-image-1 in hetzelfde Foundry-project.
  3. Bevestig uw regio en modelondersteuning voor afbeeldingsgeneratie. Bekijk Best practices voor het gebruik van tools in Microsoft Foundry Agent Service.

Codevoorbeelden

Voordat u begint, installeert u het nieuwste SDK-pakket. De .NET SDK is momenteel in een preview-fase. Zie de quickstart voor installatie-instructies voor pakketten.

Een agent aanmaken met de afbeeldingengeneratietool

Met dit voorbeeld maakt u een agent met het hulpprogramma voor het genereren van afbeeldingen, genereert u een afbeelding en slaat u deze op in een bestand.

import base64
import os

from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import PromptAgentDefinition, ImageGenTool

# Format: "https://resource_name.ai.azure.com/api/projects/project_name"
PROJECT_ENDPOINT = "your_project_endpoint"
IMAGE_MODEL = "gpt-image-1"

# Create clients to call Foundry API
project = AIProjectClient(
    endpoint=PROJECT_ENDPOINT,
    credential=DefaultAzureCredential(),
)
openai = project.get_openai_client()

# Create an agent with the image generation tool
agent = project.agents.create_version(
    agent_name="agent-image-generation",
    definition=PromptAgentDefinition(
        model="gpt-4.1-mini",
        instructions="Generate images based on user prompts.",
        tools=[ImageGenTool(model=IMAGE_MODEL, quality="low", size="1024x1024")],
    ),
    description="Agent for image generation.",
)
print(f"Agent created (id: {agent.id}, name: {agent.name}, version: {agent.version})")

# Generate an image using the agent
response = openai.responses.create(
    input="Generate an image of the Microsoft logo.",
    extra_headers={
        "x-ms-oai-image-generation-deployment": IMAGE_MODEL,
    },
    extra_body={"agent_reference": {"name": agent.name, "type": "agent_reference"}},
)

# Clean up the agent
project.agents.delete_version(agent_name=agent.name, agent_version=agent.version)

# Extract and save the generated image
image_data = [output.result for output in response.output if output.type == "image_generation_call"]
if image_data and image_data[0]:
    file_path = os.path.abspath("microsoft.png")
    with open(file_path, "wb") as f:
        f.write(base64.b64decode(image_data[0]))
    print(f"Image saved to: {file_path}")

Voorbeeld voor het genereren van afbeeldingen in Azure. AI. Extensions.OpenAI

In dit voorbeeld genereert u een afbeelding op basis van een eenvoudige prompt. De code in dit voorbeeld is synchroon. Zie voor een asynchroon voorbeeld de sample-code in de Azure SDK voor .NET opslagplaats op GitHub.

using System;
using Azure.AI.Projects;
using Azure.AI.Extensions.OpenAI;
using Azure.Identity;

// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
var projectEndpoint = "your_project_endpoint";
var imageModel = "gpt-image-1";

// Create the AI Project client with custom header policy
AIProjectClientOptions projectOptions = new();
projectOptions.AddPolicy(new HeaderPolicy(imageModel), PipelinePosition.PerCall);

// Create the AI Project client
AIProjectClient projectClient = new(
    endpoint: new Uri(projectEndpoint),
    tokenProvider: new DefaultAzureCredential(),
    options: projectOptions
);

// Use the client to create the versioned agent object.
// To generate images, we need to provide agent with the ImageGenerationTool
// when creating this tool. The ImageGenerationTool parameters include
// the image generation model, image quality and resolution.
// Supported image generation models include gpt-image-1.
DeclarativeAgentDefinition agentDefinition = new(model: "gpt-4.1-mini")
{
Instructions = "Generate images based on user prompts.",
Tools = {
        ResponseTool.CreateImageGenerationTool(
            model: imageModel,
            quality: ImageGenerationToolQuality.Low,
            size:ImageGenerationToolSize.W1024xH1024
        )
    }
};
AgentVersion agentVersion = projectClient.AgentAdministrationClient.CreateAgentVersion(
    agentName: "myAgent",
    options: new(agentDefinition));

ProjectOpenAIClient openAIClient = projectClient.GetProjectOpenAIClient();
ProjectResponsesClient responseClient = openAIClient.GetProjectResponsesClientForAgent(new AgentReference(name: agentVersion.Name));

ResponseResult response = responseClient.CreateResponse("Generate parody of Newton with apple.");

// Parse the ResponseResult object and save the generated image.
foreach (ResponseItem item in response.OutputItems)
{
    if (item is ImageGenerationCallResponseItem imageItem)
    {
        File.WriteAllBytes("newton.png", imageItem.ImageResultBytes.ToArray());
        Console.WriteLine($"Image downloaded and saved to: {Path.GetFullPath("newton.png")}");
    }
}

// Clean up resources by deleting the Agent.
projectClient.AgentAdministrationClient.DeleteAgentVersion(agentName: agentVersion.Name, agentVersion: agentVersion.Version);

// To use image generation, provide the custom header to web requests,
// which contain the model deployment name, for example:
// `x-ms-oai-image-generation-deployment: gpt-image-1`.
// To implement it, create a custom header policy.
internal class HeaderPolicy(string image_deployment) : PipelinePolicy
{
    private const string image_deployment_header = "x-ms-oai-image-generation-deployment";

    public override void Process(PipelineMessage message, IReadOnlyList<PipelinePolicy> pipeline, int currentIndex)
    {
        message.Request.Headers.Add(image_deployment_header, image_deployment);
        ProcessNext(message, pipeline, currentIndex);
    }

    public override async ValueTask ProcessAsync(PipelineMessage message, IReadOnlyList<PipelinePolicy> pipeline, int currentIndex)
    {
        // Add your desired header name and value
        message.Request.Headers.Add(image_deployment_header, image_deployment);
        await ProcessNextAsync(message, pipeline, currentIndex);
    }
}

Verwachte uitvoer

Wanneer u het voorbeeld uitvoert, ziet u de volgende uitvoer:

Agent created (id: <agent-id>, name: myAgent, version: 1)
Image downloaded and saved to: /path/to/newton.png
Agent deleted

Een agent aanmaken met de afbeeldingengeneratietool

Een toegangstoken ophalen:

export AGENT_TOKEN=$(az account get-access-token --scope "https://ai.azure.com/.default" --query accessToken -o tsv)

In het volgende voorbeeld wordt een agent gemaakt die gebruikmaakt van het hulpprogramma voor het genereren van afbeeldingen.

curl -X POST "$FOUNDRY_PROJECT_ENDPOINT/agents?api-version=v1" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -d '{
    "name": "image-gen-agent",
    "description": "Test agent for image generation capabilities",
    "definition": {
      "kind": "prompt",
      "model": "'$FOUNDRY_MODEL_DEPLOYMENT_NAME'",
      "tools": [
        {
          "type": "image_generation"
        }
      ],
      "instructions": "You are a creative assistant that generates images when requested. Please respond to image generation requests clearly and concisely."
    }
  }'

Een antwoord maken

curl -X POST "$FOUNDRY_PROJECT_ENDPOINT/openai/v1/responses" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "x-ms-oai-image-generation-deployment: $IMAGE_GENERATION_MODEL_DEPLOYMENT_NAME" \
  -d '{
    "agent": {
      "type": "agent_reference",
      "name": "image-gen-agent"
    },
    "input": [{
      "type": "message",
      "role": "user",
      "content": [
        {
          "type": "input_text",
          "text": "Please generate small image of a sunset over a mountain lake."
        }
      ]
    }],
    "stream": false
  }'

Verwachte uitvoer

De antwoord-JSON bevat een image_generation_call uitvoeritem met een result veld met base64-gecodeerde afbeeldingsgegevens:

{
  "id": "resp_<id>",
  "status": "completed",
  "output": [
    {
      "type": "image_generation_call",
      "result": "<base64-encoded-image-data>",
      "status": "completed"
    },
    {
      "type": "message",
      "role": "assistant",
      "content": [
        {
          "type": "output_text",
          "text": "Here is the image of a sunset over a mountain lake."
        }
      ]
    }
  ]
}

Als u de afbeelding wilt extraheren en opslaan, sluist u het antwoord door jq en base64:

RESPONSE=$(curl -s -X POST "$FOUNDRY_PROJECT_ENDPOINT/openai/v1/responses" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AGENT_TOKEN" \
  -H "x-ms-oai-image-generation-deployment: $IMAGE_GENERATION_MODEL_DEPLOYMENT_NAME" \
  -d '{ ... }')

echo "$RESPONSE" | jq -r '.output[] | select(.type=="image_generation_call") | .result' \
  | base64 --decode > generated_image.png

Een agent maken met een afbeeldingsgeneratietool

In dit voorbeeld ziet u hoe u een AI-agent maakt met mogelijkheden voor het genereren van afbeeldingen met behulp van de Azure AI Projects-client. De agent genereert afbeeldingen op basis van tekstprompts en slaat deze op in bestanden. Zie de sample-code in de Azure SDK voor JavaScript-opslagplaats op GitHub voor een JavaScript-voorbeeld.

import { DefaultAzureCredential } from "@azure/identity";
import { AIProjectClient } from "@azure/ai-projects";
import * as fs from "fs";
import * as path from "path";
import { fileURLToPath } from "url";

// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
const PROJECT_ENDPOINT = "your_project_endpoint";
const IMAGE_MODEL = "gpt-image-1";

export async function main(): Promise<void> {
  // Create clients to call Foundry API
  const project = new AIProjectClient(PROJECT_ENDPOINT, new DefaultAzureCredential());
  const openai = project.getOpenAIClient();

  // Create Agent with image generation tool
  const agent = await project.agents.createVersion("agent-image-generation", {
    kind: "prompt",
    model: "gpt-4.1-mini",
    instructions: "Generate images based on user prompts",
    tools: [
      {
        type: "image_generation",
        quality: "low",
        size: "1024x1024",
      },
    ],
  });
  console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);

  // Generate image using the agent
  const response = await openai.responses.create(
    {
      input: "Generate an image of Microsoft logo.",
    },
    {
      body: { agent: { name: agent.name, type: "agent_reference" } },
      headers: { "x-ms-oai-image-generation-deployment": IMAGE_MODEL },
    },
  );

  // Extract and save the generated image
  const imageData = response.output?.filter((output) => output.type === "image_generation_call");

  if (imageData && imageData.length > 0 && imageData[0].result) {
    const __filename = fileURLToPath(import.meta.url);
    const __dirname = path.dirname(__filename);
    const filename = "microsoft.png";
    const filePath = path.join(__dirname, filename);

    // Decode base64 and save to file
    const imageBuffer = Buffer.from(imageData[0].result, "base64");
    fs.writeFileSync(filePath, imageBuffer);

    console.log(`Image downloaded and saved to: ${path.resolve(filePath)}`);
  } else {
    console.log("No image data found in the response.");
  }

  // Clean up resources
  await project.agents.deleteVersion(agent.name, agent.version);
}

main().catch((err) => {
  console.error("The sample encountered an error:", err);
});

Verwachte uitvoer

Wanneer u het voorbeeld uitvoert, ziet u de volgende uitvoer:

Agent created (id: <agent-id>, name: agent-image-generation, version: 1)
Image downloaded and saved to: /path/to/microsoft.png

Gebruik beeldgeneratie in een Java-agent

Voeg de afhankelijkheid toe aan uw pom.xml:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-ai-agents</artifactId>
    <version>2.0.0</version>
</dependency>

Een agent maken met beeldgeneratie

import com.azure.ai.agents.AgentsClient;
import com.azure.ai.agents.AgentsClientBuilder;
import com.azure.ai.agents.ResponsesClient;
import com.azure.ai.agents.models.*;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.openai.models.responses.Response;
import com.openai.models.responses.ResponseCreateParams;

import java.util.Collections;

public class ImageGenerationExample {
    public static void main(String[] args) {
        // Format: "https://resource_name.ai.azure.com/api/projects/project_name"
        String projectEndpoint = "your_project_endpoint";
        String imageModel = "gpt-image-1";

        AgentsClientBuilder builder = new AgentsClientBuilder()
            .credential(new DefaultAzureCredentialBuilder().build())
            .endpoint(projectEndpoint);

        AgentsClient agentsClient = builder.buildAgentsClient();
        ResponsesClient responsesClient = builder.buildResponsesClient();

        // Create image generation tool with model, quality, and size
        ImageGenTool imageGenTool = new ImageGenTool()
            .setModel(ImageGenToolModel.fromString(imageModel))
            .setQuality(ImageGenToolQuality.LOW)
            .setSize(ImageGenToolSize.fromString("1024x1024"));

        // Create agent with image generation tool
        PromptAgentDefinition agentDefinition = new PromptAgentDefinition("gpt-4.1-mini")
            .setInstructions("You are a creative assistant that can generate images based on descriptions.")
            .setTools(Collections.singletonList(imageGenTool));

        AgentVersionDetails agent = agentsClient.createAgentVersion("image-gen-agent", agentDefinition);
        System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion());

        // Create a response
        AgentReference agentReference = new AgentReference(agent.getName())
            .setVersion(agent.getVersion());

        Response response = responsesClient.createAzureResponse(
            new AzureCreateResponseOptions().setAgentReference(agentReference),
            ResponseCreateParams.builder()
                .input("Generate an image of a sunset over a mountain range"));

        // The response output includes image_generation_call items with base64-encoded image data.
        // Extract and save the image using the response output items.
        System.out.println("Response status: " + response.status().map(Object::toString).orElse("unknown"));
        System.out.println("Output items: " + response.output().size());

        // Clean up
        agentsClient.deleteAgentVersion(agent.getName(), agent.getVersion());
    }
}

Opmerking

De response.output() lijst bevat image_generation_call items met met base64 gecodeerde afbeeldingsgegevens in het result veld. Hiermee java.util.Base64.getDecoder().decode() converteert u het resultaat naar bytes en schrijft u ze naar een bestand.

Verwachte uitvoer

Agent created: image-gen-agent (version 1)
Response status: completed
Output items: 2

Wanneer gebruikt u de tool voor het genereren van afbeeldingen?

Het hulpprogramma voor het genereren van afbeeldingen in Agent Service biedt voordelen ten opzichte van de Azure OpenAI Image API.

Voordeel Beschrijving
Streaming Gedeeltelijke uitvoer van afbeeldingen weergeven tijdens het genereren om de waargenomen latentie te verbeteren.
Flexibele invoer Accepteer afbeeldingsbestand-id's als invoer, naast onbewerkte afbeeldingsbytes.

Optionele parameters

Pas de afbeeldingsgeneratie aan door deze optionele parameters op te geven bij het maken van het hulpprogramma:

Parameter Beschrijving
size Afbeeldingsgrootte. Een van1024x1024, 1024x1536, of 1536x1024auto.
quality Afbeeldingskwaliteit. Een vanlow, medium, of highauto.
background Achtergrondtype. Een van transparent, opaqueof auto.
output_format Uitvoerindeling. Een van png, webpof jpeg.
output_compression Compressieniveau voor webp en jpeg uitvoer (0-100).
moderation Beheerniveau voor de gegenereerde afbeelding. Een van auto of low.
partial_images Aantal gedeeltelijke afbeeldingen dat moet worden gegenereerd in de streamingmodus (0-3).
input_image_mask Optioneel masker voor inpainting. Geef image_url (base64) of file_id.

Opmerking

De tijd voor het genereren van afbeeldingen varieert op basis van de quality instelling en de complexiteit van de prompt. Voor tijdgevoelige toepassingen kunt u overwegen streaming te gebruiken quality: "low" of in te schakelen partial_images .

Gebruik de antwoorden-API als u het volgende wilt doen:

  • Maak ervaringen met gespreksafbeeldingen met GPT Image.
  • Stream gedeeltelijke afbeeldingsresultaten tijdens het genereren voor een soepelere gebruikerservaring.

Effectieve tekst-naar-afbeeldingsprompts schrijven

Effectieve prompts produceren betere afbeeldingen. Beschrijf het onderwerp, de visuele stijl en de gewenste samenstelling. Gebruik actiewoorden zoals 'tekenen', 'maken' of 'bewerken' om de uitvoer van het model te begeleiden.

Inhoudsfiltering kan het genereren van afbeeldingen blokkeren als de service onveilige inhoud in uw prompt detecteert. Zie Overzicht van kaders en besturingselementen voor meer informatie.

Tip

Voor een grondig overzicht van hoe u tekstprompts kunt aanpassen om verschillende soorten afbeeldingen te genereren, raadpleegt u techniektechnieken voor afbeeldingsprompts.

Uitvoering van hulpprogramma controleren

Gebruik een van de volgende benaderingen om te bevestigen dat het genereren van afbeeldingen succesvol is uitgevoerd.

  • Zoek in de reactielading van het antwoord naar een uitvoeritem met type ingesteld op image_generation_call.
  • Open de tracerings-/foutopsporingsmodus in de Foundry-portal voor uw run om de oproep van de tool te bevestigen en invoer en uitvoer te controleren.

Wanneer het genereren van afbeeldingen slaagt, bevat het antwoord een image_generation_call uitvoeritem met een result veld met base64-gecodeerde afbeeldingsgegevens.

Als u alleen tekstuitvoer en geen image_generation_call item ziet, wordt de aanvraag mogelijk niet doorgestuurd naar het genereren van afbeeldingen. Bekijk de sectie probleemoplossing.

Probleemoplossing

Probleem Oorzaak Resolutie
Het genereren van afbeeldingen mislukt Ontbrekende implementatie Controleer of zowel het orchestratormodel (bijvoorbeeld gpt-4o) als gpt-image-1 de implementaties aanwezig zijn in hetzelfde Foundry-project.
Het genereren van afbeeldingen mislukt Ontbrekende of onjuiste koptekst Controleer of de header x-ms-oai-image-generation-deployment aanwezig is in het responsverzoek en overeenkomt met de naam van uw image generation-implementatie.
Agent maakt gebruik van verkeerde implementatie Onjuiste configuratie van modelnaam Controleer of de naam van het orchestratormodel in uw agentdefinitie anders is dan de implementatienaam voor image-generatie.
Prompt produceert geen afbeelding Het filteren van inhoud heeft de aanvraag geblokkeerd Controleer de logboeken voor het filteren van inhoud. Zie overzicht van kaders en besturingselementen voor richtlijnen over acceptabele prompts.
Hulpprogramma niet beschikbaar Beperking van de regio of het model Controleer of het hulpprogramma voor het genereren van afbeeldingen beschikbaar is in uw regio en met uw orchestratormodel. Zie aanbevolen procedures voor het gebruik van hulpprogramma's.
Gegenereerde afbeelding heeft een lage kwaliteit Prompt ontbreekt details Geef specifiekere en gedetailleerde aanwijzingen waarin de gewenste afbeeldingsstijl, samenstelling en elementen worden beschreven.
Time-out voor de beeldgeneratie Grote of complexe beeldaanvraag Vereenvoudig de prompt of verhoog de time-outinstellingen. Overweeg complexe aanvragen op te breken in meerdere eenvoudigere aanvragen.
Onverwachte afbeeldingsinhoud Dubbelzinnige prompt Verfijn uw vraag om specifieker te zijn. Neem negatieve aanwijzingen op om ongewenste elementen uit te sluiten.