Chatbot UI集成LocalAI实现自托管的ChatGPT

news2024/12/28 21:35:29

在这里插入图片描述

本文比惯例提前了一天发,因为明天一早,老苏就踏上回乡的路了,三年没回老家,这次专门请了 2 天的假

难得回家,打算多陪陪家人,和多年不见的朋友聚聚,当然如果有网络条件,还是会正常发文的

在这个中秋和国庆双节即将到来之际,老苏提前预祝大家度过一个愉快的假期,中秋和国庆快乐~


什么是 Chatbot UI ?

Chatbot UI是一个非常实用的聊天机器人 UI 组件库,是 OpenAIChatGPT UI 的开源克隆。可以帮助开发者快速构建个性化的聊天机器人界面,该组件库支持多种聊天机器人平台。可以自定义提示词,支持数据导入导出,还支持谷歌搜索插件,支持最新的 GPT-4模型。

LocalAI 一文中,我们提到了 2 种调用 LocalAI 的方法,而今天要介绍的则是第 3 种,将 Chatbot UI 作为前端,通过一个类似聊天的界面,用于与 AI 模型进行交互。您可以以对话方式输入文本并接收模型的响应,将 LocalAI 打造成一款聊天机器人

在这里插入图片描述

能够用来做前端的还有个项目:https://github.com/Dhruvgera/LocalAI-frontend,只是颜值差了点,直接被老苏 pass 掉了

在这里插入图片描述

安装

在群晖上以 Docker 方式安装。

镜像下载

镜像没有在 docker hub 上发布,而是发布到了 ghcr.io

SSH 客户端登录到群晖后,执行下面的命令

# 拉取镜像
docker pull ghcr.io/mckaywrigley/chatbot-ui:main

如果拉不动,也可以试试 docker 代理网站:https://dockerproxy.com/,但是会多几个步骤

# 如果拉不动的话加个代理
docker pull ghcr.dockerproxy.com/mckaywrigley/chatbot-ui:main

# 重命名镜像(如果是通过代理下载的)
docker tag ghcr.dockerproxy.com/mckaywrigley/chatbot-ui:main ghcr.io/mckaywrigley/chatbot-ui:main

# 删除代理镜像(如果是通过代理下载的)
docker rmi ghcr.dockerproxy.com/mckaywrigley/chatbot-ui:main

下载完成后,可以在 映像 中找到

在这里插入图片描述

如果你还没有下载 LocalAI 的镜像,可以看看前文

文章传送门:搭建本地人工智能框架LocalAI

docker-compose 安装

如果你之前已经安装过 LocalAI,建议用下面合并后的 docker-compose.yml 文件

version: '3.6'

services:
  api:
    image: quay.io/go-skynet/local-ai:latest
    container_name: localai-api
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/readyz"]
      interval: 1m
      timeout: 20m
      retries: 20
    ports:
      - 8668:8080
    volumes:
      - ./models:/models:cached
    environment:
      - MODELS_PATH=/models
      - DEBUG=true
      - 'PRELOAD_MODELS=[{"url": "github:go-skynet/model-gallery/gpt4all-j.yaml", "name": "gpt-3.5-turbo"}]'
    command: ["/usr/bin/local-ai" ]

  chatgpt:
    image: ghcr.io/mckaywrigley/chatbot-ui:main
    container_name: localai-web
    ports:
      - 8669:3000
    environment:
      - 'OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXX'
      - 'OPENAI_API_HOST=http://api:8080'
    depends_on:
      api:
        condition: service_healthy
  • PRELOAD_MODELS:启动期间预加载模型。为了允许 API 在首次启动时启动所有需要的模型;
  • OPENAI_API_KEY :用于 OpenAI 身份验证的默认 API 密钥。但我们用的是本地搭建的 LocalAI,所以这里并不需要真正的 OpenAI API Key,因此不需要修改,直接照抄即可;
  • OPENAI_API_HOST:指向 LocalAI的地址,也不需要修改;

更多的环境变量,请参考官方文档:https://github.com/mckaywrigley/chatbot-ui#configuration

然后执行下面的命令

# 进入 localai 目录
cd /volume1/docker/localai

# 更新目录下原来的 docker-compose.yml 文件

# 一键启动
docker-compose up -d

