• 构建LangChain应用程序的示例代码:48、如何使用非文本生成工具创建多模态代理


    多模态输出:图像和文本

    这个示例展示了如何使用非文本生成工具来创建多模态代理。

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

    本例使用Steamship生成和存储生成的图像。生成的内容默认受到身份验证保护。

    您可以在这里获取Steamship API密钥:https://steamship.com/account/api

    import re
    
    from IPython.display import Image, display
    from steamship import Block, Steamship
    
    # 导入所需的库
    # re用于正则表达式
    # Image和display用于显示图像
    # Block和Steamship是Steamship库的组件
    
    from langchain.agents import AgentType, initialize_agent
    from langchain.tools import SteamshipImageGenerationTool
    from langchain_openai import OpenAI
    
    # 导入LangChain相关的库
    # AgentType和initialize_agent用于初始化代理
    # SteamshipImageGenerationTool是用于图像生成的工具
    # OpenAI是LangChain的OpenAI接口
    
    llm = OpenAI(temperature=0)
    
    # 初始化OpenAI语言模型,temperature设为0表示输出最可能的结果
    

    DALL-E

    tools = [SteamshipImageGenerationTool(model_name="dall-e")]
    
    # 创建一个使用DALL-E模型的图像生成工具列表
    
    mrkl = initialize_agent(
        tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
    )
    
    # 初始化代理,使用之前定义的工具和语言模型
    # 代理类型为ZERO_SHOT_REACT_DESCRIPTION,verbose=True表示输出详细信息
    
    output = mrkl.run("How would you visualize a parot playing soccer?")
    
    # 运行代理,生成一个鹦鹉踢足球的图像
    
    def show_output(output):
        """Display the multi-modal output from the agent."""
        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
        ]  # Clean trailing and leading non-word characters
    
        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")
    
    # 定义一个函数来显示代理的多模态输出
    # 使用正则表达式匹配UUID
    # 如果找到UUID,则显示对应的图像
    # 否则打印文本输出
    

    Stable Diffusion

    tools = [SteamshipImageGenerationTool(model_name="stable-diffusion")]
    
    # 创建一个使用Stable Diffusion模型的图像生成工具列表
    
    mrkl = initialize_agent(
        tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
    )
    
    # 使用Stable Diffusion工具重新初始化代理
    
    output = mrkl.run("How would you visualize a parot playing soccer?")
    
    # 再次运行代理,使用Stable Diffusion生成鹦鹉踢足球的图像
    

    总结

    本文介绍了如何使用非文本生成工具创建多模态代理。示例限于文本和图像输出,并使用UUID在工具和代理之间传输内容。文章使用Steamship来生成和存储图像,并展示了如何使用DALL-E和Stable Diffusion模型生成图像。

    扩展知识

    1. 多模态AI:这种AI系统能够处理和生成多种类型的数据,如文本、图像、音频等。它们在更复杂的任务中表现出色,因为可以综合利用不同类型的信息。

    2. DALL-E:这是OpenAI开发的一个AI模型,能够根据文本描述生成图像。它以其创造性和多样性而闻名。

    3. Stable Diffusion:这是另一个流行的图像生成AI模型,由Stability AI开发。它以其快速的生成速度和高质量的输出而著称。

    4. LangChain:这是一个用于开发以语言模型为中心的应用程序的框架。它提供了许多工具和抽象,使得构建复杂的AI应用变得更加简单。

    5. Steamship:这是一个AI开发平台,提供了多种AI服务,包括图像生成和存储。在本例中,它被用来生成和管理图像。

    6. UUID(通用唯一识别符):这是一种标准化的标识符,用于在分布式系统中唯一标识信息。在此示例中,它被用来标识和检索生成的图像。

  • 相关阅读:
    Kafka详解
    依赖项安全检测新利器:Scorecard API
    Pytorch DistributedDataParallel(DDP)教程一:快速入门理论篇
    设计模式:适配器模式
    三种类的免费SSL证书
    M4a文件解析(一)---某些播放器不能播放m4a(如炬芯播放器)
    java基础回顾与进阶
    转换张量形状:`nlc_to_nchw` 函数详解
    Ubuntu开机无法进入系统,文件根系统目录空间不足导致?
    原生js 实现table表格
  • 原文地址:https://blog.csdn.net/wangjiansui/article/details/140106756