中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

wordpress登陸后臺(tái)總是跳轉(zhuǎn)首頁網(wǎng)站seo服務(wù)公司

wordpress登陸后臺(tái)總是跳轉(zhuǎn)首頁,網(wǎng)站seo服務(wù)公司,parallax wordpress,微信小程序商城怎么弄使用Java調(diào)用OpenAI API并解析響應(yīng):詳細(xì)教程 在現(xiàn)代應(yīng)用程序中,API調(diào)用是一個(gè)非常常見的任務(wù)。本文將通過一個(gè)完整的示例,講解如何使用Java調(diào)用OpenAI的ChatGPT API,并通過ObjectMapper處理JSON響應(yīng)。本文的示例不僅適用于OpenAI…

使用Java調(diào)用OpenAI API并解析響應(yīng):詳細(xì)教程

在現(xiàn)代應(yīng)用程序中,API調(diào)用是一個(gè)非常常見的任務(wù)。本文將通過一個(gè)完整的示例,講解如何使用Java調(diào)用OpenAI的ChatGPT API,并通過ObjectMapper處理JSON響應(yīng)。本文的示例不僅適用于OpenAI的API,也可以擴(kuò)展到其他API調(diào)用中。具體示例中我們會(huì)使用HttpURLConnection來發(fā)起請求,并使用ObjectMapper進(jìn)行JSON解析。

項(xiàng)目場景

我們將編寫一個(gè)方法,通過調(diào)用ChatGPT API,模擬發(fā)送消息并獲取AI的響應(yīng)。核心步驟包括:

  1. 發(fā)起HTTP請求。
  2. 設(shè)置請求頭和請求體。
  3. 解析服務(wù)器返回的JSON響應(yīng)。

1. URL類

在Java中,URL類用于表示統(tǒng)一資源定位符(即Web地址)。在我們的示例中,URL對象用于指定我們要調(diào)用的API的URL地址。

URL url = new URL("https://api.chatanywhere.tech/v1/chat/completions");

這里我們使用了一個(gè)中轉(zhuǎn)服務(wù)器地址。通常,你會(huì)調(diào)用OpenAI官方的API地址 https://api.openai.com/v1/chat/completions。但在國內(nèi),訪問這些外網(wǎng)資源可能受到限制,因此我們可以使用中轉(zhuǎn)服務(wù)進(jìn)行代理訪問。

2. HttpURLConnection類

HttpURLConnection類是Java用于發(fā)送HTTP請求的核心類。我們通過它來設(shè)置請求方法、請求頭、請求體,并讀取響應(yīng)。

HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  • 設(shè)置請求方法:通過connection.setRequestMethod("GET")"POST"可以指定HTTP請求類型。通常,API請求發(fā)送數(shù)據(jù)使用POST方法。
connection.setRequestMethod("POST");
  • 設(shè)置請求頭:為了與API服務(wù)交互,我們需要設(shè)置一些必要的請求頭信息,如授權(quán)信息和內(nèi)容類型。
connection.setRequestProperty("Authorization", "Bearer " + apiKey);
connection.setRequestProperty("Content-Type", "application/json");
  • 請求體:在發(fā)送POST請求時(shí),需要將請求內(nèi)容以字節(jié)流的形式寫入輸出流中。這里我們構(gòu)建了一個(gè)JSON格式的請求體,并通過getOutputStream方法發(fā)送。
String inputJson = "{\"model\": \"gpt-3.5-turbo\", \"messages\": [{\"role\": \"system\", \"content\": \"你是一個(gè)貼心的AI助手,用來解決用戶的各種問題,回答用中文!\"}, {\"role\": \"user\", \"content\": \"你是誰,基于什么模型?\"}]}";
try (OutputStream os = connection.getOutputStream()) {byte[] input = inputJson.getBytes(StandardCharsets.UTF_8);os.write(input, 0, input.length);
}

3. 處理響應(yīng)數(shù)據(jù)

一旦請求發(fā)送后,服務(wù)器會(huì)返回?cái)?shù)據(jù)。我們可以通過getInputStream方法獲取服務(wù)器的響應(yīng),使用Scanner類讀取并逐行打印響應(yīng)內(nèi)容。

//因?yàn)镮nputStream是一種一次性流,它只能讀取一次,讀完之后就關(guān)閉了,不能再讀取,所以用Scanner進(jìn)行讀取數(shù)據(jù)并逐行處理,然后再將其一行行的寫入StringBulider中,方便后續(xù)操作和使用
try (Scanner scanner = new Scanner(connection.getInputStream(), StandardCharsets.UTF_8)) {StringBuilder response = new StringBuilder();while (scanner.hasNext()) {response.append(scanner.nextLine());}System.out.println("接收到響應(yīng)為: " + response.toString());
}

4. 使用ObjectMapper解析JSON

在我們的API返回?cái)?shù)據(jù)中,通常是JSON格式。為了方便解析和操作JSON數(shù)據(jù),我們使用Jackson庫中的ObjectMapper類。ObjectMapper是Jackson提供的一個(gè)核心工具類,可以幫助我們將JSON字符串轉(zhuǎn)換為Java對象,或者將Java對象轉(zhuǎn)換為JSON。

ObjectMapper objectMapper = new ObjectMapper();
JsonNode jsonNode = objectMapper.readTree(response.toString());
JsonNode jsonChoicesNode = jsonNode.get("choices").get(0);
String content = jsonChoicesNode.get("message").get("content").asText();

在上面的代碼中,readTree()方法會(huì)將JSON字符串轉(zhuǎn)換為JsonNode對象。通過get()方法,我們可以獲取JSON中的特定字段,并使用asText()方法將其轉(zhuǎn)換為字符串。

5. 異常處理

在與外部API交互時(shí),可能會(huì)遇到各種異常情況,比如連接超時(shí)、讀寫超時(shí)或者其他I/O錯(cuò)誤。為了確保程序的魯棒性,我們需要捕獲這些異常并進(jìn)行處理。

catch (IOException e) {throw new RuntimeException(e);
}

完整代碼示例

void openAiChatGpt() {String apiKey = "sk-your-api-key";//替換成你自己的API KEY try {URL url = new URL("https://api.chatanywhere.tech/v1/chat/completions");System.out.println("測試連接");HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setRequestProperty("Authorization", "Bearer " + apiKey);connection.setRequestProperty("Content-Type", "application/json");connection.setDoOutput(true);String inputJson = "{\"model\": \"gpt-3.5-turbo\", \"messages\": [{\"role\": \"system\", \"content\": \"你是一個(gè)貼心的AI助手,用來解決用戶的各種問題,回答用中文!\"}, {\"role\": \"user\", \"content\": \"你是誰,基于什么模型?\"}]}";try (OutputStream os = connection.getOutputStream()) {byte[] input = inputJson.getBytes(StandardCharsets.UTF_8);os.write(input, 0, input.length);}try (Scanner scanner = new Scanner(connection.getInputStream(), StandardCharsets.UTF_8)) {StringBuilder response = new StringBuilder();while (scanner.hasNext()) {response.append(scanner.nextLine());}System.out.println("接收到響應(yīng)為: " + response.toString());ObjectMapper objectMapper = new ObjectMapper();JsonNode jsonNode = objectMapper.readTree(response.toString());JsonNode jsonChoicesNode = jsonNode.get("choices").get(0);String content = jsonChoicesNode.get("message").get("content").asText();System.out.println("-----------");System.out.println(content);}} catch (IOException e) {throw new RuntimeException(e);}
}

結(jié)果

在這里插入圖片描述

總結(jié)

通過這篇文章,我們了解了如何使用Java進(jìn)行HTTP請求,如何設(shè)置請求頭、發(fā)送請求體,如何使用Jackson的ObjectMapper來解析服務(wù)器返回的JSON響應(yīng)。通過這個(gè)簡單的示例,你可以很容易擴(kuò)展到其他API調(diào)用場景中。如果你需要調(diào)用更多復(fù)雜的API,比如需要身份驗(yàn)證、文件上傳或下載,都可以在此基礎(chǔ)上進(jìn)行擴(kuò)展。

希望這篇文章對你有所幫助!如果你有任何問題,歡迎留言討論。

http://www.risenshineclean.com/news/2020.html

相關(guān)文章:

  • 東莞寮步網(wǎng)站建設(shè)自己創(chuàng)建個(gè)人免費(fèi)網(wǎng)站
  • 昆明裝飾企業(yè)網(wǎng)絡(luò)推廣seo干什么
  • wordpress視頻站插件哪些平臺(tái)可以免費(fèi)推廣
  • asp 企業(yè)網(wǎng)站百度推廣退款電話
  • 非模板網(wǎng)站長春網(wǎng)站優(yōu)化團(tuán)隊(duì)
  • 網(wǎng)站關(guān)鍵詞詞庫怎么做谷歌seo關(guān)鍵詞排名優(yōu)化
  • 坪山附近公司做網(wǎng)站建設(shè)哪家效益快十大廣告投放平臺(tái)
  • 做社交網(wǎng)站多少錢網(wǎng)絡(luò)推廣是干什么的
  • 珠海網(wǎng)站推廣優(yōu)化最近的新聞大事20條
  • 建設(shè)網(wǎng)站公司 優(yōu)幫云seo外鏈推廣工具下載
  • 論壇網(wǎng)站建設(shè)用工具軟件上海關(guān)鍵詞優(yōu)化公司哪家好
  • 網(wǎng)站建設(shè)合同附件格式搜索引擎有哪些類型
  • b2b網(wǎng)站有那些企業(yè)網(wǎng)站優(yōu)化排名
  • 麻涌鎮(zhèn)網(wǎng)站建設(shè)做網(wǎng)頁多少錢一個(gè)頁面
  • 基于b s結(jié)構(gòu)做的網(wǎng)站寧波seo軟件免費(fèi)課程
  • 浙江省專業(yè)網(wǎng)站制作網(wǎng)站建設(shè)優(yōu)化近義詞
  • 京東網(wǎng)站建設(shè)的特點(diǎn)網(wǎng)絡(luò)域名怎么查
  • 百度網(wǎng)站建設(shè)是什么志鴻優(yōu)化網(wǎng)官網(wǎng)
  • 黃山搜索引擎優(yōu)化dz論壇seo
  • 美工素材網(wǎng)站有哪些安徽搜索引擎優(yōu)化seo
  • asp.net網(wǎng)站運(yùn)行助手推廣app的營銷方案
  • 燈飾外貿(mào)網(wǎng)站百度手機(jī)助手app
  • 后臺(tái)系統(tǒng)免費(fèi)模板網(wǎng)站免費(fèi)游戲推廣平臺(tái)
  • 姑蘇區(qū)做網(wǎng)站seo教程搜索引擎優(yōu)化入門與進(jìn)階
  • 煙臺(tái)定制網(wǎng)站建設(shè)報(bào)價(jià)seo工具是什么意思
  • 國示范校建設(shè)網(wǎng)站品牌廣告語經(jīng)典100條
  • 網(wǎng)站后綴twnba最新消息球員交易
  • 網(wǎng)站建設(shè)的業(yè)務(wù)范圍手游推廣個(gè)人合作平臺(tái)
  • 在網(wǎng)站上做網(wǎng)絡(luò)課堂軟件多少錢線上營銷推廣方案
  • 網(wǎng)站建設(shè) 資質(zhì)昆明網(wǎng)絡(luò)推廣