在云服务器上搭建个人版chatGPT及后端Spring Boot集成chat GPT
原创/朱季谦
本文分成两部分,包括【国内服务器上搭建chat GPT】和【后端Spring Boot集成chat GPT】。
无论是在【国内服务器上搭建chat GPT】和【后端Spring Boot集成chat GPT】,两个方式都需要魔法访问,否则是无法正常使用的,即需要具备正常访问谷歌或者 api.openai.com的能力。
至于什么是魔法访问,以及如何搭建魔法访问,请自行研究哈。
下面就开始讲解两部分的教程。
一、国内服务器上搭建chat GPT
首先,你需要准备以下东西:
1、一台可以访问公网的Linux云服务器,最低配置1核2G即可(当然,有钱可以任性,买最高配置)
2、chatGPT的密钥
3、开源的仿chatGPT的Docker镜像
1.1、准备一台云服务器
可以是腾讯云、阿里云或者华为云等,我分别在阿里云和华为云上都能正常搭建。
1.2、设置网络代理
在部署魔法访问的服务器上,需要在/etc/profile增加代理,确保通过密钥方式的chatGPT接口调用能正常访问:
export all_proxy=http://127.0.0.1:8889
export http_proxy=http://127.0.0.1:8889
export https_proxy=https://127.0.0.1:8889
export all_proxy=socks5://127.0.0.1:1080
这里的8889和1080需要根据你的魔法访问里的config.json来相应设置。
配置完成后,执行source /etc/profile,检验一下curl https://api.openai.com/
可以访问即没问题。可以继续往下走。
1.3、安装Docker
可以按照我以前记录的一篇关于搭建Docker的方式进行命令行按照CentOS7安装Docker遇到的问题笔记
搭建完成后,因为Docker的对外访问若需要走所在宿主的代理话,还需要设置以下操作——
创建一个~/.docker/目录,然后在该目录下新建一个config.json文件,在该文件里添加以下命令——
{"default":{"httpProxy": "http://127.0.0.1:8889","httpsProxy": "http://127.0.0.1:8889","noProxy": "*.test.example.com,.example2.com,127.0.0.0/8"}}
}
1.4、Docker镜像
目前网上GitHub已经开源了许多优秀的仿写chatGPT 页面的应用,我们无需再额外造轮子,只需要挑选其中一款用来打包部署成Docker容器运行即可。
我使用的是chatgpt-mirror这个开源项目。
直接克隆项目到对应的Linux服务器——
git clone https://github.com/yuezk/chatgpt-mirror.git
在基于该开源项目以Dockerfile形式打包前,需要执行以下被依赖到的镜像——
docker pull node:18-alpine
docker pull node:18-slim
接下来,就可以执行以下操作来创建一个Docker镜像了——
cd chatgpt-mirror
#--network host表示与宿主公用网络,即走代理,然后留意下最后有一个 .
docker build --network host -t chatgpt-mirror .
#正常执行成功后,通过该指令能看到一个新镜像
docker images
具体情况如下:
然后需要在cd chatgpt-mirror环境里新增一个文件env,该文件里写入chatGPT密钥与宿主机器的代理:
OPENAI_API_KEY=你的chatGPT密钥
HTTP_PROXY=http://127.0.0.1:8889
完成以上操作后,最后在该目录chatgpt-mirror里执行——
docker run -itd --net host -p 3000:3000 -v /app/config.json:/app/config/app.config --env-file env chatgpt-mirror
正常执行完成后,即可在浏览上输入http://你的服务器ip:3000,就能出来一个外表仿chatGPT但内在是调用真实chatGPT接口的应用。
重点是,如此一来,你的电脑、平台、手机等终端都无需魔法访问,就能直接使用chatGPT了,而且响应速度比直连官网快一倍左右速度,无比丝滑!而且,没有像chatGPT官网直连那样经常出现响应异常以及断开的问题,协助效率大大增加。
以下就是访问搭建在我自己服务器上的chatGPT页面,是不是跟真实的很像。
二、后端Spring Boot集成chat GPT
注意,该方式同样需要魔法访问。
首先,在maven依赖引入以下配置——
<dependency><groupId>com.theokanning.openai-gpt3-java</groupId><artifactId>service</artifactId><version>0.11.1</version>
</dependency>
编写以下代码——
@GetMapping("/ai")
public void sendMsg() throws InterruptedException {System.out.println("开始提问题~");System.out.println("你是一个工作助手,情帮忙设计一份活动策划书" );//GPT_TOKEN即你的代码密钥OpenAiService service = new OpenAiService(GPT_TOKEN,Duration.ofSeconds(10000));CompletionRequest completionRequest = CompletionRequest.builder()//使用的模型.model("text-davinci-003")//输入提示语.prompt("设计一份活动策划书")//该值越大每次返回的结果越随机,即相似度越小,可选参数,默认值为 1,取值 0-2.temperature(0.5)//返回结果最大分词数.maxTokens(2048)//与temperature类似.topP(1D).build();service.createCompletion(completionRequest).getChoices().forEach(System.out::println);Thread.sleep(6000);
}
CompletionRequest的属性文档介绍在这里——
https://platform.openai.com/docs/api-reference/completions/create
启动,调用该接口,即可正常使用chat GPT集成到SpringBoot后端代码里——
需要注意的是,若是部署在有魔法访问的Linux云服务,代码需要相应做一下调整,否则是无法访问到chatGPT的,会出现以下异常提示:java.net.ConnectException:Failed to connect to api.openai.com/2a03:2880:f10c:283:face:b00c:0:25de:443]
故而,需要做以下调整:
public void send1Msg() throws InterruptedException {System.out.println("开始提问题~");System.out.println("你是一个工作助手,情帮忙设计一份活动策划书" );//需要额外设置一个能访问chatGPT的魔法访问代理ObjectMapper mapper = defaultObjectMapper();Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8889));OkHttpClient client = defaultClient(GPT_TOKEN,Duration.ofSeconds(10000)).newBuilder().proxy(proxy).build();Retrofit retrofit = defaultRetrofit(client, mapper);OpenAiApi api = retrofit.create(OpenAiApi.class);//将设置的代理传给OpenAiService即可OpenAiService service = new OpenAiService(api);CompletionRequest completionRequest = CompletionRequest.builder().model("text-davinci-003").prompt("设计一份活动策划书").temperature(0.5).maxTokens(2048).topP(1D).build();service.createCompletion(completionRequest).getChoices().forEach(System.out::println);Thread.sleep(6000);
}
部署在Linux云服务上的聊天返回打印效果——
以上就是关于【国内服务器上搭建chat GPT】和【后端Spring Boot集成chat GPT】教程,更多好玩的关于chat GPT相关的内容,可以关注我,因为我对这块很感兴趣,接下来会分享更多相关内容。有不懂的也可以后台问我。
相关文章:

