AGI|如何用Open WebUI和Ollama在本地运行大型语言模型?

news2024/9/20 0:51:09

在某AI产品发布会上,我们需要演示在个人PC上运行大模型的能力。为了实现这一目标,我们进行了深入的市场调研和技术评估,最终选择了Open WebUI和Ollama作为演示的核心工具。

目录

一、介绍

二、部署

三、代码展示


一、介绍

  • 什么是Ollama

Ollama是一个开源的大型语言模型服务工具,它帮助用户简化在本地机器上部署和运行大型语言模型(LLM)的过程。这个框架提供了一套工具和命令,使得用户能够轻松地启动和使用各种流行的LLM,比如qwen,mistral等,更多大模型请参考available models(https://ollama.com/library)。

  • 什么是Open WebUI

Open WebUI 是一个开源项目,为本地大语言模型提供一个图形化界面。Open WebUI 支持各种 LLM 运行器,包括 Ollama 和 OpenAI 兼容的 API。它是一个自托管的 WebUI,可以在完全离线状态下运行,所有数据都存储在本地设备上。

Ollama + Open WebUI组合,支持在个人PC上运行LLM,并且通过Open WebUI图形化界面使得用户能更方便的调用Ollama提供的LLM能力,完美的契合了演示需求。

二、部署

环境:windows 11

  • Ollama部署

在我写这篇文章的时候,Ollama已经发布了Windows版本,直接去官网下载对应版本的安装包就好了, Ollama下载(https://ollama.com/download)。

下载之后文件如下图,双击.exe文件,傻瓜式安装就好了。

安装好之后运行你想要的大模型,比如我想运行 qwen0.5b,可以执行以下命令:

ollamarunqwen:0.5b

更多模型可以进到对应模型详情页下,如下图,左侧下拉框选择你想要的模型,执行右侧命令即可。

  • Open WebUI部署

有编程经验的,感兴趣可以去Github下载源码本地部署调试,这里介绍Docker部署。

编程小白在部署Open WebUI之前可以下载Docker Desktop(https://www.docker.com/products/docker-desktop/),下载之后傻瓜式安装。

Docker安装好之后拉取Open WebUI镜像,执行以下命令,这个过程比较长,耐心等待就好。

docker pull ghcr.io/open-webui/open-webui:main

启动Open WebUI容器,执行以下命令:

docker run -d -p3000:8080--add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

启动成功,浏览器访问 http://localhost:3000/,首次注册的用户为系统管理员,登录之后页面如下图,开始聊天之前选择想要的模型,就可以开始和大模型对话了。

来一段简易的对话:

可以看到,对话不仅支持普通的文本信息,还支持文件,大模型根据指定的文件做出分析回答。除此之外,在Workspace页,可以添加提示词(Prompt),在聊天界面通过@,#等命令引用对应的文档,提示词,让用户可以更高效的和大模型沟通。

至此,我们已经在本机上搭建起了一套大模型环境,即使在离线情况下也不影响使用。数据都存储在本地,也不用担心安全问题。

三、代码展示

关于离线和数据安全这部分,展示一下相关代码:

我们没有做额外的环境变量配置,所以这里的路径都是默认的路径,DATABASE_URL (数据库地址)指向的就是应用程序代码下的data目录。

系统会通过上面的DATABASE_URL路径创建数据库,并执行apps/web/internal/migrations下的脚本创建数据库结构等。

再看应用程序对应的文件,相应目录下确实存在webiu.db文件,存的是交互的数据,包含聊天记录,授权信息等,前面演示聊天上传的文件也在另外一个目录下。证明我们的数据信息都是保存在本机上,不会存在信息泄露的问题。

可以看到,系统会根据选择的模型得到Ollama服务的地址,再向其发送聊天请求,得到大模型的回答之后再返回给客户端。因为我们的Ollama服务是在本地运行的,所以这个请求最终还是由本机来处理,不涉及到联网请求。我将电脑网络断掉,仍然可以正常收到回答就更直观的验证了这一点。

有了客户端源码,也有了Ollama提供的本地大模型服务,我们可以根据自己需求对Open WebUI进行重新设计改造,保证了发布会顺利进行。

在本地集成AI(AI PC)目前不仅是一个概念,已有公司发布了相关产品,为用户带来了许多新的体验和便利。未来,我们的个人电脑就是一个强大的人工智能,为我们的学习办公提供更高效智能的帮助。

作者:张敏|高级前端开发工程


更多AI小知识欢迎关注“神州数码云基地”公众号,回复“AI与数字化转型”进入社群交流

版权声明:文章由神州数码武汉云基地团队实践整理输出,转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1962562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端代码混淆加密(使用Terser、WebpackObfuscator)

零、相关技术及版本号 "vue": "2.6.12", "vue/cli-service": "4.4.6", "javascript-obfuscator": "^4.1.1", "terser-webpack-plugin": "^4.2.3", "vue-template-compiler": &quo…

JAVA后端拉取gitee仓库代码项目并将该工程打包成jar包

公司当前有一个系统用于导出项目,而每次导出的项目并不可以直接使用,需要手动从gitee代码仓库中获取一个模板代码然后将他们整合到一起它才是一个完整的项目,所以目前我的任务就是编写一个java程序可以自动地从gitee仓库拉取下来那个模板代码…

纯前端实现导出pdf文件(服务端不参与)

大致查阅了现阶段使用较多的几种方案,,大概有以下几种方式: 一、原生window.print()方法导出pdf 二、jspdf 三、jspdf html2canvas 四、pdfmake 方案优点缺点window.print()1、兼容性最好 2、可以将任意内容导出成 pdf 文档, 甚至是非改页面上的内容1…

⑦【从0制作自己的ros导航小车:上位机篇】02、ros1多机通讯与坐标变换可视化

从0制作自己的ros导航小车 前言一、ros1多机通讯二、rviz可视化小车坐标系 系列文章: ①【从0制作自己的ros导航小车:介绍及准备】 ②【从0制作自己的ros导航小车:下位机篇】01、工程准备_标准库移植freertos ③【从0制作自己的ros导航小车&a…

Sobel Operator

什么是图像边缘? 边缘是指图像中灰度或颜色强度发生显著变化的区域。 什么是Sobel operator Sobel算子是一种用于图像处理的边缘检测算子。它通过计算图像灰度值的梯度来检测图像中的边缘。 什么情况产生梯度? 黑与白交界处。 Sobel 算子原理 计算P…

MLP多层感知机与Pytorch实现

参考文章: 1.动手学深度学习——多层感知机(原理解释代码详解)_多层感知机 代码-CSDN博客 2.4.1. 多层感知机 — 动手学深度学习 2.0.0 documentation 3.深度理解多层感知机(MLP) | 米奇妙妙屋 1. 神经网络由来 神经网…

ChatGPT指导如何完整写出研究论文的摘要

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 在学术写作中,学习如何为研究论文撰写简短且内容丰富的摘要非常重要。摘要可以让读者了解你的研究成果,快速浏览并决定是否要阅读更多内容。 但研究论文中的摘要…

Python面试宝典第23题:分发糖果

题目 n 个孩子站成一排,给你一个整数数组 ratings 表示每个孩子的评分。你需要按照以下要求,给这些孩子分发糖果。 (1)每个孩子至少分配到 1 个糖果。 (2)相邻两个孩子评分更高的孩子会获得更多的糖果。 请…

AI绘画SD万能模型 ControlNet Union (也称ControlNet++ 或 ControlNetPlus)!10余种控制效果一键生成!

大家好,我是画画的小强 Controlnet 可以说是目前最重要的一款 AI 绘画控制插件,可以帮我们实现轮廓、深度、动作姿势、颜色等多种控制效果。由于每种控制条件都需要调用不同的控制模型,加上 SD1.5 和 SDXL 的生态并不互通,大家肯…

【ROS 最简单教程 006/300】使用 launch 启动多个 ROS 节点

使用 launch 文件,可以一次性启动多个 ROS 节点 launch 文件编写的语法规则参见 👉 launch 文件编写 💜 💜 💜 💜 💜 简单示例如下 不使用 launch 需要启动三个命令行终端窗口,分别…

电商电子面单API对接方法

电商业务管理过程中,商家想要高效发货,使用电子面单是必不可少的,因为电子面单成本低、效率高,所以电商ERP、打单软件等这类应用对接电商电子面单API的需求量非常大。当应用通过电商电子面单API与电商平台、快递公司系统打通后&am…

Reranker技术

文章目录 Reranker技术0. 什么是RAG1. 什么是Reranker?2. Reranker在RAG技术中的应用3.使用 Reranker 的优缺点4.总结参考:知乎 Reranker技术 0. 什么是RAG 基础 RAG 的操作流程大致如下:首先,你需要将文本切分成小段&#xff0…

《深度RAG系列》 LLM 为什么选择了RAG

2023年是AIGC(Artificial Intelligence Generated Content)元年,这一年见证了人工智能生成内容领域的巨大飞跃,特别是大模型的爆发,它们在自然语言处理、图像生成、音频处理等多个领域展现出了惊人的能力。 这些预训练…

UVC驱动分析(一)

UVC驱动分析 UVC驱动简介Linux video框架分层UVC驱动注册UVC驱动注册入口函数UVC设备探测初始化UVC描述符解析V4L2设备注册UVC控制参数初始化UVC video驱动注册UVC 状态初始化 UVC驱动简介 UVC全称为USB Video Class,即:USB视频类,是一种为U…

Vue组件库移动端预览实现原理

引言 大家如果使用过移动端组件库(比如:Vant),会发现在网站右侧有一个手机端的预览效果。 而且这个手机端预览的内容和外面的组件代码演示是同步的,切换组件的时候,移动端预览的内容也会发生相应的变化。 …

基于python的百度迁徙迁入、迁出数据分析(四)

这篇文章是对上篇文章的可获取数据的时间区间的修正,依然通过开发者模式找寻相关数据源,我直接把数据url贴在这里,可以发现里面包含了相对明面上看不到的数据包括,行政区id、春运迁徙数据等:qianxi.cdn.bcebos.com/app…

LYT-Net——轻量级网络低光照条件图像修复模型推理部署(C++/Python)

1.环境安装 conda create -n LYT_Torch python3.9 -y conda activate LYT_Torchconda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidiapip install matplotlib scikit-learn scikit-image opencv-python yacs joblib natsort h5py tqdm tensor…

Conformal low power-7.运行Conformal Low Power 1801流程

要获取有关原生1801流程的最新信息(例如功能、指南、常见问题解答和dofile脚本),请使用SET WEB_INTERFACE ON命令启动Web界面。 左手边列出了所有的Conformal产品。还有一个名为“Sample Dofiles”的部分,提供了在不同场景下运行C…

第一个Python Web程序

1、离线安装Django 由于Python是3.7版本,Django选择2.2.4版本,并且中间需要安装依赖包。全部安装包如下: 打开Anaconda Prompt,先进入Python3.7环境,然后依次安装各个包: 至此,Django离线安装成功。 2、编写第一个Django程序 2.1 创建Django项目 创建项目welcome时…