原来的 models 目录会多出 4 个文件,时间取决于你的网络情况

在这里插入图片描述

  • bin:是模型文件;
  • yaml: 是设置文件;
  • tmpl:是模板文件;

如果你网络下载遇到了问题,建议直接下载老苏分享到阿里云盘的文件:https://www.aliyundrive.com/s/XEc19L766Lz

运行

在浏览器中输入 http://群晖IP:8669 就能看到主界面

在这里插入图片描述

生成温度老苏还是设置为了 0.7,然后就可以开始提问了,这回老苏换了个问题

在这里插入图片描述

再问个中文的问题,居然回答是英文的

在这里插入图片描述

上难度

在这里插入图片描述

有没有发现一个问题?每次都会把之前的回复又输出一遍?不知道是 bug 还是模板设置问题

在这里插入图片描述

每次提问时,从 Finalshell 看日志, 发现 CPU 都是满负荷在工作

在这里插入图片描述

当然这都不是关键,关键是怎么才能把它真正搞成生产力工具呢?欢迎大家一起交流

参考文档

LocalAI/examples/chatbot-ui/docker-compose.yaml at master · go-skynet/LocalAI
地址:https://github.com/go-skynet/LocalAI/blob/master/examples/chatbot-ui/docker-compose.yaml

mckaywrigley/chatbot-ui: An open source ChatGPT UI.
地址:https://github.com/mckaywrigley/chatbot-ui

Chatbot UI
地址:https://www.chatbotui.com

Chatbot UI does not seems to be working · Issue #165 · go-skynet/LocalAI
地址:https://github.com/go-skynet/LocalAI/issues/165

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

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

相关文章

英语单词记忆学习打卡系统 微信小程序

本单词记忆系统使用了计算机语言Java和存放数据的仓库MySQL,采用了微信小程序模式来实现。本系统使用了框架SSM和Uni-weixin实现了单词记忆系统应有的功能,系统主要角色包括管理员和用户。 关键词:Java;MySQL;SSM  在…

Unity实现设计模式——命令模式

Unity实现设计模式——命令模式 推荐一个Unity学习设计模式很好的GitHub地址:https://github.com/QianMo/Unity-Design-Pattern 有非常多的Star 一、介绍 命令模式使得请求的发送者与请求的执行者之间消除耦合,让对象之间的调用关系更加灵活。在命令模…

聊聊零拷贝技术原理和应用

文章目录 0. 引言1. 什么是零拷贝技术 1. 零拷贝技术在不同领域的应用2.传统拷贝技术的缺点3. 零拷贝技术的原理与实现1. sendfile系统调用2. 内核缓冲区与用户缓冲区3. DMA(Direct Memory Access)技术4. 文件描述符传递与共享5. Direct I/O(…

Apache shiro RegExPatternMatcher 权限绕过漏洞 (CVE-2022-32532)

漏洞描述 2022年6月29日,Apache 官方披露 Apache Shiro (CVE-2022-32532)权限绕过漏洞。 当Apache Shiro中使用RegexRequestMatcher进行权限配置,且正则表达式中携带"."时,未经授权的远程攻击者可通过构造恶…

基于Springboot实现毕业生信息招聘平台管理系统演示【项目源码+论文说明】分享

基于Springboot实现毕业生信息招聘平台管理系统演示 摘要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 毕业生信息招聘平台,主要的模块包括查看管理员;首页、个人中心、企…

Nginx 可视化管理工具与 cpolar 配置:实现远程访问本地服务的优化

文章目录 前言1. docker 一键安装2. 本地访问3. Linux 安装cpolar4. 配置公网访问地址5. 公网远程访问6. 固定公网地址 前言 Nginx Proxy Manager 是一个开源的反向代理工具,不需要了解太多 Nginx 或 Letsencrypt 的相关知识,即可快速将你的服务暴露到外…

服务断路器_服务雪崩解决方案之服务降级

什么是服务降级 两种场景: 当下游的服务因为某种原因响应过慢,下游服务主动停掉一些不太重要的业务,释放出服务器资源,增加响应速度!当下游的服务因为某种原因不可用,上游主动调用本地的一些降级逻辑,避免…

SPA移动端解决方案参考

企业在实现SAP移动化时遇到的一些挑战,如果我们利用自己开发团队来进行应用程序的开发,可能会陷入规划,开发,调试,测试的循环中,最后仍一无所获。那如果企业寻找第三方咨询公司进行开发的话,又担…

【高阶数据结构】哈希的应用 {位图;std::bitset;位图的应用;布隆过滤器;布隆过滤器的应用}

一、位图 1.1 位图概念 面试题 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。【腾讯】 遍历查找:内存中无法存放40亿个整数(约占内存15-16G);时间复杂…

项目经理工具箱

新项目经理误区 要解决的关键点 事:范围,进度,成本,质量 人:项目干系人,团队,外包成员; 干系人管理计划,沟通管理计划 技术和管理区别和联系 非暴力沟通 结构思考力 重…

正点原子lwIP学习笔记——NTP实时时间实验

1. NTP简介 NTP(Network Time Protocol)网络时间协议基于UDP,用于网络时间同步的协议,使网 络中的计算机时钟同步到UTC,再配合各个时区的偏移调整就能实现精准同步对时功能。 NTP 服务器(Network Time Pr…

ERROR in docs.42140ac.js from UglifyJs webpack打包报错

ERROR in docs.42140ac.js from UglifyJs 原因是UglifyJs 针对js压缩 不支持es6语法(或者引入的第三方插件存在es6语法) ERROR in docs.42140ac.js from UglifyJs 使用的 uglifyjs-webpack-plugin 解决方法 降低uglifyjs-webpack-plugin的版本 “ugl…

系统化思考,从初级到高级书单推荐

用思考工具进行系统思考,解决复杂问题,成为某个领域的高手,下面这几本书就是补充你脑海的系统思考的工具,一定要保存。 《简单的逻辑学》 作者:麦克伦尼 一切的系统源自于逻辑,如果你没有逻辑分析的能力&…

[谷粒商城笔记]07、Linux环境-虚拟机网络设置

1.本机cmd,输入命令ipconfig,查看本地ip 192.168.56.1是虚拟机的ip 2.自定义虚拟机ip 修改这个文件下的 这里,把ip换成 192.168.56.‘10’ 引号内数字自定义 3.在本机和虚拟机命令行,互相ping IP 查看是否设置成功

静态NAT,动态NAT,NAPT(实验配置+原理讲解)

目录 静态NAT,动态NAT,NAPT 实验一:静态NAT地址转换 实验二:动态NAT配置 实验三:NAPT配置 静态NAT,动态NAT,NAPT 静态地址转换:只能实现一个私网与一个公网的一对一映射 动态地址转换:创建…

Python 编程基础 | 第一章-预备知识 | 1.5、开发工具

一、开发工具 - VSCode VSCode是一个相当优秀的IDE,具备开源、跨平台、模块化、插件丰富、轻量化、启动时间快、颜值高的特质。 1、下载VSCode VSCode下载地址:https://code.visualstudio.com/ 2、安装VSCode 载软件包,一步步安装即可&#x…

CSS笔记——基本语法及相关知识

CSS层叠样式表是用于定义 HTML 或 XML 文档的样式和布局的语言。它可以让开发者更加灵活地控制页面元素的样式和排版,从而提高页面的可读性和用户体验 一、css样式书写顺序和规范 CSS样式的书写顺序和规范是为了让代码更易读、易维护和易扩展。下面是一些常见的规…

嵌入式Linux应用开发-Makefile 的使用

嵌入式Linux应用开发-Makefile 的使用 第三章 Makefile 的使用3.1 配套视频内容大纲3.1.1 Makefile 规则与示例3.1.2 通用 Makefile 的使用3.1.3 通用 Makefile 的解析 3.2 Makefile 规则3.3 Makefile 文件里的赋值方法3.4.1 字符串替换和分析函数3.4.2 文件名函数3.4.3 其他函…

NeRF中的位置编码

朴素NeRF中直接采用频率变换来做位置编码,为的是避免空间相邻采样点在MLP表示中的过平滑问题。比如位置(237, 332, 198)和位置(237,332,199)这两个点作为MLP的输入,MLP可能对个位不够敏感,导致输出过平滑的问题。例如: 由于缺乏位…

华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 Docker

华为云云耀云服务器L实例评测 | 实例使用教学之软件安装:华为云云耀云服务器环境下安装 Docker 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么华为云云耀云…