在云服务器上搭建个人版chatGPT及后端Spring Boot集成chat GPT
原创/朱季谦 本文分成两部分,包括【国内服务器上搭建chat GPT】和【后端Spring Boot集成chat GPT】。 无论是在【国内服务器上搭建chat GPT】和【后端Spring Boot集成chat GPT】,两个方式都需要魔法访问,否则是无法正常使用的,即…...
MYSQL基础知识之【索引】
文章目录 前言MySQL 索引普通索引创建索引修改表结构(添加索引)创建表的时候直接指定删除索引的语法唯一索引创建索引修改表结构创建表的时候直接指定使用ALTER 命令添加和删除索引使用 ALTER 命令添加和删除主键显示索引信息 后言 前言 hello world欢迎来到前端的新世界 &…...

工信部:1—10月我国软件业务收入98191亿元 同比增长13.7%
2023年1—10月份软件业经济运行情况 1—10月份,我国软件和信息技术服务业(以下简称“软件业”)运行态势平稳,软件业务收入较快增长,利润总额两位数增长,软件业务出口降幅持续收窄。 一总体运行情况 软件…...

直播预告 | AR眼镜在现代医疗中究竟有哪些妙用?11.28晚八点虹科直播间为您揭晓!
直播预告 | AR眼镜在现代医疗中究竟有哪些妙用?11.28晚八点虹科直播间为您揭晓! 什么是AR眼镜? AR眼镜,即增强现实眼镜,是一种结合虚拟信息与真实世界的创新医疗工具。 通过集成高科技传感器和实时数据处理技术&…...

独乐乐不如众乐乐(二)-某汽车零部件厂商IC EMC企业规范
前言:该汽车零部件厂商关于IC EMC的规范可能是小编看过的企业标准里要求最明确的一份企业标准了,充分说明了标准方法不是死的,可以灵活应用。 先看看这份规范的抬头: 与其他企业规范一样,该汽车零部件厂商的IC EMC规范…...

每日汇评:黄金有望在美欧通货数据周回升至2020美元上方
金价在2000美元以上占据主导地位,巩固了其2018美元的六个月高点; 美元在避险情绪中暂停下跌,美债收益率小幅上升; 金价本周收于2000美元以上,在关键通胀数据公布之前将有更多涨幅; 黄金价格已经从周一亚洲早…...

Matlab数学建模算法详解之混合整数线性规划 (MILP) 算法(附完整实现代码)
🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥 推荐专栏:《算法研究》 #### 防伪水印——左手の明天 #### 💗 大家好🤗ᾑ…...

个人硬件测试用例入门设计
📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 🌤️功能测试 进行新增、…...

