玩转大语言模型——langchain调用ollama视觉多模态语言模型

AI摘要

本文介绍使用langchain调用ollama视觉多模态语言模型。先说明了视觉多模态语言模型的构成与能力,接着阐述用Ollama查找并下载模型的方法,最后进行模型测试,包括ollama测试和langchain测试,如图片转Base64编码、加载模型及获取模型回复等。

系列文章目录

玩转大语言模型——使用langchain和Ollama本地部署大语言模型
玩转大语言模型——三分钟教你用langchain+提示词工程获得猫娘女友
玩转大语言模型——ollama导入huggingface下载的模型
玩转大语言模型——langchain调用ollama视觉多模态语言模型
玩转大语言模型——使用transformers中的pipeline调用huggingface中模型
玩转大语言模型——transformers微调huggingface格式的中文Bert模型
玩转大语言模型——使用GraphRAG+Ollama构建知识图谱
玩转大语言模型——完美解决GraphRAG构建的知识图谱全为英文的问题
玩转大语言模型——配置图数据库Neo4j(含apoc插件)并导入GraphRAG生成的知识图谱
玩转大语言模型——本地部署带聊天界面deepseek R1的小白教程
玩转大语言模型——本地部署deepseek R1和本地数据库的小白教程(Ollama+AnythingLLM)
玩转大语言模型——使用LM Studio在本地部署deepseek R1的零基础)教程
玩转大语言模型——Ubuntu系统环境下使用llama.cpp进行CPU与GPU混合推理deepseek
玩转大语言模型——使用Kiln AI可视化环境进行大语言模型微调数据合成



前言

视觉多模态语言模型由预训练的多模态编码器、预训练的 LLM 以及连接两者的多模态接口等主要组件构成。将图像信息转换为可被语言模型处理的特征表示。拥有强大的视觉理解能力,能够准确理解图像内容,进行图像描述、视觉问答、图像定位等任务。可以与用户进行多轮交互,根据用户的文本和图像输入生成连贯、准确且有针对性的回答。本篇文章将介绍使用langchain调用ollama视觉多模态语音模型。


使用Ollama下载模型

查找模型

Ollama官网:https://ollama.com/
在这里插入图片描述
在Ollama官网上点击左上角的Models
在这里插入图片描述
选择Vision后就可以看到所有的支持视觉的模型了,在本篇文章中我们将使用llava模型进行演示,笔者也可以选择其他模型进行测试。LLaVA(Large Language and Vision Assistant)是一种多模态模型,它结合了视觉编码器和 Vicuna 以实现通用视觉和语言理解,在科学问答、数据分析和学术任务导向的视觉问答中表现出色,为研究人员提供了强大的工具。
在这里插入图片描述
左侧可以选择模型大小,模型越大一般来说效果越好,但针对测试来说7b的模型是够用的,为了兼容更多人的硬件设备,我们选用7b模型即可。右侧的就使用ollama下载模型的命令。

下载模型

打开命令行窗口,输入ollama下载模型的命令:ollama run llava,该命令会下载模型并直接执行,在初次下载成功后再执行命令不会重复下载。
执行命令后会先下载llava模型然后运行。如果想仅下载不运行,可以使用ollama pull llava
使用ollama run llava下载模型,可以直接与模型对话验证下载是否成功,如果使用的是ollama pull llava可以通过ollama list查看模型有没有被添加到列表,如果添加到列表,说明下载成功。
在这里插入图片描述


测试模型

ollama测试

下面我们用这样一张图片测试一下模型的性能。图片的路径在:D:/test_llava.png
在这里插入图片描述
打开命令行输入:ollama run llava,可以直接在提问时提出图片路径使用模型。
在这里插入图片描述
但是llava模型默认会使用英文回答,所以最好在询问的时候让模型用中文回答。从中文的回答上来看,回复内容是比较宽泛的描述,并且有可能会出错(羊驼被当作了斑羊)。这可能和模型或者模型大小有关,可以尝试其他模型测试一下,后期笔者也会写一篇相关的测试文章,请关注我的专栏。

