构建LangChain应用程序的示例代码:49、如何使用 OpenAI 的 GPT-4 和 LangChain 库实现多模态问答系统

python 复制代码
! pip install "openai>=1" "langchain>=0.0.331rc2" matplotlib pillow

加载图像

我们将图像编码为 base64 字符串,如 OpenAI GPT-4V 文档中所述。

python 复制代码
import base64
import io
import os

import numpy as np
from IPython.display import HTML, display
from PIL import Image

def encode_image(image_path):
    """获取图像的 base64 字符串"""

    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

def plt_img_base64(img_base64):
    """显示 base64 图像"""

    # 使用 base64 字符串创建 HTML img 标签
    image_html = f'<img src="data:image/jpeg;base64,{img_base64}" />'

    # 通过渲染 HTML 显示图像
    display(HTML(image_html))

# 问答用图像
path = "/Users/rlm/Desktop/Multimodal_Eval/qa/llm_strategies.jpeg"
img_base64 = encode_image(path)
plt_img_base64(img_base64)

QA with GPT-4Vision 使用 GPT-4Vision 进行 QA

我们可以使用 GPT-4V 对图像进行 QA。有关详细信息,请参阅此处:

https://github.com/openai/openai-python/releases/tag/v1.0.0

https://platform.openai.com/docs/guides/vision

python 复制代码
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI
python 复制代码
chat = ChatOpenAI(model="gpt-4-vision-preview", max_tokens=1024)

msg = chat.invoke(
    [
        HumanMessage(
            content=[
                {
                    "type": "text",
                    "text": "Based on the image, what is the difference in training strategy between a small and a large base model?",
                },
                {
                    "type": "image_url",
                    "image_url": {"url": f"data:image/jpeg;base64,{img_base64}"},
                },
            ]
        )
    ]
)

结果 msg.content 如下所示:

该图像似乎是一张图表,描述了两种不同基本模型大小(大和小)的任务准确性,作为不同训练策略以及与之相关的工作量/复杂性的函数。下面是小基础模型和大基础模型之间训练策略差异的描述,如图所示:

  1. 零样本提示:两种模型都以一定的基线精度开始,无需额外训练,这表明零样本学习能力。但是,与小型基础模型相比,大基础模型开箱即用的精度更高。
  2. 提示工程:随着复杂性随着提示工程的增加,大基础模型在任务准确性方面表现出显着提高,表明它比小基础模型更有效地理解和利用精心设计的提示。
  3. 小样本提示:随着小样本提示的引入,模型提供了一些示例供学习,与小基础模型相比,大基础模型继续显示出更高的任务准确性,小基础模型也有所改进,但程度不同。
  4. 检索增强小样本提示:在这个阶段,模型通过检索机制得到增强,以协助小样本学习过程。大基础模型在任务准确性方面保持领先地位,表明它可以更好地集成检索增强策略。
  5. 微调:当我们移动到表示微调的图形右侧时,与前面的步骤相比,小基础模型的精度提高了,这表明微调对较小的模型有重大影响。大基础模型虽然也受益于微调,但并没有显示出那么显着的增长,这可能是因为它的尺寸和容量更大,它已经在更高的水平上运行。
  6. 模型训练(微调,RLHF)和数据引擎:图的最后一部分表明,通过广泛的模型训练技术,如微调和人类反馈强化学习(RLHF),结合强大的数据引擎,大基础模型可以实现近乎完美的任务准确性。小基础模型也有所改进,但未达到相同的水平,这表明较大模型的容量使其能够更好地利用高级训练方法和数据资源。

总之,大基础模型更多地受益于高级训练策略,并通过增加工作量和复杂性表现出更高的任务准确性,而小基础模型需要更显着的微调才能实现性能的实质性改进。

QA with OSS Multi-modal LLMs 使用 OSS 多模式LLMs的 QA

我们还测试了各种开源多模态LLMs。

有关为多模式构建llama.cpp的说明LLMs,请参阅此处:

克隆llama.cpp

下载砝码:

  • LLaVA-7b
  • LLaVA-13b
  • Bakllava

在您的 llama.cpp 目录中构建:

bash 复制代码
mkdir build && cd build && cmake ..
cmake --build .

对多模式LLMs的支持将很快添加到llama.cpp中。

同时,您可以使用 CLI 测试它们:

python 复制代码
%%bash

# Define the path to the image
IMG_PATH="/Users/rlm/Desktop/Multimodal_Eval/qa/llm_strategies.jpeg"

# Define the model name
#MODEL_NAME="llava-7b"
#MODEL_NAME="bakllava-1"
MODEL_NAME="llava-13b"

# Execute the command and save the output to the defined output file
/Users/rlm/Desktop/Code/llama.cpp/build/bin/llava -m /Users/rlm/Desktop/Code/llama.cpp/models/${MODEL_NAME}/ggml-model-q5_k.gguf --mmproj /Users/rlm/Desktop/Code/llama.cpp/models/${MODEL_NAME}/mmproj-model-f16.gguf --temp 0.1 -p "Based on the image, what is the difference in training strategy between a small and a large base model?" --image "$IMG_PATH"

总结

本指南介绍了如何使用 OpenAI 的 GPT-4 和 LangChain 库实现多模态问答系统。文中包含了加载图像、编码图像为 base64 字符串、使用 HTML 标签显示图像,以及结合文本和图像信息进行问答的具体步骤。

扩展知识

OpenAI GPT-4V

OpenAI 的 GPT-4V 是一种能够处理和生成图像数据的增强型语言模型,适用于需要结合图像和文本信息的复杂应用场景。

LangChain

LangChain 是一个用于构建基于语言模型的应用程序的库,提供了从数据加载、预处理到模型训练和评估的全流程开发支持。

Base64 编码

Base64 编码是一种将二进制数据转换为文本格式的常用方法,便于在网络中传输图像、音频等文件。

相关推荐
13631676419侯2 分钟前
智慧物流与供应链追踪
人工智能·物联网
TomCode先生4 分钟前
MES 离散制造核心流程详解(含关键动作、角色与异常处理)
人工智能·制造·mes
zd20057214 分钟前
AI辅助数据分析和学习了没?
人工智能·学习
johnny23321 分钟前
强化学习RL
人工智能
乌恩大侠26 分钟前
无线网络规划与优化方式的根本性变革
人工智能·usrp
放羊郎28 分钟前
基于萤火虫+Gmapping、分层+A*优化的导航方案
人工智能·slam·建图·激光slam
王哈哈^_^34 分钟前
【数据集+完整源码】水稻病害数据集,yolov8水稻病害检测数据集 6715 张,目标检测水稻识别算法实战训推教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
SEOETC1 小时前
数字人技术:虚实交融的未来图景正在展开
人工智能
boonya1 小时前
从阿里云大模型服务平台百炼看AI应用集成与实践
人工智能·阿里云·云计算
amhjdx1 小时前
三维技术 + AI 动画,焕活古镇科技人文新表达,天南文化助力 2025 年世界互联网大会乌镇峰会
人工智能·科技