Lazada测评怎么做?
国内电商行业的发展日趋激烈,卖家想要脱颖而出非常困难,许多卖家选择入驻跨境电商平台开店, 跨境电商平台吸引了许多卖家入驻,而最近有很多朋友在私信问我关于Lazada测评的一些事情 Lazada产品测评流程步骤 怎么测评 这个怎么测…...
flv视频轮播功能(单个时)
1.轮播思路 获取八个视频源的地址。 将这些地址分成两组,每组包含四个地址。 在页面中创建一个四分屏布局的视频播放器。 将第一组的四个视频地址分别插入到四分屏布局的四个视频框中。 设置一个定时器,每10秒执行一次。 每次定时器触发时…...

快速了解软件工程学概述(5种软件过程模型)
目录 1 、什么是软件?特点有哪些 ? 2 、 软件危机 定义: 软件危机产生的原因 消除软件危机的方法 3 、软件工程 1.软件工程的介绍 (1)概念 (2)本质特征 (3)软件工程方法学(方…...
sql21(Leetcode1174即时食物配送2)
代码: # Write your MySQL query statement belowselect round (sum(order_date customer_pref_delivery_date) * 100 /count(*),2 ) as immediate_percentage from Delivery where (customer_id, order_date) in (select customer_id, min(order_date)from deliv…...

Node——Node.js基础
对Node.js中的基础知识进行讲解,包括全局变量、全局对象、全局函数以及用于实现模块化编程的exports和module对象等内容,这些知识是学习Node.js应用开发的基础。 1、Node.js全局对象 全局,即程序中任何地方都可以使用,Node.js内…...

基于SSM的企业订单跟踪管理系统(有报告)。Javaee项目
演示视频: 基于SSM的企业订单跟踪管理系统(有报告)。Javaee项目 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringM…...
中国吡啶行业市场研究与投资评估报告(2023版)
内容简介: 目前吡啶及其衍生物作为某些化学合成反应的催化剂,需求量在不断增加,因此吡啶在化学品合成领域的市场潜力最大。此外,对高效农药的需求量上升也是促进全球吡啶市场发展的另一关键因素。受人均可支配收入的持续增长和对…...

鼠标点击位置获取几何体对象_vtkAreaPicker_vtkInteractorStyleRubberBandPick
开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码 demo解决问题:框选或者点选某一区域,并获取区域prop3D对象(红线内为有效区域,polydata组成的3d几何对象&a…...
【好玩的 Docker 项目】搭建一个简洁的记事本 ——minimalist-web-notepad
前言 搭建一个类似于 notepad 的纯文本笔记本,可以用来做记事本,也可以用来做临时记录的工具。 演示地址:https:/https://chinausdt.com 环境准备 腾讯香港轻量云应用服务器 1 核 1G(24 元 / 月款)域名一枚并做好解析Docker宝塔面板安装 Docker 更新、安装必备软件 BA…...

Linux4.5、进程状态
个人主页:Lei宝啊 愿所有美好如期而遇 目录 进程状态介绍 Linux下具体进程状态 R状态 和 S状态 D状态 T状态 t状态 Z状态 X状态 进程状态介绍 首先,进程状态有运行,阻塞,挂起,这些只是一个大体的概括&am…...

C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色)
目录 效果 模型信息 mot_ppyoloe_s_36e_ppvehicle.onnx vehicle_attribute_model.onnx 项目 代码 下载 其他 C# Onnx PP-Vehicle 车辆分析(包含:车辆检测,识别车型和车辆颜色) 效果 模型信息 mot_ppyoloe_s_36e_ppvehi…...

OpenGL之Mesa3D编译for Ubuntu20.04(三十六)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...

Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
【Ftrace 专栏】Ftrace 参考博文
ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...
使用 uv 工具快速部署并管理 vLLM 推理环境
uv:现代 Python 项目管理的高效助手 uv:Rust 驱动的 Python 包管理新时代 在部署大语言模型(LLM)推理服务时,vLLM 是一个备受关注的方案,具备高吞吐、低延迟和对 OpenAI API 的良好兼容性。为了提高部署效…...

【AI学习】wirelessGPT多任务无线基础模型摘要
收看了关于WirelessGPT多任务无线基础模型的演讲视频,边做一个记录。 应该说,在无线通信大模型的探索方面,有一个非常有益的尝试。 在沈学明院士带领下开展 https://www.chaspark.com/#/live/1125484184592834560...

JAVA反序列化应用 : URLDNS案例
反序列化的基本原理 基础普及 : 对象初始化数据方法 :1、使用构造方法 2、使用封装中的 set,get方法 这边我们就使用 1 注意 我们之后还需要进行 接入 序列化的接口 : 先进行序列化 : 反序列化: 反序列化导致的安…...