在雲服務器上搭建個人版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

具體情況如下:

image

然後需要在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頁面,是不是跟真實的很像。

image


二、後端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後端代碼裏——
image

需要注意的是,若是部署在有魔法訪問的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雲服務上的聊天返回打印效果——

image

以上就是關於【國內服務器上搭建chat GPT】和【後端Spring Boot集成chat GPT】教程,更多好玩的關於chat GPT相關的內容,可以關注我,因爲我對這塊很感興趣,接下來會分享更多相關內容。有不懂的也可以後臺問我。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章