在云服务器上搭建个人版chatGPT及后端Spring Boot集成chat GPT
总结/朱季谦
本文分成两部分,包括【国内服务器上搭建chat GPT】和【后端Spring Boot集成chat GPT】。
无论是在【国内服务器上搭建chat GPT】和【后端Spring Boot集成chat GPT】,两个方式都需要魔法访问,否则是无法正常使用的。
至于什么是魔法访问,以及如何搭建魔法访问,请自行研究哈。
下面就开始讲解两部分的教程。
一、国内服务器上搭建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页面,是不是跟真实的很像。
二、后端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的更多相关文章
- 阿里云服务器上搭建seafile专业版
因为官方一键安装教程在阿里云服务器上无法安装,由于水平有限,无法解决,所以选择手动安装 参考资料: 1,.腾讯云搭建seafile服务器 2.How to Install Seafile with N ...
- 在centos 7云服务器上搭建Apache服务器并访问到你的网站
网站是指在互联网上根据一定的规则,用HTML等语言制作的网页的集合.网站的目的是用来展示一些信息,如果是个人网站则是为了展示自己的一些想被人知道的东西,例如自己的一些作品,又或者是通过网站来达到盈利的 ...
- 如何在阿里云服务器上搭建wordpress个人网站
1.购买云服务器.域名.域名解析.配置linux系统上的web环境.FTP等参照下面的链接. https://www.cnblogs.com/smyhvae/p/4965163.html?tdsour ...
- 云服务器上搭建cobalt strike遇到的一些小问题
一.前言: 当你兴高采烈的买了一台云服务器,迫不及待地想去搭建传说中的神器cobalt strike的时候,你可能会遇到以下的一些小问题,这里我会列出对应的解决方法. 二.遇到的一些小问题 1.上传文 ...
- 在阿里云服务器上搭建xampp遇到的问题
参考文章:http://blog.csdn.net/hel12he/article/details/49781813 http://www.laozuo.org/8178.html http://bl ...
- 在centos7云服务器上搭建Apache服务器并访问到你的网站
使用X-shell ssh安全连接到云服务器 https://mail.qq.com/cgi-bin/mail_spam?action=check_link&url=https://www.n ...
- 在阿里云服务器上搭建 Apache Tomat 应用
在阿里云上购买一台服务器,系统采用 window 2008 Server 企业版,64位 1.下载Java7 JRE,安装 http://www.java.com/zh_CN/download/man ...
- 腾讯云服务器上搭建 2.176.3-1.1 版本的Jenkins,jdk 11
[root@VM_0_12_centos fonts]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@VM_0 ...
- 腾讯云服务器上搭建Jenkins配置邮箱通知
1,Jenkins 点击 系统管理 2,点击系统管理 3,配置系统管理员邮件地址 5,配置 Extended E-main Notification,(用户名不需要邮箱后缀“@163.com”, SS ...
- PHP绿色集成环境在云服务器上的应用,PHPWAMP在服务器上搭建网站案例
问:什么叫WAMP?答:Windows下的Apache+Mysql+PHP,称之为WAMP. 本文案例采用的PHP集成环境是我自己开发的纯绿色版WAMP软件(PHPWAMP). 我在这款集成环境里集成 ...
随机推荐
- fiddler everywhere 抓包工具的使用
1.功能 手机微信或者浏览器访问网址都可以在fidder里面抓到http请求 2.配置 电脑fidder setting->允许安卓手机远程访问 安卓手机 设置->wifi代理 主机名是电 ...
- vue后台管理系统
1. 项目概述: 根据不同的应用场景,电商系统一般都提供了 PC 端.移动 APP.移动 Web.微信小程序等多种终端访问方式. 2. 电商后台管理系统的功能 电商后台管理系统用于管理用户账号.商品分 ...
- 对象和类复习题(c++ prime plus )
第一题: 为复习题5描述的类提供方法定义,并编写一个小程序来演示所有的特性: bank.h #ifndef BACK_H_ #define BACK_H_ #include <string> ...
- 20200924--图像相似度(奥赛一本通P92 5多维数组)
给出两幅相同大小的黑白图像(用0-1矩阵)表示,求它们的相似度.说明:若两幅图像在相同位置上的像素点颜色相同,则称它们在该位置具有相同的像素点.两幅图像的相似度定义为相同像素点数占总像素点数的百分比. ...
- 初步学习UE网络同步
UE 网络同步和框架介绍 为一个UE引擎的初学者基于现有知识储备和见识的限制下,对UE网络和游戏框架的粗鄙之见,文中多有错误敬请指出以较后文. 1.网络复制 不论是服务端还是客户端,代码都是一样的 ...
- 双指针_Leetcode刷题_13/100
算法解释 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务.也可以延伸到多个数组的多个指针. 若两个指针指向同一个数组,遍历的方向相同且不会相交,则也称为滑动窗口: 若两个指针指向同一 ...
- linux基础命令4
用户和组群账户管理 用户的 角色是通过UID(用户ID号)来标识的,每个用户的UID都是不同的. 在Linux系统中有三大类用户,分别是root 用户.系统用户和普通用户. root用户UID为0.r ...
- VUE keepAlive缓存问题之动态使用exclude(会使用到VUEX)
exclude是啥? 官方解释: 怎么用呢? 处理的问题是什么?(答:返回首页的时候清除B页面的缓存) 我遇到的问题是: 一开始状态:A(首页). B(列表).C(列表中的详情)三个页面,设置B页面的 ...
- Vue二级联动上传图片
二级联动的后台和之前一样都需要一个字典字段查询来实现二级联动 但是由于VUE语法和AJAX的不同在前台绑定的时候也有所不同 2.1 首先下拉框的写法就有了本质的改变通过v-model="&q ...
- Pytorch slp singleLayerPerceptron 单层感知机
单层感知机 \[\begin{aligned} & y = XW + b \\ & y = \sum x_i*w_i+b\\ \end{aligned} \] Derivative \ ...