体验LobeChat搭建私人聊天应用
LobeChat是什么
LobeChat
是开源的高性能聊天机器人框架,支持语音合成、多模态、可扩展的(Function Call)插件系统。支持一键免费部署私人ChatGPT/LLM
网页应用程序。
地址:https://github.com/lobehub/lobe-chat
为什么要用LobeChat
有些朋友会问,这些功能大部分都可以用chatGPT plus实现,为什么还要费劲安装 LobeChat
,我觉得有以下几点需求的朋友可以用到 LobeChat
:
- 有时需要在不开代理的情况下访问
ChatGPT
; - 有些场景下语音输入很便利,可以体验到
ChatGPT
安卓版的便利; - 只有一个账号的情况下想共享给朋友使用,并且要保证用户的隐私安全。
- 不仅体验
OpenAI
,有时需要切换其他大模型厂商; - 能自定义域名并个性化使用。
LobeChat的特性
GPT
视觉认知:LobeChat
支持GPT-4-vision
的视觉识别,实现多模态对话,用户可上传图片进行智能对话。- 语音互动: 支持文本转语音和语音转文本,多种声音选择,提升交流体验。
- 文生图功能: 结合最新
AI
技术,用户可将文本直接转换为图片。 - 插件系统: 扩展
ChatGPT
功能,包括实时信息获取、新闻、文档检索等。 - 助手市场: 提供多种助手,支持工作和学习,促进社区协作。
- 渐进式Web应用: 提供类似原生应用的体验,优化移动和桌面使用。
- 移动适配: 优化移动体验,欢迎用户反馈以改进版本。
- 自定义主题: 提供多种主题和颜色选择,满足个性化需求。
准备工作
需要以下准备工作提前做好,具体操作可以参考文章最后的参考文献。
- 一台服务器:使用
docker
部署服务时需要,使用Vercel
时不需要。 OpenAI API Key
:调用ChatGPT
提供的API
时需要使用。API
代理:要调用OpenAI API
,无法访问外网时需要代理服务,Vercel
部署时不需要。
安装体验
LobeChat
提供了 Vercel
的 自托管版本 和 Docker 镜像,这使你可以在几分钟内构建自己的聊天机器人,无需任何基础知识。
本人搭建的LobeChat,分享给大家体验一下:https://www.coderjia.cn/chatgpt ,额度用完即停止分享~
使用 Vercel
安装
白嫖 Vercel
的服务器资源,还不需要代理服务,推荐优先使用,不过个人版有限额,但够用了。
1、Fork 仓库
Fork
这个 https://github.com/lobehub/lobe-chat
仓库,为了保持和原仓库同步更新,建议执启动 Upstream Sync Action
,启用之后可以设置每小时进行一次自动更新。
2、注册 vercel 账户
Vercel
是一个自动化的Web
应用部署、预览和上线平台,结合了Github Page
和Github Action
的功能。它支持应用模板,帮助开发人员快速搭建和上线应用,同时支持Github
项目导入和联动。Vercel
专注于项目的部署和静态托管,提供Serverless Function
,但不涉及持续集成测试等其他CI/CD
流水线任务。此外,Vercel
支持零配置部署到全球边缘网络,提高访问速度,自动处理CDN
和HTTPS
配置,且可以部署多种环境,如生产环境和预览环境。用户可以通过Vercel
平台全自动部署个人网站,只需修改仓库中的代码并推送至Github
,Vercel
便会自动触发重新部署流程。
地址:https://vercel.com/
3、新建项目
可以通过这个Deploy链接直接创建项目,参数都准备好了,也可以按照下面步骤一步步创建。
新建项目:
选择自己git仓库中的项目,搜不到的话需要授权访问该项目:
设置环境变量:
环境变量 | 类型 | 描述 | 示例 |
---|---|---|---|
OPENAI_API_KEY | 必选 | 这是你在 OpenAI 账户页面申请的 API 密钥 | sk-xxxxxx...xxxxxx |
OPENAI_PROXY_URL | 可选 | 如果你手动配置了 OpenAI 接口代理,可以使用此配置项来覆盖默认的 OpenAI API 请求基础 URL | https://api.chatanywhere.cn 或 https://aihubmix.com/v1 默认值: https://api.openai.com/v1 |
ACCESS_CODE | 可选 | 添加访问此服务的密码,你可以设置一个长密码以防被爆破,该值用逗号分隔时为密码数组 | awCTe)re_r74 or rtrt_ewee3@09! or code1,code2,code3 |
CUSTOM_MODELS | 可选 | 用来控制模型列表,使用 + 增加一个模型,使用 - 来隐藏一个模型,使用 模型名=展示名 来自定义模型的展示名,用英文逗号隔开。 | qwen-7b-chat,+glm-6b,-gpt-3.5-turbo |
部署过程需要静静等待几分钟。。。
部署成功之后,可以配置域名,也可以进一步设置:
4、访问lobe-chat项目
点击中间图标进入,出现如下界面:
需要输入设置的访问密码 ACCESS_TOKEN
才能访问,也可以配置社交账号单点登录访问:
可以切换 ChatGPT
版本或者其他厂商的模型:
设置->默认助手->模型
手机访问,适配也是没问题的:
5、自定义域名
如下步骤可以设置自定义域名:
需要到域名解析服务商添加以下内容:
使用docker安装
Docker
部署也很简单,使用以下命令即可使用一键启动 LobeChat
服务:
$ docker pull lobehub/lobe-chat
$ docker run -d -p 3210:3210 \-e OPENAI_API_KEY=sk-xxxx \-e ACCESS_CODE=lobe66 \--name lobe-chat \lobehub/lobe-chat
如果你需要通过代理使用 OpenAI
服务,你可以使用 OPENAI_PROXY_URL
环境变量来配置代理地址:
$ docker run -d -p 3210:3210 \-e OPENAI_API_KEY=sk-xxxx \-e OPENAI_PROXY_URL=https://api-proxy.com/v1 \-e ACCESS_CODE=lobe66 \--name lobe-chat \lobehub/lobe-chat
总结
LobeChat
是一个功能强大、易于部署和使用的聊天机器人框架,为用户提供了一个创新的交互和沟通工具,可配置 OpenAI
、Azure OpenAI
、智普 AI
等多种模型 API
。配合租赁 OpenAI API Key
即可享受 ChatGPT plus
相关功能,适用于需要部署和使用聊天机器人的个人和企业,特别是那些寻求高性能、多功能和可定制化聊天机器人解决方案的用户。
参考
ChatGPT之开通ChatGPT4
ChatGPT之充值OpenAI API
ChatGPT之搭建API代理服务
相关文章:

体验LobeChat搭建私人聊天应用
LobeChat是什么 LobeChat 是开源的高性能聊天机器人框架,支持语音合成、多模态、可扩展的(Function Call)插件系统。支持一键免费部署私人 ChatGPT/LLM 网页应用程序。 地址:https://github.com/lobehub/lobe-chat 为什么要用Lobe…...

ClickHouse 指南(三)最佳实践 -- 主键稀疏索引
在ClickHouse主索引的实用介绍 ClickHouse release 24.1, 2024-01-30 1、简介 在本指南中,我们将深入研究ClickHouse索引。我们将详细说明和讨论: ClickHouse中的索引与传统的关系数据库管理系统有何不同ClickHouse是如何构建和使用表的稀疏主索引的什么是在Clic…...
【Nginx】Nginx配置反向代理 和 https
nginx.conf配置 进入linux /etc/nginx/ 打开nginx.conf 进行以下配置 http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {#监听443端口listen 443 ssl;#你的域名server_name huiblog.top;#ssl证书的pe…...
ChatGPT第七讲
ChatGPT为什么会被热炒? 2023年上半年,ChatGPT引起了广泛的热议,对于ChatGPT有多热,不需要我重复了,你可能在网上看到了很多报道,标题如《ChatGPT揭开AI战幔:杀死黄页一样摧毁Google?…...
Chapter 2 of Effective C++ (构造/析构/赋值运算)
条款06:了解C默默编写并调用哪些函数 Know what functions C silently writes and calls 编译器会为空类生成一个copy构造函数、copy assignment操作符和一个析构函数。此外如果你没有声明任何构造函数,它也会生成一个默认构造函数。 (对C1…...
Android学习笔记 service启动方式
在Android系统中,Service的启动方式主要有两种: ## 1. startService 这种方式用于启动一个服务执行后台任务,不进行通信。当你调用startService()方法启动服务后,服务会一直无限期运行下去,只有在外部调用了stopServi…...

Redis 工具类 与 Redis 布隆过滤器
Redis 工具类 1. 核心依赖 <!--redis--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency><groupId>com.google.guava…...

自定义el-upload 上传文件
前言 最近在做一个文件上传的功能,后端接口写好了、发现前端上传文件的页面不会写……(我很笨的)然后我就找啊找发现element有个组件是<el-upload/>能直接上传文件。我就想直接用拿来改改改成自己想要的,可是就是这样我花了…...

LeetCode69. x 的平方根(C++)
LeetCode69. x 的平方根 题目链接代码 题目链接 https://leetcode.cn/problems/sqrtx/description/ 代码 class Solution { public:int mySqrt(int x) {int right x, left 0, ans -1;while(left < right){long long mid left (right - left) / 2;if(mid * mid <…...
[c++] 单例模式 + cyberrt TimingWheel 单例分析
单例模式要求一个类在一个进程中只能创建一个对象。比如 cyberrt 中的 TimingWheel 类就是单例模式,这个类管理着一个进程内的所有定时器,只需要一个对象就可以。 单例模式的实现有两种方式,懒汉式和饿汉式。懒汉式,当第一次使用…...
如何在cmd里面创建一个vue项目
在命令提示符(CMD)中创建一个Vue项目,你需要先确保你已经全局安装了Vue CLI(Vue的命令行工具)。如果你还没有安装Vue CLI,可以通过以下命令进行安装: bash复制代码 npm install -g vue/cli # O…...
Day2 JS基础
2.1 运算符 赋值运算符 一元运算符 -- <script>let h20let kh hconsole.log(h) //22console.log(k) //42let i1console.log(i i i) //7 // 递增运算符:var a8aconsole.log(a) //9 var num10var bnumconsole.log(b) //10</script> 比较运…...
mybatis----有用配置知识归纳(狂神说学习总结)
1.mybatis介绍 MyBatis 是一款优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类映射成数据库中的记录 官网 Mybatis中文官方文档 : https…...

【TCP/IP】组播
一、组播介绍 组播(Multicast)是网络技术中数据传输的一种方法,它允许将数据包同时发送给一组指定的目标,而不是单个的目标(单播 Unicast)或所有可能的目标(广播 Broadcast)。组播传…...

java 内存模型
程序计数器 线程私有主要字节码解释器通过读取程序计数器来选取下一条需要执行的指令,比如分支,循环,跳转和异常处理如果执行的是java 方法,那么程序计数器记录的时候虚拟机字节码指令的地址,如果执行的是native 方法…...

Linux——缓冲区封装系统文件操作
📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、FILE二、封装系统接口实现文件操作1、text.c2、mystdio.c3、mystdio.h 一、FILE 因为IO相…...

深度学习系列59:文字识别
1. 简单文本: 使用google加的tesseract,效果不错。 首先安装tesseract,在mac直接brew install即可。 python调用代码: import pytesseract from PIL import Image img Image.open(1.png) pytesseract.image_to_string(img, lan…...
学习JAVA的第七天(基础)
目录 static 静态变量 静态方法 工具类: static的注意事项 继承 继承的好处 继承的特点 方法的重写 书写格式 override重写注解 方法重写的要求 this关键字 super关键字 static static表示静态,是Java中的一个修饰符,可以修饰成…...

GoLand 相关
goland 下载依赖 go mod tidy:保持依赖整洁 go mod tidy 命令的作用是清理未使用的依赖,并更新 go.mod 以及 go.sum 文件。 go mod tidy 和 go mod vendor 两个命令是维护项目依赖不可或缺的工具。go mod tidy 确保了项目的 go.mod 文件精简且准确&…...

顶顶通呼叫中心中间件-如何使处于机器人话术中的通话手动转接到坐席分机上
文章目录 前言联系我们实现步骤freeswitch命令转接api接口转接 前言 本文讲解呼叫中心中间件如何手动转接通话。 场景:利用自动外呼进入机器人,在通话过程中,转接到坐席分机上。 联系我们 有意向了解呼叫中心中间件的用户,可以点…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...

Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...