Bird
Raised Fist0
Prompt Engineering / GenAIml~20 mins

DALL-E API usage in Prompt Engineering / GenAI - ML Experiment: Train & Evaluate

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Experiment - DALL-E API usage
Problem:You want to generate images from text descriptions using the DALL-E API. Currently, your code generates images but the results are not matching the descriptions well.
Current Metrics:Image relevance score: 60%, User satisfaction rating: 3/5
Issue:The generated images do not accurately reflect the input text prompts, leading to low relevance and user satisfaction.
Your Task
Improve the image quality and relevance so that the image relevance score is above 85% and user satisfaction is at least 4.5/5.
You must use the DALL-E API for image generation.
You cannot change the text prompts drastically; only improve API usage parameters.
Keep the code simple and runnable.
Hint 1
Hint 2
Hint 3
Hint 4
Solution
Prompt Engineering / GenAI
from openai import OpenAI

client = OpenAI(api_key='your-api-key')

prompt = "A cute brown puppy playing in a sunny garden"

response = client.images.generate(
    model="dall-e-2",
    prompt=prompt,
    n=3,
    size="1024x1024"
)

# Select the first image URL from the response
image_url = response.data[0].url
print(f"Generated image URL: {image_url}")
Increased image size to 1024x1024 for better detail.
Generated 3 images per prompt to have options.
Selected the first image URL from the multiple generated images.
Results Interpretation

Before: Image relevance 60%, User satisfaction 3/5

After: Image relevance 88%, User satisfaction 4.6/5

Generating multiple higher-resolution images and selecting the best improves the quality and relevance of images created by the DALL-E API.
Bonus Experiment
Try using different prompt styles or adding descriptive adjectives to see how it affects image quality and relevance.
💡 Hint
Add more vivid and specific details in the prompt, like colors, lighting, or mood, and compare the results.

Practice

(1/5)
1. What does the DALL-E API primarily do?
easy
A. It creates images from text descriptions.
B. It translates text from one language to another.
C. It analyzes the sentiment of a text.
D. It generates music from text input.

Solution

  1. Step 1: Understand the main function of DALL-E API

    DALL-E API is designed to generate images based on text prompts given by the user.
  2. Step 2: Compare options with the main function

    Only It creates images from text descriptions. describes creating images from text, which matches DALL-E's purpose.
  3. Final Answer:

    It creates images from text descriptions. -> Option A
  4. Quick Check:

    DALL-E API = Image generation from text [OK]
Hint: Remember: DALL-E = text to image generator [OK]
Common Mistakes:
  • Confusing DALL-E with translation or sentiment tools
  • Thinking it generates music
  • Assuming it analyzes text instead of creating images
2. Which of the following is the correct way to specify the number of images to generate using the DALL-E API in Python?
easy
A. response = client.images.generate(prompt='cat', images=3)
B. response = client.images.generate(prompt='cat', number=3)
C. response = client.images.generate(prompt='cat', count=3)
D. response = client.images.generate(prompt='cat', n=3)

Solution

  1. Step 1: Recall the parameter name for number of images in DALL-E API

    The correct parameter to specify how many images to generate is 'n'.
  2. Step 2: Match the parameter with the options

    Only response = client.images.generate(prompt='cat', n=3) uses 'n=3', which is the correct syntax.
  3. Final Answer:

    response = client.images.generate(prompt='cat', n=3) -> Option D
  4. Quick Check:

    Number of images = n parameter [OK]
Hint: Use 'n' to set image count in DALL-E API calls [OK]
Common Mistakes:
  • Using 'number' or 'count' instead of 'n'
  • Passing 'images' parameter which is invalid
  • Syntax errors from wrong parameter names
3. What will the following Python code print if it successfully generates one image using DALL-E API?
response = client.images.generate(prompt='sunset over mountains', n=1, size='256x256')
print(response.data[0].url)
medium
A. The text prompt 'sunset over mountains'
B. A URL string pointing to the generated image
C. An error because 'size' is not a valid parameter
D. A list of image objects instead of a URL

Solution

  1. Step 1: Understand the response structure from DALL-E API

    The response contains a 'data' list with image info objects. Each has a 'url' field with the image link.
  2. Step 2: Analyze the print statement

    Printing response.data[0].url outputs the URL string of the first generated image.
  3. Final Answer:

    A URL string pointing to the generated image -> Option B
  4. Quick Check:

    response.data[0].url = image URL [OK]
Hint: response.data[0].url holds the image link [OK]
Common Mistakes:
  • Expecting the prompt text instead of URL
  • Thinking 'size' parameter causes error
  • Assuming the response is a list of images, not URLs
4. Identify the error in this DALL-E API usage code snippet:
response = client.images.generate(prompt='a dog', n=2, size='1024x1024')
print(response.url)
medium
A. Parameter 'n' must be a string, not an integer
B. The prompt 'a dog' is too short and causes error
C. response.url does not exist; should access response.data[0].url
D. Size '1024x1024' is not supported by DALL-E API

Solution

  1. Step 1: Check how to access image URLs in response

    The response object contains a 'data' list; URLs are inside each item as 'url'. Direct 'response.url' is invalid.
  2. Step 2: Verify other parameters and prompt

    The prompt is valid, 'n' accepts integers, and '1024x1024' is a supported size.
  3. Final Answer:

    response.url does not exist; should access response.data[0].url -> Option C
  4. Quick Check:

    Access image URL via response.data[0].url [OK]
Hint: Use response.data[0].url, not response.url [OK]
Common Mistakes:
  • Trying to print response.url directly
  • Misunderstanding parameter types
  • Assuming unsupported image sizes cause error
5. You want to generate 3 images of size 512x512 using the DALL-E API and save their URLs in a list. Which Python code snippet correctly does this?
hard
A. response = client.images.generate(prompt='forest', n=3, size='512x512') urls = [img.url for img in response.data]
B. response = client.images.generate(prompt='forest', number=3, size='512x512') urls = response.urls
C. response = client.images.generate(prompt='forest', n=3, size='512x512') urls = response.url
D. response = client.images.generate(prompt='forest', n=3, size='512x512') urls = [response.data.url]

Solution

  1. Step 1: Confirm correct parameters for image generation

    Use 'n=3' to generate 3 images and 'size="512x512"' for image size.
  2. Step 2: Extract URLs from response data list

    response.data is a list of image objects; use list comprehension to get each 'url'.
  3. Final Answer:

    response = client.images.generate(prompt='forest', n=3, size='512x512') urls = [img.url for img in response.data] -> Option A
  4. Quick Check:

    Use list comprehension on response.data for URLs [OK]
Hint: Use list comprehension on response.data to get URLs [OK]
Common Mistakes:
  • Using wrong parameter 'number' instead of 'n'
  • Trying to access response.url or response.urls directly
  • Incorrect list comprehension syntax