Package: pydalle
pydalle: A DALL·E 2 API Wrapper for PythonThis 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.InstallationInstall with all dependenciespip install pydalle[all]     # Install all dependencies, recommended for most usersPick and choose your dependenciespip 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)TipsGet access by signing up for theDALL·E 2 waitlist.Ensure your usage of DALL·E 2 abides by DALL·E 2'scontent policyandterms of use.Be mindful about how easy this library makes it for you to spend your money / DALL·E 2 credits.Getting StartedOnce you have installed pydalle, you can start using it by importing it and creating aDalleobject.
You can find all the available methods on theDalle class.importosfrompydalleimportDalleOPENAI_USERNAME=os.environ.get('OPENAI_USERNAME')OPENAI_PASSWORD=os.environ.get('OPENAI_PASSWORD')defmain():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...")iftasksandtasks[0].generations:example=tasks[0].generations[0].download()example.to_pil().show()# Convert the image to a PIL image and show itexample.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")forimageincompleted_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 transparentmask=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)forimageincompleted_inpainting_task.download():image.to_pil().show()if__name__=='__main__':main()For an equivalent async code example, seeexamples/dev_client_async.py.For examples of the low-level API and using this in a notebook, see
theexamples/low_leveldirectory.