2024-03-15 23:11:53 +01:00
{
"cells": [
{
"cell_type": "markdown",
"id": "a1bbe66b-3784-4da2-a5ca-5406a4d0c843",
"metadata": {},
"source": [
2024-03-31 23:53:35 +01:00
"# Generate Dalle Images With Conversable Agents"
2024-03-15 23:11:53 +01:00
]
},
{
"cell_type": "markdown",
"id": "fa341ad5-32f0-4e4b-8869-e19f19471d81",
"metadata": {},
"source": [
2024-03-31 23:53:35 +01:00
"This notebook illustrates how to add the image generation capability to a conversable agent. \n",
2024-03-15 23:11:53 +01:00
"\n",
2024-03-31 23:53:35 +01:00
"````{=mdx}\n",
":::info Requirements\n",
"Some extra dependencies are needed for this notebook, which can be installed via pip:\n",
"\n",
"```bash\n",
"pip install pyautogen[lmm]\n",
"```\n",
"\n",
"For more information, please refer to the [installation guide](/docs/installation/).\n",
":::\n",
"````\n",
"First, let's import all the required modules to run this example."
2024-03-15 23:11:53 +01:00
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "b3951ffc-ab4e-4bf6-bc36-f0d7f84c5a40",
"metadata": {},
"outputs": [],
"source": [
"import os\n",
"import re\n",
"from typing import Dict, Optional\n",
"\n",
2024-04-05 10:26:06 +08:00
"from IPython.display import display\n",
2024-03-15 23:11:53 +01:00
"from PIL.Image import Image\n",
"\n",
"import autogen\n",
"from autogen.agentchat.contrib import img_utils\n",
"from autogen.agentchat.contrib.capabilities import generate_images\n",
2024-04-05 10:26:06 +08:00
"from autogen.cache import Cache\n",
"from autogen.oai import openai_utils"
2024-03-15 23:11:53 +01:00
]
},
{
"cell_type": "markdown",
"id": "156c6db3-fb95-4ff4-803b-81c105a095e2",
"metadata": {},
"source": [
2024-03-31 23:53:35 +01:00
"Let's define our LLM configs."
2024-03-15 23:11:53 +01:00
]
},
{
"cell_type": "code",
2024-03-31 23:53:35 +01:00
"execution_count": 2,
2024-03-15 23:11:53 +01:00
"id": "104db7e8-e30a-4012-916d-5f1622e5da02",
"metadata": {},
"outputs": [],
"source": [
"gpt_config = {\n",
" \"config_list\": [{\"model\": \"gpt-4-turbo-preview\", \"api_key\": os.environ[\"OPENAI_API_KEY\"]}],\n",
" \"timeout\": 120,\n",
" \"temperature\": 0.7,\n",
"}\n",
"gpt_vision_config = {\n",
" \"config_list\": [{\"model\": \"gpt-4-vision-preview\", \"api_key\": os.environ[\"OPENAI_API_KEY\"]}],\n",
" \"timeout\": 120,\n",
" \"temperature\": 0.7,\n",
"}\n",
"dalle_config = {\n",
2024-03-31 23:53:35 +01:00
" \"config_list\": [{\"model\": \"dall-e-3\", \"api_key\": os.environ[\"OPENAI_API_KEY\"]}],\n",
2024-03-15 23:11:53 +01:00
" \"timeout\": 120,\n",
" \"temperature\": 0.7,\n",
"}"
]
},
{
"cell_type": "markdown",
"id": "57cec727-c237-4205-8681-e8a792f0a242",
"metadata": {},
"source": [
2024-03-31 23:53:35 +01:00
"````{=mdx}\n",
":::tip\n",
"Learn more about configuring LLMs for agents [here](/docs/topics/llm_configuration).\n",
":::\n",
"````\n",
"\n",
2024-03-15 23:11:53 +01:00
"Our system will consist of 2 main agents:\n",
2024-03-31 23:53:35 +01:00
"1. Image generator agent.\n",
"2. Critic agent.\n",
2024-03-15 23:11:53 +01:00
"\n",
"The image generator agent will carry a conversation with the critic, and generate images based on the critic's requests."
]
},
{
"cell_type": "code",
2024-03-31 23:53:35 +01:00
"execution_count": 3,
2024-03-15 23:11:53 +01:00
"id": "132e57ea-a041-4c4d-99ca-b0616505b6be",
"metadata": {},
"outputs": [],
"source": [
"CRITIC_SYSTEM_MESSAGE = \"\"\"You need to improve the prompt of the figures you saw.\n",
2024-03-31 23:53:35 +01:00
"How to create an image that is better in terms of color, shape, text (clarity), and other things.\n",
2024-03-15 23:11:53 +01:00
"Reply with the following format:\n",
"\n",
"CRITICS: the image needs to improve...\n",
"PROMPT: here is the updated prompt!\n",
2024-03-31 23:53:35 +01:00
"\n",
"If you have no critique or a prompt, just say TERMINATE\n",
2024-03-15 23:11:53 +01:00
"\"\"\""
]
},
{
"cell_type": "code",
2024-03-31 23:53:35 +01:00
"execution_count": 4,
2024-03-15 23:11:53 +01:00
"id": "427233a0-190b-4acd-80a3-c5951609b337",
"metadata": {},
"outputs": [],
"source": [
2024-03-31 23:53:35 +01:00
"def _is_termination_message(msg) -> bool:\n",
" # Detects if we should terminate the conversation\n",
" if isinstance(msg.get(\"content\"), str):\n",
" return msg[\"content\"].rstrip().endswith(\"TERMINATE\")\n",
" elif isinstance(msg.get(\"content\"), list):\n",
" for content in msg[\"content\"]:\n",
" if isinstance(content, dict) and \"text\" in content:\n",
" return content[\"text\"].rstrip().endswith(\"TERMINATE\")\n",
" return False\n",
"\n",
2024-04-15 06:48:50 +05:30
"\n",
2024-03-15 23:11:53 +01:00
"def critic_agent() -> autogen.ConversableAgent:\n",
" return autogen.ConversableAgent(\n",
" name=\"critic\",\n",
" llm_config=gpt_vision_config,\n",
" system_message=CRITIC_SYSTEM_MESSAGE,\n",
" max_consecutive_auto_reply=3,\n",
" human_input_mode=\"NEVER\",\n",
2024-03-31 23:53:35 +01:00
" is_termination_msg=lambda msg: _is_termination_message(msg),\n",
2024-03-15 23:11:53 +01:00
" )\n",
"\n",
"\n",
"def image_generator_agent() -> autogen.ConversableAgent:\n",
" # Create the agent\n",
" agent = autogen.ConversableAgent(\n",
2024-03-31 23:53:35 +01:00
" name=\"dalle\",\n",
" llm_config=gpt_vision_config,\n",
" max_consecutive_auto_reply=3,\n",
" human_input_mode=\"NEVER\",\n",
" is_termination_msg=lambda msg: _is_termination_message(msg),\n",
2024-03-15 23:11:53 +01:00
" )\n",
"\n",
" # Add image generation ability to the agent\n",
" dalle_gen = generate_images.DalleImageGenerator(llm_config=dalle_config)\n",
" image_gen_capability = generate_images.ImageGeneration(\n",
2024-03-31 23:53:35 +01:00
" image_generator=dalle_gen, text_analyzer_llm_config=gpt_config\n",
2024-03-15 23:11:53 +01:00
" )\n",
"\n",
" image_gen_capability.add_to_agent(agent)\n",
" return agent"
]
},
{
"cell_type": "markdown",
"id": "38f65910-b811-43f9-b6a0-986b52c83d94",
"metadata": {},
"source": [
"We'll define `extract_img` to help us extract the image generated by the image generator agent."
]
},
{
"cell_type": "code",
2024-03-31 23:53:35 +01:00
"execution_count": 5,
2024-03-15 23:11:53 +01:00
"id": "ff882a30-0f1f-4c6a-8951-9e11df48bc26",
"metadata": {},
"outputs": [],
"source": [
"def extract_images(sender: autogen.ConversableAgent, recipient: autogen.ConversableAgent) -> Image:\n",
" images = []\n",
" all_messages = sender.chat_messages[recipient]\n",
"\n",
" for message in reversed(all_messages):\n",
" # The GPT-4V format, where the content is an array of data\n",
" contents = message.get(\"content\", [])\n",
" for content in contents:\n",
" if isinstance(content, str):\n",
" continue\n",
" if content.get(\"type\", \"\") == \"image_url\":\n",
" img_data = content[\"image_url\"][\"url\"]\n",
" images.append(img_utils.get_pil_image(img_data))\n",
"\n",
" if not images:\n",
" raise ValueError(\"No image data found in messages.\")\n",
"\n",
" return images"
]
},
{
"cell_type": "markdown",
"id": "d804f33b-3fb7-4756-ada8-01da371994bb",
"metadata": {},
"source": [
"Start the converstion"
]
},
{
"cell_type": "code",
2024-03-31 23:53:35 +01:00
"execution_count": 6,
2024-03-15 23:11:53 +01:00
"id": "ed01470b-ad59-483d-990e-772d27e0764a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mdalle\u001b[0m (to critic):\n",
"\n",
2024-03-31 23:53:35 +01:00
"A happy dog wearing a shirt saying 'I Love AutoGen'. Make sure the text is clear.\n",
2024-03-15 23:11:53 +01:00
"\n",
"--------------------------------------------------------------------------------\n",
"\u001b[33mcritic\u001b[0m (to dalle):\n",
"\n",
2024-03-31 23:53:35 +01:00
"CRITICS: the image needs to improve the contrast and size of the text to enhance its clarity, and the shirt's color should not clash with the dog's fur color to maintain a harmonious color scheme.\n",
2024-03-15 23:11:53 +01:00
"\n",
2024-03-31 23:53:35 +01:00
"PROMPT: here is the updated prompt!\n",
"Create an image of a joyful dog with a coat of a contrasting color to its fur, wearing a shirt with bold, large text saying 'I Love AutoGen' for clear readability.\n",
2024-03-15 23:11:53 +01:00
"\n",
"--------------------------------------------------------------------------------\n",
"\u001b[33mdalle\u001b[0m (to critic):\n",
"\n",
2024-03-31 23:53:35 +01:00
"I generated an image with the prompt: Joyful dog, contrasting coat color to its fur, shirt with bold, large text \"I Love AutoGen\" for clear readability.<image>\n",
2024-03-15 23:11:53 +01:00
"\n",
"--------------------------------------------------------------------------------\n",
"\u001b[33mcritic\u001b[0m (to dalle):\n",
"\n",
2024-03-31 23:53:35 +01:00
"CRITICS: the image effectively showcases a joyful dog with a contrasting shirt color, and the text 'I Love AutoGen' is large and bold, ensuring clear readability.\n",
2024-03-15 23:11:53 +01:00
"\n",
2024-03-31 23:53:35 +01:00
"PROMPT: TERMINATE\n",
2024-03-15 23:11:53 +01:00
"\n",
"--------------------------------------------------------------------------------\n"
]
}
],
"source": [
"dalle = image_generator_agent()\n",
"critic = critic_agent()\n",
"\n",
2024-03-31 23:53:35 +01:00
"img_prompt = \"A happy dog wearing a shirt saying 'I Love AutoGen'. Make sure the text is clear.\"\n",
2024-03-15 23:11:53 +01:00
"# img_prompt = \"Ask me how I'm doing\"\n",
"\n",
"result = dalle.initiate_chat(critic, message=img_prompt)"
]
},
{
"cell_type": "markdown",
"id": "85846d75-e954-48ba-ab84-9a1a5e1f9204",
"metadata": {},
"source": [
"Let's display all the images that was generated by Dalle"
]
},
{
"cell_type": "code",
2024-03-31 23:53:35 +01:00
"execution_count": 7,
2024-03-15 23:11:53 +01:00
"id": "dfa623e5-9444-4868-bdaf-ccae85d3ecd5",
"metadata": {},
"outputs": [
{
"data": {
2024-03-31 23:53:35 +01:00
"image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAEsASwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwC8etKBTitOVakYKKmWkValVKAFUVKooVKlVaAEAp6inKlSqlADVXNSBacqVIEoAYFpwWpAuKOMkZ5HWgY0LTttQXFwbdC5Xcg5YjsKdb3sNwFKMrK3Qg0CJgtLtqQLml20ARbaMVNto2UwINtG2ptlBWkBDtppWnebH/eH504EMMjmgCErTStVjqkDz+VEQ5JwpB+9jrgeg9auKDjmgCIrUZWrJWmFaAKxWo2FWitRslAFQrUbCrTJUTLQBUdaiYVbZaiZKAKrCoyKnZcVCwoAhbNMJNSsKjNAEZNMyaeabigDUxzUirQFqVFoAVVqVVoVamRKAEVKmVKciVJjFMBFSpAtKmCKWV1hiaRiAqjJJpDHKlSBaSJ1kUFT2zRM0yRkwRh37bjgCgQ7bXKeL4L60hbUrG5liMQ+dASVKj2rJ8Vaj430dftyvALQHBWCMHZ/vZya5ZPiRreT5wjuI2++kiADHoCKdgOo0TxvFcRrDrC7o5wVWaMFhkdQQOh71S029jHiyW202+aayZBMmTna/I+uPavOZ9YFrrC32lkxxLKJlhJ4Vh1H8x9KtQ+JYbbxM+rQIUScElP7jHr+FOwHqMvi2Z/GNrp8Y8tWwr4PU57fqK76GRZkyCMg4OPWvmvVNfkk15NQgfa8bB42HbvXrPw68YQaolzaXUqpcvKZEB/iyOQPpik0B6BtpNtBniXOXUY65PSpMjGe3WgCMjFZOtazb6XayGRwHKErn6UzxJro0ex8yNfMkY4AHb3rx/XNfudQnk87cF2OACPXpQBLa+Lb6aGdxNmWBvN25++ueRXbXvird4Fl1KyYLcSLsjDHlScAn3PNeGpdPE0m0kbgVP0Nb+gXfmyhbh2NpaRmVowepHpTaA9d8I6elrpyXMw2zSrwXbcxH+e1bc+q20Mgi3BpD/DkcfWvPvEPjJtF0qJIpY21W7jGEU5W1iPIGe7HOf8A9VZWhXaN9++8y5lPzFAWc+w9amwHrlvI1ynmcBT0xU5WqejxXItU82NoY1GEjb72PVverk88MA/eyIp7Ank/hQAxlqMrSxTCaMS5wjcr9PWmwSpcqZIyCmcA+uKAGMtRMlWmGKiIzQBVZKhZKuMtQstMCm6VAyVddagdaAKbLUTLVp1qFlpAVyKjIqZhimEUAbCrUyrTVFSqKAHqtTotMRakKuV+QqG9WGRQA/AA5IAFZV1rEFu+wzRk9sSAfzqO/wBJvblWMupyqvZIlCgf415l4paawuPK+3idOwK9KaQHdXPiz7BKHLJNCeoDLkH8K07bxVpOo25iknVBKpUgnsRzXh/26ZwV3bh6UwXMinp+Rp2A9Gk8bPoczWEjreRJ/qbmJ8Er2z6HtWNP451QXBkt7udFPIDPurkzvnP+rLfTrQlheSnEVuR9WAp2A7KTx54gu9NdFCzIeHZVyR9RXB3bTgOTGwBPTbitRfD92YjI+4Hvtzj86xbuCazkKSNImfuvnINQpK9rl8ulzOZiWyDRv7UkrFm7Z9qmtrYyyfMMfWtDMYhZ8LitixeW0kjuIJWSWM7gRwQarjy4jt28+tEtwAO31pDOim8WalMzM90+XXa2D75r1HwHrt9qGgRwzZcoxUOepXtXgizfP14r2X4YauiaS0TJhVbIP1rGvUVKHOzSlB1JcqO5utOil/16gjkZI9azdW8LadqMJzCN3JHua6T7Xb3CBvlJ9Kp3VzFF87OOOgrD6xG3NfQ29g78ttTybXPhn9msZrq3ZiRliSe3oBXm7yz2PmREMjE7XH0PSvpC51H7TbFVYA15b4x8MmOKS9lkO45IBGf/AK9b0q8ai0ZlUpShueeiV7mYPK7MzEDJPNemWfjzTdCsoLfSNNXeqANK4GWbvk9a8sPyNnd+lWbaGW4bEYY+uBWzMkel/wDCzdXkViJArnoeMD8MVBYeLUjmlnvo/tMkhyzyEk/l0/OuRi0bUXKiGEOSOm8cVLJomrQjdJYSlfVPm/lSSvqD0O/PjaXWG+wWbJZK4xJcStyo9hXZRazpGkabDbrdxFIowAd3Le/rzXhSiaDrG8f+8MGhrqUnoT75osB7IPFYvJSLdQkIPMjsoJ+mT/Sr0GswSME89cnuzrXh4vpo1wML+Na/h+4mu74QLex24bq7DNFgPbVIZdwYN7g5prrWHp+j3cSBodXkyR3RSrfhW1DHcKmLh43Pqi7f0pARMtQOtXHWoHWkBTdagdatuKgcUwKjioiKsuKhxSA21FTItMUc1MgoAkQVMBkYzj8cUxRU6jjpQBg6xY6h5LtBqOyPB4O3+bZx+f5V4drEkg1GbzLguQeX65r6C1OyF5bPG0alSO4614F4ltIbXXLi3jjMQjbBGc5qkBmb2kH8R98YpoRT1Jx3xmnBewHHvTXyB98qo98VQi5Y2NzeSiKwid3PZVJrstM8M/Yir6vNarj+AO7yD/gPT865XSrSSNPtV3qE1rb5+VUYh3+grWGsyyMttpkBVjwGkYyOfrngVxYic37sGddCEVrJHZ3CafJaOGtbiSFRgm4l2Jj2UV5PrjW0NzJ9iDpCx5jYfKfcV0eo6hJHCYWuhPInMjO37tG9W9T2Cj+prlJ7kXD7ZJC4PduD+VZ4SlKLu2XiaiasVLO281t5Pyg1rkqIsADPrUCYiQbBgeo5FMJ8w4U5Y9hXonEVZmcOSfzqEuScHrXqPgrwAmtQ/aLolVByAR1FW/Gfwsi03S5b/TmJEI3Mh7j1Fc31qmp8l9Tb6vPl5jyJThsetel+G5zp+jRY48w7j+QrzxrZgwbHevXtM8L3Fx4btJwpC7R05yMdqMVT9pTcR4afJU5iaHxAyJkPVS78Rlmwz8n36Us2gpplk1xqUvlIhO4Z5Poo963PD/gS31a2i1G8Qokg3rHnoOwryJYSNJXm9D01ied2iZGnavvdRu/WtvVJYb3TGBtxctgk89KfqvhPSNIi86ZGaJeoDEZPpgdayX8X6HptuIIbUgHjZntXZgqcF70WcmMquWjR4/rAQalJtg8qMHhRyPzqxpTrd3Ucc7bYQeIUyAfc4rZ8Wvpuov8AabHhzyykn/CubsHWGbAlMZ/vBjn+VejUV46HFB2lqeuWS6WliI3RrdenmeWJUB9+4/GsXVdD1VA0+n3CXUfb7LE3+RVO3vZruFVSVYtRjTKSKQBKvow6EejDj19qseskyGK5aeyuMn95E5Xn3FedT9rTejO+oqc1qjDumnaRkvjIrg4IYEEfnVQqo+
"image/png": "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
2024-03-15 23:11:53 +01:00
"text/plain": [
"<PIL.Image.Image image mode=RGB size=300x300>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"images = extract_images(dalle, critic)\n",
"\n",
"for image in reversed(images):\n",
" display(image.resize((300, 300)))"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "99994e50-543e-425b-803c-2a7263f16a36",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"front_matter": {
"description": "Generate images with conversable agents.",
"tags": [
"capability",
"multimodal"
]
},
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.12.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}