langchain测试

加载图片

在langchain中使用视觉多模态语言模型时,图片应该是Base64编码的格式,下面介绍两种图片转Base64编码的方式。

从网络获取图片

import base64
import httpx

image_url = "图片的网络链接"
image_base64 = base64.b64encode(httpx.get(image_url).content).decode("utf-8")

从本地获取图片
从本地获取图片并不能直接读取并转换Base64编码格式,在这里我们可以编写一个函数来解决。

import base64
from PIL import Image
import io

def image_to_base64(image_path):
    with Image.open(image_path) as img:
        buffer = io.BytesIO()
        img.save(buffer, format="PNG")
        img_bytes = buffer.getvalue()
        img_base64 = base64.b64encode(img_bytes).decode("utf-8")
        return img_base64


local_image_path = "D:/test_llava.png"
image_base64 = image_to_base64(local_image_path)

在函数image_to_base64中,这里使用Image.open函数打开指定路径的图片文件。Image是PIL库中的类,open方法用于打开图片文件。with语句用于确保在使用完图片资源后,自动关闭文件,释放资源,避免资源泄漏。io.BytesIO是 Python 标准库io中的类,用于在内存中创建一个二进制流缓冲区。这个缓冲区将用于存储图片数据。将打开的图片img保存到之前创建的缓冲区buffer中后,使用getvalue方法用于获取缓冲区中的所有数据然后通过base64.b64encode函数用于对二进制数据img_bytes进行 Base64 编码,返回一个字节对象。然后使用decode("utf-8")方法将字节对象转换为 UTF-8 编码的字符串,得到最终的 Base64 编码的图片字符串。

加载模型

这里使用langchain中OpenAI接口和Ollama接口分别加载模型
首先下载langchain-openai和langchain-ollama包,打开命令行,分别输入:

pip install -U langchain-openai
pip install -U langchain-ollama

OpenAI模型加载

from langchain_openai import ChatOpenAI

model = ChatOpenAI(
    temperature=0,
    model="llava:latest",
    openai_api_base="http://localhost:11434/v1/",
    openai_api_key="any key"
)

因为我们在本地使用ollama下载了llava模型了,所以openai_api_base为ollama提供的URL:http://localhost:11434/v1/,openai_api_key可以为任何值,但不能不传这个参数或者为空并且不能是中文。
Ollama模型加载

from langchain_ollama.chat_models import ChatOllama

model = ChatOllama(model="llava:latest", temperature=0)

使用Ollama方式加载就更简单了,不过这种方式仍然可以访问远程的URL。下面给出例子

model = ChatOllama(model="llava:latest", base_url="http://localhost:11434/v1/", stream=True, temperature=0.6)

如果要访问其他地址的ollama的URL,修改base_url参数即可。

模型回复

from langchain_core.messages import HumanMessage

message = HumanMessage(
    content=[
        {"type": "text", "text": "描述一下这幅图,用中文回答"},
        {
            "type": "image_url",
            "image_url": {"url": f"data:image/jpeg;base64,{image_base64}"},
        },
    ],
)
response = model.invoke([message])
print(response.content)

运行结果:
在这里插入图片描述

在本地运行和配置Ollama以使用LangChain与LLaMA2模型 在AI开发中,运行大型语言模型(Large Language Models,LLMs)通常需要高效的硬件资源和精确的配置。Ollama提供了一个解决方案,通过将模型权重、配置和数据打包成一个单一的包——Modelfile,来优化这些资源的使用和配置细节。本文将介绍如何在本地环境中使用Ollama与LangChain配合运行开源的LLaMA2模型。 阅读详情

相关推荐

Ollama本地大语言模型部署与优化指南

大语言模型(LLM)作为人工智能领域的核心技术,正在推动自然语言处理应用的革新。其核心原理基于Transformer架构,通过海量数据训练获得强大的语义理解和生成能力。在工程实践中,本地化部署LLM能有效解决数据隐私和延迟敏感问题,Ollama框架为此提供了开箱即用的解决方案。针对国内开发者常见的网络环境和硬件适配问题,本文详细介绍了镜像加速安装、GPU资源优化等关键技术,特别适用于需要自主可控AI能力的企业研发场景。通过实测的配置模板和调优参数,即使是7B到70B参数规模的模型也能在消费级显卡上稳定运行。

weixin_29053073的博客 315

构建个人专属视觉搜索应用:使用多模态文档检索模板

本文讲解了如何使用开源工具构建一个私人照片集的视觉搜索应用。Ollama文档LangChain使用指南。

afTFODguAKBF的博客 780

Ollama+OpenWebUI本地部署大语言模型实战指南

大语言模型本地部署是当前AI领域的热门实践方向,其核心原理是通过轻量级工具链在本地环境运行模型推理。Ollama作为新兴的部署工具,采用容器化技术实现开箱即用的模型管理,配合OpenWebUI提供类ChatGPT的交互体验。在工程实践中,这种方案特别适合处理敏感数据、需要定制化AI能力的场景。通过模型量化技术(如q4_0、q2_k等),即使在16GB内存的笔记本上也能流畅运行7B参数模型。典型应用包括企业知识库构建、多模态交互系统开发等,其中CUDA加速和Docker容器化部署是关键实现技术。

weixin_30700977的博客 336

Tiny-AI-Client:极简统一接口,轻松调用多平台大语言模型

大语言模型(LLM)已成为现代应用开发的核心组件,其核心原理是通过API接收文本或多媒体输入,并生成智能化的文本输出。这项技术的价值在于能够将复杂的自然语言理解和生成能力集成到各类软件中,极大地提升了人机交互的智能化水平。在实际工程实践中,开发者常常面临一个痛点:不同厂商的LLM API(如OpenAI、Claude、Gemini等)接口各异,SDK和调用方式不统一,导致代码冗余和切换成本高昂。为了解决这一问题,tiny-ai-client应运而生,它通过极简主义设计,提供了一个不足250行核心代码的统一客

weixin_30791095的博客 416

构建自己的私人视觉搜索应用:使用多模态LLM进行智能问答

我们将使用nomic-embed-vision-v1进行多模态嵌入来处理图像,同时利用Ollama进行问答。该模板支持用户通过自然语言提问,系统会检索相关照片并使用选择的多模态LLM进行答案合成。本文介绍了如何使用多模态LLM构建私人视觉搜索应用。通过合适的工具和配置,你可以实现对私人照片集的智能问答。Ollama 官方网站LangChain 文档。

dfvcbipanjr的博客 639

实现私人视觉搜索:使用多模态LLM和LangChain构建自己的照片问答系统

通过实现这个私人视觉搜索应用,我们可以更深入了解多模态嵌入和LLM的工作原理。希望这篇文章能激发你更多的尝试和创新。

adfyvatbia的博客 1000

打造私人视觉搜索应用:使用多模态LLM和嵌入模型实现图像问答

使用开源多模态LLM构建私人视觉搜索应用是可行的并具有很大的潜力。Ollama 官方文档LangChain 官方文档。

akhfuiigabv的博客 1111

python 使用Langchin访问本地Ollama的两种方式

python 使用Langchin访问本地Ollama的两种方式

cangqiongxiaoye的博客 944

玩转大语言模型——使用langchain和Ollama本地部署大语言模型

Ollama 是一个开源的大型语言模型服务工具,旨在简化在本地运行大语言模型的过程,降低使用大语言模型的门槛。用户可以在自己的设备上运行模型,无需依赖云服务或远程服务器,保护了数据隐私。支持 Windows、macOS 和 Linux 等多种操作系统,方便不同用户安装使用。在本篇中将介绍Windows下使用Ollama进行本地大模型的部署。

艾醒的博客 3694

玩转大语言模型——ollama导入huggingface下载的模型

ollama在大语言模型的应用中十分的方便,但是也存在一定的问题,比如不能使用自己微调的模型或者当前的模型并没有做ollama官网兼容的时候,从外部导入模型就十分必要。本章将会介绍两种常见格式模型导入ollama的方式。

