Image Generation Agent

Generate and save an image with OpenAITools and GPT Image 2.

The source-fidelity code uses OpenAIChat and gpt-image-1 despite its Responses category. Replace them with OpenAIResponses and gpt-image-2 before running the example.

image_generation_agent.py
"""Example: Using the OpenAITools Toolkit for Image Generation

This script demonstrates how to use the `OpenAITools` toolkit, which includes a tool for generating images using OpenAI's DALL-E within an Agno Agent.

Example prompts to try:
- "Create a surreal painting of a floating city in the clouds at sunset"
- "Generate a photorealistic image of a cozy coffee shop interior"
- "Design a cute cartoon mascot for a tech startup"
- "Create an artistic portrait of a cyberpunk samurai"

Run `uv pip install openai agno` to install the necessary dependencies.
"""

from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools.openai import OpenAITools
from agno.utils.media import save_base64_data

# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------

agent = Agent(
    model=OpenAIChat(id="gpt-5.6-luna"),
    tools=[OpenAITools(image_model="gpt-image-1")],
    markdown=True,
)

response = agent.run(
    "Generate a photorealistic image of a cozy coffee shop interior",
)

if response.images and response.images[0].content:
    save_base64_data(str(response.images[0].content), "tmp/coffee_shop.png")

# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------

if __name__ == "__main__":
    pass

Run the Example

Set up your virtual environment

uv venv --python 3.12
source .venv/bin/activate

Install dependencies

uv pip install -U agno openai

Export your OpenAI API key

export OPENAI_API_KEY="your_openai_api_key_here"

Use the Responses API

Replace the OpenAIChat import and constructor with OpenAIResponses(id="gpt-5.2").

Encode the image bytes

Add import base64. Encode response.images[0].content with base64.b64encode(...).decode("utf-8"), then pass that string to save_base64_data.

Update the image model

When saving the code, replace gpt-image-1 with gpt-image-2.

Run the example

Save the code above as image_generation_agent.py, then run:

python image_generation_agent.py

Full source: cookbook/90_models/openai/responses/image_generation_agent.py