Skip to main content

A library for providing programmatic access to the DALL·E 2 API

Project description

pydalle: A DALL·E 2 API Wrapper for Python

PyPI - Python Version PyPI - Wheel PyPI - License

This library provides basic programmatic access to the DALL·E 2 API.

The intent of this library is to provide researchers with a means to easily layout results from DALL·E 2 into a jupyter notebook or similar.

pydalle has two main modes of use:

  • pydalle.Dalle: This is the main class of the library. It provides a user-friendly interface to the DALL·E 2 API. Read more here.
  • pydalle.imperative.api.labs: This module provides a set of lower-level functions that can be used to interact with the DALL·E 2 API. Read more here.

Installation

Install with all dependencies

pip install pydalle[all]     # Install all dependencies, recommended for most users

Pick and choose your dependencies

pip install pydalle          # Just install the library with no optional dependencies
pip install pydalle[sync]    # Also installs requests (for synchronous networking)
pip install pydalle[async]   # Also installs aiohttp and aiofiles  (required for async networking / file handling)
pip install pydalle[images]  # Also installs Pillow and numpy (required for help with image processing)

Tips

  • Get access by signing up for the DALL·E 2 waitlist.

  • Ensure your usage of DALL·E 2 abides by DALL·E 2's content policy and terms of use.

  • Be mindful about how easy this library makes it for you to spend your money / DALL·E 2 credits.

Getting Started

Once you have installed pydalle, you can start using it by importing it and creating a Dalle object. You can find all the available methods on the Dalle class.

import os

from pydalle import Dalle

OPENAI_USERNAME = os.environ.get('OPENAI_USERNAME')
OPENAI_PASSWORD = os.environ.get('OPENAI_PASSWORD')


def main():
    client = Dalle(OPENAI_USERNAME, OPENAI_PASSWORD)
    print(f"Client created. {client.get_credit_summary().aggregate_credits} credits remaining...")
    tasks = client.get_tasks(limit=5)
    print(f"{len(tasks)} tasks found...")

    print("Attempting to download a generation of the first task and show off some built-in helpers...")
    if tasks and tasks[0].generations:
        example = tasks[0].generations[0].download()
        example.to_pil().show()  # Convert the image to a PIL image and show it
        example.to_pil_masked(x1=0.5, y1=0, x2=1, y2=1).show()  # Show a version with left side transparent (for edits)
        example.to_pil_padded(0.5).show()  # Show w/ 50% padding around the image, centered at (50%, 50%)
        example.to_pil_padded(0.4, cx=0.25, cy=0.25).show()  # Show w/ 40% padding, centered at (25%, 25%)

    print("Attempting to do a text2im task...")
    completed_text2im_task = client.text2im("A cute cat")
    for image in completed_text2im_task.download():
        image.to_pil().show()

    print("Attempting to create variations task on the first cat...")
    first_generation = completed_text2im_task.generations[0]
    completed_variation_task = first_generation.variations()
    first_variation = completed_variation_task.generations[0]
    first_image = first_variation.download()
    first_image.to_pil().show()

    print("Attempting to create inpainting task and showing the mask...")
    # Make the right-side of the image transparent
    mask = first_image.to_pil_masked(x1=0.5, y1=0, x2=1, y2=1)
    mask.show("inpainting mask")
    completed_inpainting_task = first_generation.inpainting("A cute cat, with a dark side", mask)
    for image in completed_inpainting_task.download():
        image.to_pil().show()


if __name__ == '__main__':
    main()

For an equivalent async code example, see examples/dev_client_async.py.

For examples of the low-level API and using this in a notebook, see the examples/low_level directory.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydalle-0.2.0.tar.gz (25.8 kB view details)

Uploaded Source

Built Distribution

pydalle-0.2.0-py3-none-any.whl (31.8 kB view details)

Uploaded Python 3

File details

Details for the file pydalle-0.2.0.tar.gz.

File metadata

  • Download URL: pydalle-0.2.0.tar.gz
  • Upload date:
  • Size: 25.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for pydalle-0.2.0.tar.gz
Algorithm Hash digest
SHA256 ef63a0ada8e9d44d8cdecefaee7efd89902ad92802e708fdcc838733de3b4d63
MD5 bd03a2665104c1fc85b15a6c8c69e394
BLAKE2b-256 f9840e1eddda7bac4380386734b00206cbe917d87faca9c124f77c60ebb6a695

See more details on using hashes here.

File details

Details for the file pydalle-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: pydalle-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 31.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.7

File hashes

Hashes for pydalle-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d3c2b80e0bffb787495e95e7c3f808c1a2dabf052af662ee7955a20068fe21d8
MD5 4f934c14813799b24967cc39aab25e1b
BLAKE2b-256 ebd3b1dfae2f9416be887440ef7d630a0a8310e47ad2871f62d8dfead0d14f12

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page