LangChain —— 多模态大模型的 prompt template

2024-07-12 1467阅读

文章目录

  • 一、如何直接将多模态数据传输给模型
  • 二、如何使用 mutimodal prompts

    一、如何直接将多模态数据传输给模型

     在这里,我们演示了如何将多模式输入直接传递给模型。对于其他的支持多模态输入的模型提供者,langchain 在类中提供了内在逻辑来转化为期待的格式。

    LangChain —— 多模态大模型的 prompt template
    (图片来源网络,侵删)

     传入图像最常用的方法是将其作为字节字符串传入。这应该适用于大多数模型集成。

    import base64
    import httpx
    image_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
    image_data = base64.b64encode(httpx.get(image_url).content).decode("utf-8")
    message = HumanMessage(
        content=[
            {"type": "text", "text": "describe the weather in this image"},
            {
                "type": "image_url",
                "image_url": {"url": f"data:image/jpeg;base64,{image_data}"},
            },
        ],
    )
    response = model.invoke([message])
    print(response.content)
    

     我们可以直接在“image_URL”类型的内容块中提供图像URL。但是注意,只有一些模型提供程序支持此功能。

    message = HumanMessage(
        content=[
            {"type": "text", "text": "describe the weather in this image"},
            {"type": "image_url", "image_url": {"url": image_url}},
        ],
    )
    response = model.invoke([message])
    print(response.content)
    

     我们也可以传多个图片。

    message = HumanMessage(
        content=[
            {"type": "text", "text": "are these two images the same?"},
            {"type": "image_url", "image_url": {"url": image_url}},
            {"type": "image_url", "image_url": {"url": image_url}},
        ],
    )
    response = model.invoke([message])
    print(response.content)
    

    二、如何使用 mutimodal prompts

     在这里,我们将描述一下怎么使用 prompt templates 来为模型格式化 multimodal imputs。

    import base64
    import httpx
    image_url = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
    image_data = base64.b64encode(httpx.get(image_url).content).decode("utf-8")
    prompt = ChatPromptTemplate.from_messages(
        [
            ("system", "Describe the image provided"),
            (
                "user",
                [
                    {
                        "type": "image_url",
                        "image_url": {"url": "data:image/jpeg;base64,{image_data}"},
                    }
                ],
            ),
        ]
    )
    

     我们也可以给模型传入多个图片。

    prompt = ChatPromptTemplate.from_messages(
        [
            ("system", "compare the two pictures provided"),
            (
                "user",
                [
                    {
                        "type": "image_url",
                        "image_url": {"url": "data:image/jpeg;base64,{image_data1}"},
                    },
                    {
                        "type": "image_url",
                        "image_url": {"url": "data:image/jpeg;base64,{image_data2}"},
                    },
                ],
            ),
        ]
    )
    chain = prompt | model
    response = chain.invoke({"image_data1": image_data, "image_data2": image_data})
    print(response.content)
    
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]