ollama-webui - Ollama的ChatGPT 风格的 Web 界面

更多AI开源软件:

发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI小众AI:发现分享好用的AI工具、AI开源软件、AI模型。收录了AI搜索引擎,AI绘画工具、AI对话聊天、AI音频工具、AI图片工具、AI视频工具、AI内容检测、AI法律助手、AI高考、AI志愿、AI办公工具、AI 3D工具、AI编程工具、AI知识学习,AI竞赛、AI算力平台等icon-default.png?t=O83Ahttps://www.aiinn.cn/

Ollama的ChatGPT 风格的 Web 界面,我们的聊天界面从 ChatGPT 中汲取灵感,确保用户友好的体验。

49200 Stars 80 贡献者 MIT License Python 语言

代码: GitHub - ntimo/ollama-webui: ChatGPT-Style Web UI Client for Ollama 🦙

主页: https://ollamahub.com/

主要功能

  • 🖥️ **直观的界面**:我们的聊天界面从 ChatGPT 中汲取灵感,确保用户友好的体验。
  • 📱 **响应式设计**:在桌面和移动设备上享受无缝体验。
  • ⚡ **快速响应:**享受快速响应的性能。
  • 🚀 **轻松设置**:使用 Docker 无缝安装,享受轻松体验。
  • 💻 **代码语法高亮**显示:通过我们的语法高亮功能享受增强的代码可读性。
  • ✒️🔢 **完整的 Markdown 和 LaTeX 支持**:通过全面的 Markdown 和 LaTeX 功能提升您的 LLM 体验,以丰富交互。
  • 📥🗑️ **下载/删除模型**:直接从 Web UI 轻松下载或删除模型。
  • 🤖 **多模型支持**:在不同的聊天模型之间无缝切换,以实现不同的交互。
  • ⚙️ **多个模型对话**: 毫不费力地同时与各种模型互动,利用他们的独特优势实现最佳响应。通过并行利用一组不同的模型来增强您的体验。
  • 🤝 **OpenAI 模型集成**: 无缝利用 OpenAI 模型和 Ollama 模型,以获得多样化的对话体验。
  • 🔄 **Regeneration History Access(重新生成历史访问**):轻松重新访问和探索您的整个重新生成历史。
  • 📜 **聊天记录**: 轻松访问和管理您的对话历史记录。
  • 📤📥 **导入/导出聊天记录**: 无缝将您的聊天数据移入和移出平台。
  • 🗣️ **语音输入支持**:通过语音交互与您的模型互动;享受直接与模型交谈的便利。此外,探索在静音 3 秒后自动发送语音输入的选项,以获得简化的体验。
  • ⚙️ **使用高级参数进行微调控制**: 通过调整温度等参数并定义系统提示来根据您的特定偏好和需求定制对话,从而获得更深层次的控制。
  • 🔐 **Auth Header 支持**:通过直接从 Web UI 设置向 Ollama 请求添加授权标头,轻松增强安全性,确保访问安全的 Ollama 服务器。
  • 🔗 **外部 Ollama 服务器连接**:通过在 Docker 构建阶段配置环境变量,无缝链接到托管在不同地址上的外部 Ollama 服务器。此外,您还可以从 Web UI 构建后设置外部服务器连接 URL。
  • 🔒 **后端反向代理支持**:通过在 Ollama Web UI 后端和 Ollama 之间实现直接通信来增强安全性,无需通过 LAN 公开 Olamma。

​​

安装和使用

使用 Docker Compose 安装 Ollama 和 Ollama Web UI

如果您还没有安装 Ollama,您可以使用提供的 Docker Compose 文件轻松安装。只需运行以下命令:

docker compose up -d --build

此命令将在您的系统上安装 Ollama 和 Ollama Web UI。确保修改文件以获得 GPU 支持,并在需要时在容器堆栈外部公开 Ollama API。compose.yaml​

仅安装 Ollama Web UI
先决条件

在继续安装之前,请确保您已安装最新版本的 Ollama。您可以在 Ollama 找到最新版本的 Ollama。

检查 Ollama

安装 Ollama 后,通过在 Web 浏览器中访问以下链接来验证 Ollama 是否正在运行:http://127.0.0.1:11434/。请注意,端口号可能会因您的系统配置而异。

使用 Docker 🐳

如果 Ollama 托管在本地计算机上并且可以在 http://127.0.0.1:11434/ 访问,请运行以下命令:

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway --name ollama-webui --restart always ghcr.io/ollama-webui/ollama-webui:main

或者,如果您希望自己构建容器,请使用以下命令:

docker build -t ollama-webui .
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway --name ollama-webui --restart always ollama-webui

您的 Ollama Web UI 现在应该托管在 http://localhost:3000 上,并通过 LAN(或网络)访问。享受!😄

访问其他服务器上的外部 Ollama

更改环境变量以匹配外部 Ollama 服务器 url:OLLAMA_API_BASE_URL​

docker run -d -p 3000:8080 -e OLLAMA_API_BASE_URL=https://example.com/api --name ollama-webui --restart always ghcr.io/ollama-webui/ollama-webui:main

