欧美日韩午夜精品不卡综合_亚洲最新变态另类小说综合网_久久久久久久久国产精品黄页_国内精品久久久久久久_正在播放91按摩女技师

當前位置: 首頁  > 行情 > 正文

如何在 SpringBoot 項目中接入 ChartGPT

2023-03-30 13:39:06    來源:博客園

大家好,我是公子駿。最近體驗了火爆全網(wǎng)的 ChartGPT,深刻體會了其強大的能力,這讓我們程序猿對AI的未來突然有了廣大的暢想空間。

我也在網(wǎng)上看到不少大牛通過 ChartGPT 來獲取收益,就尋思著能否自己接入 ChartGPT 的 API 來做些什么事情。


(資料圖)

然后到網(wǎng)上找了不少 Java 接入 ChatGPT 的文章案例,成功實現(xiàn)了接入,而本文就是我整理了這些案例后,使用 Forest 框架重寫了一遍接入方法。

一、前期工作

注冊 OpenAI 的賬號

獲取 OpenAI 的 API KEY

如何完成這兩步網(wǎng)上的資料很多,我這里就不再贅述了。

需要注意的是,API KEY 在創(chuàng)建好之后一定要保存好,否則退出創(chuàng)建頁面后就可能找不到了。

二. 添加依賴

除了基本的 SpringBoot 依賴外,還需添加以下 Maven 依賴

    com.dtflys.forest    forest-spring-boot-starter    1.5.30    com.alibaba    fastjson    1.2.83
三. 配置

application.yml文件中添加下列配置

forest:  connect-timeout: 60000      # HTTP請求連接超時時間  read-timeout: 60000         # HTTP請求讀取超時時間  variables:                  # 自定義變量:    apiKey: YOUR_API_KEY      # 你的 OpenAI 的 API KEY    model: text-davinci-003   # ChartGPT 的模型    maxTokens: 50             # 最大 Token 數(shù)    temperature: 0.5          # 該值越大每次返回的結果越隨機,即相似度越小
四. 定義 ChartGPT 的接入接口

創(chuàng)建一個interface類,名字就叫 ChartGPT (名字可以隨意起)

public interface ChartGPT {    // 只要輸入一個參數(shù): 提示詞    // 該方法就會發(fā)送 HTTP 請求到 OpenAI 的接口服務    // 并將響應結果以字符串形式返回回來    @Post(            url = "https://api.openai.com/v1/engines/${model}/completions",            contentType = "application/json",            headers = "Authorization: Bearer ${apiKey}",            data = "{\"prompt\": \"${prompt}\", \"max_tokens\": ${maxTokens}, \"temperature\": ${temperature}}"    )    String send(@Var("prompt") String prompt);}
五. 調(diào)用接口

在需要調(diào)用的地方注入ChartGPT接口實例,并可調(diào)用獲取 ChartGPT 的結果

@Resourceprivate ChartGPT chartGPT;public void run() {    String response = chartGPT.send("你好");    System.out.println(response);}

執(zhí)行程序后,會在控制臺上打印出 ChartGPT 的響應結果

{"id":"cmpl-6ze62yNNtH5ZHNkaPjWUZORoEtojK","object":"text_completion","created":1680150158,"model":"text-davinci-003","choices":[{"text":"\n\n你好!","index":0,"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":4,"completion_tokens":9,"total_tokens":13}}
到這一步已經(jīng)算初步成功了!

但你發(fā)現(xiàn)我們接受到的是一個JSON字符串,并不能直接處理它,需要進一步的加工。

六. 改進

我們添加兩個數(shù)據(jù)類

在 ChartGPT 返回的 JSON 字符串后,F(xiàn)orest 框架會自動將其反序列化成這些數(shù)據(jù)類

添加的第一個數(shù)據(jù)類 GPTResponse: 用于接受 ChartGPT 響應結果最外層 JSON 結構的數(shù)據(jù)類

@Datapublic class GPTResponse {    private String id;    private String object;    private String created;    private String model;    private List choices;}
添加的二個數(shù)據(jù)類 GPTChoice: 用于接受 ChartGPT 響應結果 JSON 結構里層中文本內(nèi)容部分的數(shù)據(jù)類
@Datapublic class GPTChoice {    private String text;    private Integer index;}
改一下接口的返回類型
public interface ChartGPT {    // Forest 會自動將響應結果反序列化成 GPTResponse 類型并返回出來    @Post(            url = "https://api.openai.com/v1/engines/${model}/completions",            contentType = "application/json",            headers = "Authorization: Bearer ${apiKey}",            data = "{\"prompt\": \"${prompt}\", \"max_tokens\": ${maxTokens}, \"temperature\": ${temperature}}"    )    GPTResponse send(@Var("prompt") String prompt);}
改一下調(diào)用部分的代碼
GPTResponse response = chartGPT.send("你好");System.out.println(response.getChoices().get(0).getText());
執(zhí)行一下,然后會在控制臺上看到類似的輸出內(nèi)容
你好!很高興見到你!
示例代碼

如果以上步驟都完成了,祝賀你!你是一名優(yōu)秀的程序猿~

完不成也沒關系,我在開源倉庫里也提供了示例工程代碼,方便大家參考

https://gitee.com/dromara/forest/tree/master/forest-examples/example-chartgpt

或者關注公眾號程序猿公子駿,回復消息chartgpt,即可獲得示例工程源碼

關鍵詞:

?上一篇: ?下一篇: