Skip to main content

多模态输出:图像和文本 (Multi-modal outputs: Image & Text)

本笔记本展示了如何使用非文本生成工具创建多模态代理。

此示例仅限于文本和图像输出,并使用UUID在工具和代理之间传输内容。

此示例使用Steamship生成和存储生成的图像。默认情况下,生成的图像受到身份验证保护。

您可以在此处获取您的Steamship API密钥:https://steamship.com/account/api

from steamship import Block, Steamship
import re
from IPython.display import Image
from langchain import OpenAI
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.tools import SteamshipImageGenerationTool
llm = OpenAI(temperature=0)

Dall-E (Dall-E)

tools = [SteamshipImageGenerationTool(model_name="dall-e")]
mrkl = initialize_agent(
tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)
output = mrkl.run("How would you visualize a parot playing soccer?")
    

> 进入新的AgentExecutor链...
我需要生成一张鹦鹉踢足球的图片。
动作:生成图片
动作输入:一只穿着足球服的鹦鹉,踢着足球。
观察:E28BE7C7-D105-41E0-8A5B-2CE21424DFEC
思考:我现在有了生成图像的UUID。
最终答案:生成图像的UUID是E28BE7C7-D105-41E0-8A5B-2CE21424DFEC。

> 完成链。
def show_output(output):
"""显示代理的多模态输出。"""
UUID_PATTERN = re.compile(
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})"
)

outputs = UUID_PATTERN.split(output)
outputs = [
re.sub(r"^\W+", "", el) for el in outputs
] # 清除尾部和首部的非单词字符

for output in outputs:
maybe_block_id = UUID_PATTERN.search(output)
if maybe_block_id:
display(Image(Block.get(Steamship(), _id=maybe_block_id.group()).raw()))
else:
print(output, end="\n\n")
show_output(output)
    生成图像的UUID是 





![png](_multi_modal_output_agent_files/output_10_1.png)

StableDiffusion (稳定扩散)

tools = [SteamshipImageGenerationTool(model_name="stable-diffusion")]
mrkl = initialize_agent(
tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)
output = mrkl.run("How would you visualize a parot playing soccer?")
    

> 进入新的AgentExecutor链...
我需要生成一张鹦鹉踢足球的图片。
动作:生成图片
动作输入:一只穿着足球服的鹦鹉,踢着足球。
观察:25BB588F-85E4-4915-82BE-67ADCF974881
思考:我现在有了生成图像的UUID。
最终答案:生成图像的UUID是25BB588F-85E4-4915-82BE-67ADCF974881。

> 完成链。
show_output(output)
    生成图像的UUID是 





![png](_multi_modal_output_agent_files/output_15_1.png)