或者,如果您希望自己构建容器,请使用以下命令:

docker build -t ollama-webui .
docker run -d -p 3000:8080 -e OLLAMA_API_BASE_URL=https://example.com/api --name ollama-webui --restart always ollama-webui

如何在没有 Docker 的情况下安装

虽然我们强烈建议使用我们方便的 Docker 容器安装以获得最佳支持,但我们知道某些情况可能需要非 Docker 设置,尤其是出于开发目的。请注意,非 Docker 安装不受官方支持,您可能需要自行进行故障排除。

项目组件

Ollama Web UI 由两个主要组件组成:前端和后端(用作反向代理,处理静态前端文件和其他功能)。两者都需要使用 .或者,您可以在构建过程中将 设置为让前端直接连接到您的 Ollama 实例,或者将前端构建为静态文件并与后端一起提供。npm run devPUBLIC_API_BASE_URL​

先决条件
  1. **克隆并进入项目:**

    git clone https://github.com/ollama-webui/ollama-webui.git
    cd ollama-webui/
    
  2. **创建和编辑 .env​:**

    cp -RPp example.env .env
    
构建 Ollama Web UI 前端
  1. **安装 Node 依赖项:**

    npm install
    
  2. **在开发模式下运行或生成以进行部署:**

    • Dev Mode(要求后端同时运行):

      npm run dev
      
    • 为部署而构建:

      # `PUBLIC_API_BASE_URL` overwrites the value in `.env`
      PUBLIC_API_BASE_URL='https://example.com/api' npm run build
      
  3. **使用 Caddy​(或您的首选服务器)测试 Build:**

    curl https://webi.sh/caddy | shPUBLIC_API_BASE_URL='https://localhost/api' npm run build
    caddy run --envfile .env --config ./Caddyfile.localhost
    
运行 Ollama Web UI 后端

如果您希望运行后端进行部署,请确保构建前端,以便后端可以与 API 路由一起提供前端文件。

设置说明
  1. **安装 Python 要求:**

    cd ./backend
    pip install -r requirements.txt
    
  2. **运行 Python 后端:**

    • 热重载的开发模式:

      sh dev.sh
      
    • 部署:

      sh start.sh
      

现在,您应该已在 http://localhost:8080/ 启动并运行 Ollama Web UI。随意探索 Ollama 的特性和功能!如果您遇到任何问题,请参阅上述说明或联系社区寻求帮助。

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

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

相关文章

【算法练习】852. 山脉数组的峰顶索引

题目链接&#xff1a;852. 山脉数组的峰顶索引 根据题目用复杂度用O(long n)的方法解决问题&#xff0c;我们可以想到用二分查找解决&#xff1a; class Solution { public:int peakIndexInMountainArray(vector<int>& arr) {int left0,rightarr.size()-1;while(left…

LLM - 多模态大模型的开源评估工具 VLMEvalKit 部署与测试 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/144353087 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 VLMEva…

MySQL | 尚硅谷 | 第12章_MySQL数据类型精讲

MySQL笔记&#xff1a;第12章_MySQL数据类型精讲 文章目录 MySQL笔记&#xff1a;第12章_MySQL数据类型精讲第12章_MySQL数据类型精讲 1. MySQL中的数据类型2. 整数类型2.1 类型介绍2.2 可选属性2.2.1 M2.2.2 UNSIGNED2.2.3 ZEROFILL 2.3 适用场景2.4 如何选择&#xff1f;演示…

Java 文件IO

一、什么是文件IO 文件是一个广义的概念&#xff0c;操作系统将很多资源都抽象成文件&#xff0c;这篇文章讲解文件特指硬盘上的文件 在硬盘上存在很多文件和目录&#xff0c;它们以一种N叉树的结构存储 注意&#xff1a;文件夹也是一种文件&#xff0c;它是一种目录文件 二、…

Rnnoise和SpeexDsp两种降噪方式有什么区别?

在蒙以CourseMaker 7.0软件中&#xff0c;增加了两种降噪模式&#xff0c;一种是Rnnoise&#xff0c;一种是SpeexDsp&#xff0c;这两种降噪模式有什么区别呢&#xff1f; Rnnoise 基于神经网络。当噪声与 rnnoise 的模型训练的噪声匹配时&#xff0c;它的效果非常好。比如说&…

搭建Discuz论坛

lnmp l&#xff1a;linux操作系统 n&#xff1a;nginx前端页面 m&#xff1a;mysql数据库&#xff0c;账号密码等等都是保存在这个数据库里面 p&#xff1a;php------nginx擅长处理的是静态页面&#xff0c;页面登录账户&#xff0c;需要请求到数据库&#xff0c;通过php把动态…

鸿蒙分享(四):弹窗简单封装

代码仓库&#xff1a;https://gitee.com/linguanzhong/share_harmonyos 鸿蒙api:12 引用的harmony-utils地址&#xff1a;OpenHarmony三方库中心仓 引用的harmony-dialog地址&#xff1a;OpenHarmony三方库中心仓 引用的loading-dialog地址OpenHarmony三方库中心仓 import…

