2023-05-12 17:35:01 +00:00
|
|
|
{
|
|
|
|
"cells": [
|
|
|
|
{
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"id": "cd835d40",
|
|
|
|
"metadata": {},
|
|
|
|
"source": [
|
|
|
|
"## Multi-modal outputs: Image & Text"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"id": "fa88e03a",
|
|
|
|
"metadata": {},
|
|
|
|
"source": [
|
|
|
|
"This notebook shows how non-text producing tools can be used to create multi-modal agents.\n",
|
|
|
|
"\n",
|
|
|
|
"This example is limited to text and image outputs and uses UUIDs to transfer content across tools and agents. \n",
|
|
|
|
"\n",
|
|
|
|
"This example uses Steamship to generate and store generated images. Generated are auth protected by default. \n",
|
|
|
|
"\n",
|
|
|
|
"You can get your Steamship api key here: https://steamship.com/account/api"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 2,
|
|
|
|
"id": "0653da01",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"from steamship import Block, Steamship\n",
|
|
|
|
"import re\n",
|
|
|
|
"from IPython.display import Image"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 3,
|
|
|
|
"id": "f6933033",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"from langchain import OpenAI\n",
|
|
|
|
"from langchain.agents import initialize_agent\n",
|
|
|
|
"from langchain.agents import AgentType\n",
|
|
|
|
"from langchain.tools import SteamshipImageGenerationTool"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 4,
|
|
|
|
"id": "71e51e53",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"llm = OpenAI(temperature=0)"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"id": "a9fc769d",
|
|
|
|
"metadata": {},
|
|
|
|
"source": [
|
|
|
|
"## Dall-E "
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 5,
|
|
|
|
"id": "cd177dfe",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"tools = [\n",
|
|
|
|
" SteamshipImageGenerationTool(model_name= \"dall-e\")\n",
|
|
|
|
"]"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 6,
|
|
|
|
"id": "c71b1e46",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"mrkl = initialize_agent(tools, \n",
|
|
|
|
" llm, \n",
|
|
|
|
" agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, \n",
|
|
|
|
" verbose=True)"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 7,
|
|
|
|
"id": "603aeb9a",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
|
|
"\u001b[32;1m\u001b[1;3m I need to generate an image of a parrot playing soccer.\n",
|
|
|
|
"Action: GenerateImage\n",
|
|
|
|
"Action Input: A parrot wearing a soccer uniform, kicking a soccer ball.\u001b[0m\n",
|
|
|
|
"Observation: \u001b[36;1m\u001b[1;3mE28BE7C7-D105-41E0-8A5B-2CE21424DFEC\u001b[0m\n",
|
|
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now have the UUID of the generated image.\n",
|
|
|
|
"Final Answer: The UUID of the generated image is E28BE7C7-D105-41E0-8A5B-2CE21424DFEC.\u001b[0m\n",
|
|
|
|
"\n",
|
|
|
|
"\u001b[1m> Finished chain.\u001b[0m\n"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"output = mrkl.run(\"How would you visualize a parot playing soccer?\")"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 8,
|
|
|
|
"id": "25eb4efe",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
2023-05-26 02:18:31 +00:00
|
|
|
"def show_output(output):\n",
|
2023-05-12 17:35:01 +00:00
|
|
|
" \"\"\"Display the multi-modal output from the agent.\"\"\"\n",
|
|
|
|
" UUID_PATTERN = re.compile(\n",
|
|
|
|
" r\"([0-9A-Za-z]{8}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{4}-[0-9A-Za-z]{12})\"\n",
|
|
|
|
" )\n",
|
|
|
|
"\n",
|
|
|
|
" outputs = UUID_PATTERN.split(output)\n",
|
|
|
|
" outputs = [re.sub(r\"^\\W+\", \"\", el) for el in outputs] # Clean trailing and leading non-word characters\n",
|
|
|
|
"\n",
|
|
|
|
" for output in outputs: \n",
|
|
|
|
" maybe_block_id = UUID_PATTERN.search(output)\n",
|
|
|
|
" if maybe_block_id:\n",
|
|
|
|
" display(Image(Block.get(Steamship(), _id=maybe_block_id.group()).raw()))\n",
|
|
|
|
" else:\n",
|
|
|
|
" print(output, end=\"\\n\\n\")"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 9,
|
|
|
|
"id": "082792a0",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"The UUID of the generated image is \n",
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "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AQEB/wAA/wEAAf8AAAEAAQD//wD/AQEAAAAAAAEAAAABAgD/AAEAAAABAQAA/wD/AAEAAAEA//8A/wEBAf8BAf8BAAEAAP8BAAEAAAABAAAAAf//AQAAAAEAAAD/AQAB/wEBAf8A//8AAAD/AQEBAQEAAQD/AAABAAD/Af8A/wD/AAEBAQIA/wEBAP8AAAABAAD/AAAAAAABAQIBAQEAAQABAAEAAP/+/v8A////AAAAAP8B//8A/wH/AQD//wABAAABAf//AQAB/////wD/AAABAQD/AQAAAAEBAQEBAAD//wAAAP8BAAABAQD//wD//wD/AAH/AAD//wD+AAAA/wD/AAEA/wABAAECAP8AAAABAgEAAQAAAAH//gD/AAEBAP8B/wEBAP8AAAABAAD//wD/AP//AAEAAQEBAgECAP8AAP8AAAD/AAD/AAAA//8BAAIBAQAAAgEBAAEB/wEBAAD/AAD//wH//wD/AAAA/wH//wD///8BAP7+/wD///8AAAAA////AAEB/wD//gD/AP8A////AAAAAP8AAf8AAAEBAQEAAAAAAQD//wD/AP7/Af8A////AAEBAQEAAAH/AAD/AP///wD//wH/AP8B/wEB/wAAAf8BAAAA/wEA/wH//wAB/wEBAQEA//8AAAABAAD/AQAAAAABAAD/AP8AAP8BAQAA/wEAAAD+AAEAAAAAAf8AAAD/AQAAAP///wAA/wAAAQD/AAD//wAAAAAAAAD//wD+AAABAAEB//8BAAAAAAAAAAABAAABAAAAAAD+AP8BAP///////gAAAP//AQAAAQABAP8AAAEAAAAA/wAB//8AAAH/AAAAAAEAAQIAAP8B/wEAAAEA/wABAAEA//4BAAD/AP///wABAQAAAgEBAQEAAAAAAQEAAAH/AAEAAAD/AP///wEAAQIAAAEAAAEBAAEBAAD/AQD/AAECAP///wEAAQAA/wEAAAEAAAAB////AQAAAAEAAAEAAP8AAAABAAAAAAD/AAAAAAD//wAB/wEAAAEB//8BAAACAQD/AP///gABAf8AAAAA/wEBAAH/AAH/AAAB/wAAAAAAAAAC/wEAAAEAAAEBAP8A/wAAAAEAAAEB/wEAAAEBAAEBAAIAAAD/AAECAAEBAgABAAABAP8CAAAB/wAAAP8BAQD/AP8AAP8AAAD/AAAAAAD//gAAAAAA/wEA/wEB/gAAAAH/AQAAAP//AAAAAQEAAAEAAAH/AQEAAAIAAAAAAAEAAQAAAAAA/wD+/wD//gAAAAAAAQACAf8BAQIA/wAA/wAAAP8AAQD/AAD/Af//AAAAAP8A/wEAAAEBAf8AAAAAAAAAAQIBAAIAAP///wEAAAIBAAEAAAAA/wH//wAB/wD+AP8AAAEAAP//AAAA//////8A/wD//gD/AP4AAP8BAAEBAAABAAAAAAD/AAAAAP8BAP8AAAAAAQEA//8AAAAAAAH/AQAAAAAA/wABAAAAAgAAAQEB/wH/AAD//wAAAAEBAP//AAAAAAAAAP8AAAD/AQEBAQEBAAEBAAEA/wABAQEAAAABAQAAAP8AAQAAAAAAAAAAAQEAAQEAAf8BAAEAAAD/Af8AAAD/AAAA/wABAAAAAQAC/wEAAAEAAQAA//8BAAAAAP8BAAABAP//AQABAAABAbKztPj19QA
|
|
|
|
"text/plain": [
|
|
|
|
"<IPython.core.display.Image object>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
2023-05-26 02:18:31 +00:00
|
|
|
"show_output(output)"
|
2023-05-12 17:35:01 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "markdown",
|
|
|
|
"id": "e247b2c4",
|
|
|
|
"metadata": {},
|
|
|
|
"source": [
|
|
|
|
"## StableDiffusion "
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 10,
|
|
|
|
"id": "315025e7",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"tools = [\n",
|
|
|
|
" SteamshipImageGenerationTool(model_name= \"stable-diffusion\")\n",
|
|
|
|
"]"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 11,
|
|
|
|
"id": "7930064a",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": [
|
|
|
|
"mrkl = initialize_agent(tools, \n",
|
|
|
|
" llm, \n",
|
|
|
|
" agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, \n",
|
|
|
|
" verbose=True)"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 12,
|
|
|
|
"id": "611a833d",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n",
|
|
|
|
"\n",
|
|
|
|
"\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n",
|
|
|
|
"\u001b[32;1m\u001b[1;3m I need to generate an image of a parrot playing soccer.\n",
|
|
|
|
"Action: GenerateImage\n",
|
|
|
|
"Action Input: A parrot wearing a soccer uniform, kicking a soccer ball.\u001b[0m\n",
|
|
|
|
"Observation: \u001b[36;1m\u001b[1;3m25BB588F-85E4-4915-82BE-67ADCF974881\u001b[0m\n",
|
|
|
|
"Thought:\u001b[32;1m\u001b[1;3m I now have the UUID of the generated image.\n",
|
|
|
|
"Final Answer: The UUID of the generated image is 25BB588F-85E4-4915-82BE-67ADCF974881.\u001b[0m\n",
|
|
|
|
"\n",
|
|
|
|
"\u001b[1m> Finished chain.\u001b[0m\n"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
|
|
|
"output = mrkl.run(\"How would you visualize a parot playing soccer?\")"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": 13,
|
|
|
|
"id": "d7a3edaf",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"The UUID of the generated image is \n",
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"data": {
|
|
|
|
"image/png": "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
|
|
|
|
"text/plain": [
|
|
|
|
"<IPython.core.display.Image object>"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"metadata": {},
|
|
|
|
"output_type": "display_data"
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"name": "stdout",
|
|
|
|
"output_type": "stream",
|
|
|
|
"text": [
|
|
|
|
"\n",
|
|
|
|
"\n"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"source": [
|
2023-05-26 02:18:31 +00:00
|
|
|
"show_output(output)"
|
2023-05-12 17:35:01 +00:00
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"cell_type": "code",
|
|
|
|
"execution_count": null,
|
|
|
|
"id": "55556043",
|
|
|
|
"metadata": {},
|
|
|
|
"outputs": [],
|
|
|
|
"source": []
|
|
|
|
}
|
|
|
|
],
|
|
|
|
"metadata": {
|
|
|
|
"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.11.2"
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"nbformat": 4,
|
|
|
|
"nbformat_minor": 5
|
|
|
|
}
|