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

文章目录


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

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

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

python 复制代码
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。但是注意,只有一些模型提供程序支持此功能。

python 复制代码
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)

我们也可以传多个图片。

python 复制代码
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。

python 复制代码
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}"},
                }
            ],
        ),
    ]
)

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

python 复制代码
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)
相关推荐
ReedFoley2 小时前
【笔记】动手学Ollama 第五章 Ollama 在 LangChain 中的使用 - Python 集成
笔记·langchain
爱分享的飘哥4 小时前
第八十三章:实战篇:文 → 图:Prompt 控制图像生成系统构建——从“咒语”到“神作”的炼成!
人工智能·计算机视觉·prompt·文生图·stablediffusion·diffusers·text-to-image
AI大模型7 小时前
万字长文!从 0 到 1 搭建基于 LangGraph 的 AI Agent
langchain·llm·agent
悲欢笑miki12 小时前
Api调用大模型(实用)
langchain
kkcodeer13 小时前
大模型Prompt原理、编写原则与技巧以及衡量方法
人工智能·prompt·ai大模型
IT古董15 小时前
第四章:大模型(LLM)】07.Prompt工程-(5)self-consistency prompt
prompt
Ethan.Yuan1 天前
【深度长文】Anthropic发布Prompt Engineering全新指南
大模型·llm·prompt·提示工程
大志说编程2 天前
LangChain框架入门17: 手把手教你创建LLM工具
python·langchain·ai编程
游戏AI研究所2 天前
ComfyUI 里的 Prompt 插值器(prompt interpolation / text encoder 插值方式)的含义和作用!
人工智能·游戏·机器学习·stable diffusion·prompt·aigc
王国强20092 天前
LangChain 设计原理分析¹⁵ | AI 编排平台的演化方向
langchain