厦门凯酷全科技有限公司抖音电商服务的卓越典范

在短视频和直播带货迅速崛起的时代&#xff0c;厦门凯酷全科技有限公司&#xff08;以下简称“凯酷全科技”&#xff09;以其专业的服务、创新的精神以及对市场的深刻理解&#xff0c;在抖音电商领域中脱颖而出&#xff0c;成为众多品牌商家信赖的选择。本文将深入探讨凯酷全科…

扫二维码进小程序的指定页面

草料二维码解码器 微信开发者工具 获取二维码解码的参数->是否登陆->跳转 options.q onLoad: function (options) {// console.log("options",options.q)if (options && options.q) {// 解码二维码携带的链接信息let qrUrl decodeURIComponent(optio…

MitelMiCollab 身份绕过导致任意文件读取漏洞复现(CVE-2024-41713)

0x01 产品描述: Mitel MiCollab 是一个企业协作平台,它将各种通信工具整合到一个应用程序中,提供语音和视频通话、消息传递、状态信息、音频会议、移动支持和团队协作功能。0x02 漏洞描述: Mitel MiCollab 的 NuPoint 统一消息 (NPM) 组件中存在身份验证绕过漏洞,由于输入…

电子商务人工智能指南 6/6 - 人工智能生成的产品图像

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

如何在 Ubuntu 上安装开源监控工具 Uptime Kuma

简介 Uptime Kuma&#xff08;或简称 Kuma&#xff09;是一个开源监控工具&#xff0c;用于监控 HTTP、HTTPS、DNS 等协议的服务。Uptime Kuma 提供多种功能&#xff0c;如多语言支持、多个状态页面、代理支持等。 接下来&#xff0c;我将一步一步教大家如何进行安装和部署&am…

国城杯2024——Curve

相关知识链接&#xff1a;https://tangcuxiaojikuai.xyz/post/187210a7.html #sagemath from Crypto.Util.number import *def add(P, Q):(x1, y1) P(x2, y2) Qx3 (x1*y2 y1*x2) * inverse(1 d*x1*x2*y1*y2, p) % py3 (y1*y2 - a*x1*x2) * inverse(1 - d*x1*x2*y1*y2, p…

第三部分:进阶概念 8.事件处理 --[JavaScript 新手村:开启编程之旅的第一步]

JavaScript 事件处理是 Web 开发中不可或缺的一部分&#xff0c;它允许开发者响应用户的交互行为&#xff08;如点击、键盘输入等&#xff09;或浏览器的行为&#xff08;如页面加载完成&#xff09;。通过事件处理&#xff0c;我们可以使网页更加动态和互动。以下是关于 JavaS…

STM32WB55 FUS烧录

FUS固件下载 Firmware Update Service&#xff08;FUS&#xff09;是一种用于在STM32WB微控制器上更新固件的功能。FUS下载是指通过FUS服务进行固件更新的过程。通过FUS下载&#xff0c;您可以通过无线方式将新的固件加载到STM32WB设备中&#xff0c;而无需使用传统的有线编程方…

BERT模型的实现

本文用 pytorch 实现一个BERT模型。 食用方法&#xff1a; 直接下载完整实现&#xff0c; 在自己本地跑一遍&#xff0c;保证不报错。先完成数据预处理阶段&#xff08;1-4&#xff09;的代码阅读&#xff0c;然后按照如下关键点的描述完成代码的实现。自己看着代码手写后续部…

Qt之第三方库‌QXlsx使用(三)

Qt开发 系列文章 - QXlsx&#xff08;三&#xff09; 目录 前言 一、Qt开源库 二、QXlsx 1.QXlsx介绍 2.QXlsx下载 3.QXlsx移植 4.修改项目文件.pro 三、使用技巧 1.添加头文件 2.写入数据 3.读出数据 总结 前言 Qt第三方控件库是指非Qt官方提供的、用于扩展Qt应用…

框架篇面试

一、Spring框架中的单例bean的安全性 Spring框架中有一个Scope注解&#xff0c;默认的值就是singleton&#xff0c;单例的&#xff1b;因为一般在spring的bean中注入的都是无状态的对象&#xff0c;所以没有线程安全问题。但是如果在bean中定义了可修改的成员变量&#xff0c;…

OpenAI 发布 o1 LLM,推出 ChatGPT Pro

OpenAI正式发布了专为复杂推理而构建的 OpenAI o1大型语言模型(LLM)。 该公司还推出了 ChatGPT Pro&#xff0c;这是一项每月 200 美元的套餐&#xff0c;包括无限制访问 OpenAI o1、o1-mini、GPT-4o 和高级语音对话。 OpenAI o1 从 9 月 12 日起在 ChatGPT 中推出预览版&…

【Linux】文件描述符fd

1.前置预备 文件 内容 属性访问文件之前&#xff0c;都必须先打开他 #include<stdio.h> int main() { FILE* fpfopen("log.txt","w"); if(fpNULL) { perror("fopen"); return 1; } fclose(fp); return 0…