艾醒的博客 4925

NSGA-III相关笔记

NSGA-III目录目的区别NSGA-III的算法流程非支配排序详解归一化详解 目录 NSGA-III基于matlab的实现 参考文献 1.An Evolutionary Many-Objective Optimization Algorithm Using Reference-point Based Non-dominated Sorting Approach,Part I: Solving P...

weixin_42555400的博客 1万+

信息流广告ROI线性预测看板&投放分析监控看板展示&数据处理入库全流程

此看板数据量太大,在tableau public部署运行速度极慢,因此用图片作展示 数据清洗

Larry_Westside的博客 2317

信息收集-服务器信息

服务器上面可以运行大量的系统服务和第三方应用服务,如果操作系统或者第三方软件没有及时升级打补丁,攻击者就有可能直接通过服务器上运行的服务进行攻击。

weixin_49349476的博客 1446

Java8对接三方流式接口,并实时输出(GPT)

【代码】Java8对接三方流式接口,并实时输出(GPT)

m0_58617940的博客 1728

纯相位全息图优化算法综述

除此之外,还有许多用于减少斑点噪声的非迭代方法,例如:采用下采样掩膜的采样纯相位全息图(Sampled-Phase-only Hologram)方法、模式化相位掩膜(Patterned Phase-Only Hologram)方法、双相位方法(Double-Phase Method),以及使用非随机相位掩膜的方法(Random Phase-Free Method)等。迭代算法通常由一个对目标全息图的近似出发,经过一系列的重复操作不断优化这个近似全息图,直到该近似所得到的重建图像满足一定的误差要求;

ZhongKeWeiXing的博客 1428

DeerFlow 系列教程 第十六篇 | 实战案例一——用 DeerFlow 进行深度研究

在日常使用 AI Agent 时,最常见的需求之一就是对某个主题进行全面、系统的研究。多源信息采集——不能只依赖单次搜索,需要从多个角度搜索不同来源交叉验证——不同来源的信息需要相互印证,避免单一信源的偏差结构化输出——最终产出的不是零散的信息片段,而是有组织的研究报告传统做法是人工反复搜索、阅读、整理。传统手工研究: DeerFlow 深度研究:人工搜索 → 阅读页面 → 记笔记 提交研究主题│ │▼ ▼换关键词 → 再搜索 → 再阅读 ┌──────────────────┐。

weixin_43674738的博客 163

基于毫米波生物感知雷达+STM32设计的独居老人居家监护系统(微信小程序)(192)

当前基于STM32设计的独居老人居家监护系统为独居老人提供一种简便、实时的健康监护服务。该系统通过集成多种传感器和功能模块,能够实时监测老人的生理指标、姿态以及室内环境状况,并通过微信小程序远程显示数据,当出现异常情况时及时发出报警提醒。

1万+

Unreal5 从入门到精通之 学习Niagara特效系统

UE5 Niagara粒子系统解析 Niagara是UE5中的高性能粒子特效系统,相比传统粒子系统具有完全可编程性和可视化节点编辑两大特点。核心单元发射器(Emitter)分为模板发射器(预设效果如喷泉、火焰)和空白发射器(高度自定义)。系统提供13种预设模板,包括吹飞粒子、五彩纸屑爆发、动态光束等常见特效。 Niagara采用三级模块化设计: 系统级:全局参数设置与更新 发射器级:控制粒子生成规则与行为 粒子级:处理单个粒子的生命周期和渲染 关键模块包括初始化粒子属性、物理模拟、颜色渐变等,支持GPU加速

TxNet 1124

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: 快速上手Git——Windows系统下Git的安装与简单使用流程
下一篇: 玩转大语言模型——使用GraphRAG+Ollama本地构建知识图谱(完全本地化,不依赖OpenAI)
艾醒(AiXing-w)
艾醒(AiXing-w) 2021年度博客之星AI领域top5 2021年度博客之星AI领域top5
博客等级 码龄7年 1万+粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾醒(AiXing-w)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值