總結(jié)/朱季謙
本文分成兩部分进统,包括【國內(nèi)服務(wù)器上搭建chat GPT】和【后端Spring Boot集成chat GPT】。
無論是在【國內(nèi)服務(wù)器上搭建chat GPT】和【后端Spring Boot集成chat GPT】艳悔,兩個方式都需要魔法訪問,否則是無法正常使用的辛辨,即需要具備正常訪問谷歌或者 api.openai.com的能力丧蘸。
至于什么是魔法訪問,以及如何搭建魔法訪問祖乳,請自行研究哈逗堵。
下面就開始講解兩部分的教程。
一眷昆、國內(nèi)服務(wù)器上搭建chat GPT
首先蜒秤,你需要準(zhǔn)備以下東西:
1、一臺可以訪問公網(wǎng)的Linux云服務(wù)器亚斋,最低配置1核2G即可(當(dāng)然作媚,有錢可以任性,買最高配置)
2帅刊、chatGPT的密鑰
3纸泡、開源的仿chatGPT的Docker鏡像
1.1、準(zhǔn)備一臺云服務(wù)器
可以是騰訊云赖瞒、阿里云或者華為云等女揭,我分別在阿里云和華為云上都能正常搭建蚤假。
1.2、設(shè)置網(wǎng)絡(luò)代理
在部署魔法訪問的服務(wù)器上吧兔,需要在/etc/profile增加代理磷仰,確保通過密鑰方式的chatGPT接口調(diào)用能正常訪問:
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需要根據(jù)你的魔法訪問里的config.json來相應(yīng)設(shè)置。
配置完成后境蔼,執(zhí)行source /etc/profile灶平,檢驗一下curl https://api.openai.com/
可以訪問即沒問題∨费ǎ可以繼續(xù)往下走民逼。
1.3泵殴、安裝Docker
可以按照我以前記錄的一篇關(guān)于搭建Docker的方式進(jìn)行命令行按照CentOS7安裝Docker遇到的問題筆記
搭建完成后涮帘,因為Docker的對外訪問若需要走所在宿主的代理話,還需要設(shè)置以下操作——
創(chuàng)建一個~/.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鏡像
目前網(wǎng)上GitHub已經(jīng)開源了許多優(yōu)秀的仿寫chatGPT 頁面的應(yīng)用吆你,我們無需再額外造輪子弦叶,只需要挑選其中一款用來打包部署成Docker容器運行即可。
我使用的是chatgpt-mirror這個開源項目妇多。
直接克隆項目到對應(yīng)的Linux服務(wù)器——
git clone https://github.com/yuezk/chatgpt-mirror.git
在基于該開源項目以Dockerfile形式打包前伤哺,需要執(zhí)行以下被依賴到的鏡像——
docker pull node:18-alpine
docker pull node:18-slim
接下來,就可以執(zhí)行以下操作來創(chuàng)建一個Docker鏡像了——
cd chatgpt-mirror
#--network host表示與宿主公用網(wǎng)絡(luò)者祖,即走代理立莉,然后留意下最后有一個 .
docker build --network host -t chatgpt-mirror .
#正常執(zhí)行成功后,通過該指令能看到一個新鏡像
docker images
具體情況如下:
然后需要在cd chatgpt-mirror環(huán)境里新增一個文件env七问,該文件里寫入chatGPT密鑰與宿主機器的代理:
OPENAI_API_KEY=你的chatGPT密鑰
HTTP_PROXY=http://127.0.0.1:8889
完成以上操作后蜓耻,最后在該目錄chatgpt-mirror里執(zhí)行——
docker run -itd --net host -p 3000:3000 -v /app/config.json:/app/config/app.config --env-file env chatgpt-mirror
正常執(zhí)行完成后,即可在瀏覽上輸入http://你的服務(wù)器ip:3000械巡,就能出來一個外表仿chatGPT但內(nèi)在是調(diào)用真實chatGPT接口的應(yīng)用刹淌。
重點是,如此一來讥耗,你的電腦有勾、平臺、手機等終端都無需魔法訪問古程,就能直接使用chatGPT了蔼卡,而且響應(yīng)速度比直連官網(wǎng)快一倍左右速度,無比絲滑籍琳!而且菲宴,沒有像chatGPT官網(wǎng)直連那樣經(jīng)常出現(xiàn)響應(yīng)異常以及斷開的問題贷祈,協(xié)助效率大大增加。
以下就是訪問搭建在我自己服務(wù)器上的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("你是一個工作助手眉踱,情幫忙設(shè)計一份活動策劃書" );
//GPT_TOKEN即你的代碼密鑰
OpenAiService service = new OpenAiService(GPT_TOKEN,Duration.ofSeconds(10000));
CompletionRequest completionRequest = CompletionRequest.builder()
//使用的模型
.model("text-davinci-003")
//輸入提示語
.prompt("設(shè)計一份活動策劃書")
//該值越大每次返回的結(jié)果越隨機挤忙,即相似度越小,可選參數(shù)谈喳,默認(rèn)值為 1册烈,取值 0-2
.temperature(0.5)
//返回結(jié)果最大分詞數(shù)
.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
啟動,調(diào)用該接口婿禽,即可正常使用chat GPT集成到SpringBoot后端代碼里——
需要注意的是赏僧,若是部署在有魔法訪問的Linux云服務(wù),代碼需要相應(yīng)做一下調(diào)整扭倾,否則是無法訪問到chatGPT的淀零,會出現(xiàn)以下異常提示:java.net.ConnectException:Failed to connect to api.openai.com/2a03:2880:f10c:283:face:b00c:0:25de:443]
故而,需要做以下調(diào)整:
public void send1Msg() throws InterruptedException {
System.out.println("開始提問題~");
System.out.println("你是一個工作助手膛壹,情幫忙設(shè)計一份活動策劃書" );
//需要額外設(shè)置一個能訪問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);
//將設(shè)置的代理傳給OpenAiService即可
OpenAiService service = new OpenAiService(api);
CompletionRequest completionRequest = CompletionRequest.builder()
.model("text-davinci-003")
.prompt("設(shè)計一份活動策劃書")
.temperature(0.5)
.maxTokens(2048)
.topP(1D)
.build();
service.createCompletion(completionRequest).getChoices().forEach(System.out::println);
Thread.sleep(6000);
}
部署在Linux云服務(wù)上的聊天返回打印效果——
以上就是關(guān)于【國內(nèi)服務(wù)器上搭建chat GPT】和【后端Spring Boot集成chat GPT】教程驾中,更多好玩的關(guān)于chat GPT相關(guān)的內(nèi)容,可以關(guān)注我模聋,因為我對這塊很感興趣肩民,接下來會分享更多相關(guān)內(nèi)容。有不懂的也可以后臺問我撬槽。