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

在这里插入图片描述

本文比惯例提前了一天发,因为明天一早,老苏就踏上回乡的路了,三年没回老家,这次专门请了 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:latestcontainer_name: localai-apihealthcheck:test: ["CMD", "curl", "-f", "http://localhost:8080/readyz"]interval: 1mtimeout: 20mretries: 20ports:- 8668:8080volumes:- ./models:/models:cachedenvironment:- 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:maincontainer_name: localai-webports:- 8669:3000environment:- '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.xdnf.cn/news/142154.html

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

相关文章

基于STM32的蔬菜大棚温湿度智能控制系统设计

一、前言 随着人们对健康和可持续生活方式的关注不断增加,蔬菜大棚成为了现代农业中的重要组成部分。蔬菜大棚提供了一个受控的环境,使得农民能够在任何季节种植蔬菜,并根据需要进行调节。为了实现最佳的蔬菜生长和产量,对温度和…

RedisTemplate出现\xac\xed\x00\x05t\x00\x0f前缀解决

问题描叙 出现这种乱码前缀的原因是没有进行序列化,因此导致在传输过程出现乱码问题,存到数据库,发现 key,hash key/value 都有 \xAC\xED\x00\x05t\x00 前缀。RedisTemplate类中默认是没有设置序列化的。 解决方法 设置RedisTemplate的序列…

微机原理与接口技术

一、微型计算机系统概述二、总线 总线(Bus):是连接计算机各部件的一组公共信号线;总线上能同时传送二进制信息的位数称为总线宽度。 优点:大大减少传输线数目,结构简单,便于扩充 总线按传送信息分类:地址总线、数…

华为小型智能园区网络解决方案

云时代来袭,数字化正在从园区办公延伸到生产和运营的方方面面,智慧校园,柔性制造,掌上金融和电子政务等,面对各种各样的新兴业态的涌现,企业需要构建一张无所不联、随心体验、业务永续的全无线网络&#xf…

burpsuite只有intruder中文乱码

burpsuite 只有intruder模块中文乱码 现象:解决方案 现象: 在proxy、repeater等模块下中文均可正常显示,如下图: 在intruder模块,中文显示乱码 解决方案 在payloads标签下payload processing中添加“Decode”

web服务基础

前言:web服务怎么做,怎样使用,这是一个长期的任务 1、DNS解析原理 在windows 客户端查看本地缓存的DNS解析记录 C:\Users\86157>ipconfig /displaydns #其中这两个字符之间会有空格 在windows11 中的命令行运行结果如下 清除win客户端…

【区块链 | DID】白话数字身份

《十四五数字经济发展规划》提出建立健全政务数据共享协调机制,加快数字身份统一认证和电子证照、电子签章、电子公文等互信互任,推进发票电子化改革,促进政务数据共享、流程优化和业务协同。在数字经济逐渐成形的背景下,推进数字…

Elasticsearch 集群时的内部结构是怎样的?

Apache Lucene : Flush, Commit Elasticsearch 是一个基于 Apache Lucene 构建的搜索引擎。 它利用 Lucene 的倒排索引、查询处理和返回搜索结果等功能来执行搜索。 它还扩展了 Lucene 的功能,添加分布式处理功能以支持大型数据集的搜索。 让我们看一下 Apache Luc…

Learn Prompt- Midjourney Prompt:Prompt 提示语

基础结构​ 一个基本的提示可以简单到一个单词、短语或表情符号。非常短的提示将在很大程度上依赖于 Midjourney 的默认样式。 完整 prompt:可以包括一个或多个图像链接、多个文本短语或单词,以及一个或多个后缀参数 Image Prompts: 可以将图像 URL 添加…

比特币的蒙提霍尔问题

把钱放在嘴边 我们在比特币上建立了蒙提霍尔问题模拟。 如果您知道概率谜题的正确答案,不仅炫耀您的数学技能,还会获得金钱奖励。 它完全无需信任地在链上运行。 蒙提霍尔问题 蒙提霍尔问题(三门问题)是一个以蒙提霍尔命名的概率…

数据一致性:核心概念与实现策略

在当今的信息时代,数据已经成为了企业的核心资产之一。然而,随着数据量的不断增长和应用场景的不断扩大,如何保证数据的一致性成为了一个重要的挑战。数据一致性不仅关系到系统的正确性和可靠性,也直接影响到用户的体验和企业的业…

图像绘制-线段、矩形、圆形、椭圆等

在实际运用中,我们会在图片上添加一些图形,比如目标检测时在物体周围画个矩形框,人脸识别中将人脸的关键点用点(圆形)标出来。 OpenCV常用的形状绘制方法: 线段的绘制 线段的绘制是使用cv2.line(img, pt…

C++QT day11

绘制时钟 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPaintEvent>//绘制事件类 #include <QDebug>//信息调试类 #include <QPainter>//画家类 #include <QTimer>//定时器类 #include <QTime> #include &…

积跬步致千里 || 可视化动图展示

可视化动图展示 目前只能在 jupyter notebook 中测试成功 %matplotlib notebook import numpy as np import matplotlib.pyplot as plt import timen 500 data np.random.normal(0,1,n)fig plt.figure() ax fig.add_subplot(111)fig.show() fig.canvas.draw()for i in ra…

网络编程-TCP协议(客户端和服务端)

需要了解UDP协议的&#xff0c;可以看往期文章 https://flypeppa.blog.csdn.net/article/details/133273416 TCP/IP参考模型 代码案例 服务端代码 package com.hidata.devops.paas.udp;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr…

Android之AMessage机制存/取原理(四十四)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…

Ribbon负载均衡器

两种&#xff1a; 1.1 集中式负载均衡&#xff0c;服务端负载均衡 硬件 nginx 轮询、负载、哈希、随机、权重 为什么要做负载均衡&#xff1f; 1.2 客户端负载均衡器 用客户端 负载均衡器 很多机制可以自定义 小知识&#xff1a;不想让别人调自己&#xff0c;只想用别人的…

似然和概率

前言 高斯在处理正态分布的首次提出似然&#xff0c;后来英国物理学家&#xff0c;费歇尔 概率是抛硬币之前&#xff0c;根据环境推断概率 似然则相反&#xff0c;根据结果推论环境 P是关于x的函数&#xff0c;比如x为正面朝上的结果&#xff0c;或者反面朝上的结果&#xf…

C语言连接MySQL并执行SQL语句(hello world)

1.新建一个控制台项目 参考【VS2022 和 VS2010 C语言控制台输出 Hello World】VS2022 和 VS2010 C语言控制台输出 Hello World_vs2022源文件在哪_西晋的no1的博客-CSDN博客 2.安装MySQL 参考【MySQL 8.0.34安装教程】MySQL 8.0.34安装教程_西晋的no1的博客-CSDN博客 3.复制MySQ…

Unity Bolt模块间通信

使用Bolt无代码设计开发的时候&#xff0c;我们不能简单的认为只需要一个FlowMachine就可以完成所有流程的开发。我们需要不同的模块进行拆分&#xff0c;以便更好的管理和协作。这就需要不同模块之间的通信处理。经过研究与使用&#xff0c;将常用的通信方式总结如下&#xff…