精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 Spring Boot 創建自己的 ChatGPT 應用程序

開發 架構
在這篇短文中,我們了解了 OpenAI 的 GPT 3.5 Turbo 模型。如何生成供個人使用的密鑰。然后,我們還研究了將常用的 Spring Boot 應用程序與 OpenAI 聊天完成 API 集成、對端點進行實際調用,并驗證了響應。

在本篇文中,將解釋如何與OpenAI聊天完成 API 集成以使用它們并創建自己的 ChatGPT 版本。將使用Spring Boot程序與ChatGPT的 開放API集成。

我們將Spring Boot程序公開一個 REST 端點,它將以requestParam的形式發起請求,然后對其進行處理,并以可讀的文本格式返回響應。

讓我們按照以下步驟操作:

前提條件

我們將使用OpenAI的ChatGPT完成API在我們程序里的調用。

該API的各個重要參數描述如下:

模型: 我們將向“gpt-3.5-turbo”發送請求

GPT-3.5 Turbo是一種極其強大的人工智能驅動的語言模型。它擁有 8192 個處理器核心和多達 3000 億個參數,是迄今為止最大的語言模型之一。在廣泛的自然語言處理任務中表現優秀,可以用于生成文章、回答問題、對話、翻譯和編程等多種應用場景。它的能力使得人們可以通過自然語言與計算機進行更加自然、靈活和高效的交互。

Messages 這表示發送到模型的實際請求類,以便模型可以解析消息并以人們可讀的格式生成相應的響應。

包含兩個子屬性:

role 指定消息的發送者(請求時為“user”,響應時為“assistant”)。

content: 這才是真正的消息。

Message DTO 如下所示:

public class Message {
    private String role;
    private String content;
    // getters & setters
}

話不多說,讓我們開始與我們的 Spring Boot 應用程序集成。

創建一個基本的 Spring Boot 應用程序。為此,請前往start.spring.io并使用以下選擇:
我們只需要 Spring Web 依賴項:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

創建一個Controller 代碼:

package com.akash.mychatGPT.controller;

import com.akash.mychatGPT.dtos.ChatRequest;
import com.akash.mychatGPT.dtos.ChatResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class ChatController {

    @Qualifier("openaiRestTemplate")
    @Autowired
    private RestTemplate restTemplate;

    @Value("${openai.model}")
    private String model;

    @Value("${openai.api.url}")
    private String apiUrl;

    @GetMapping("/chat")
    public String chat(@RequestParam String prompt) {
        // 創建請求
        ChatRequest request = new ChatRequest(model, prompt, 1, 1.1);

        // 調用API
        ChatResponse response = restTemplate.postForObject(apiUrl, request, ChatResponse.class);

        if (response == null || response.getChoices() == null || response.getChoices().isEmpty()) {
            return "No response";
        }

        // 返回響應
        return response.getChoices().get(0).getMessage().getContent();
    }
}

創建一個ChatRequest類:

package com.akash.mychatGPT.dtos;

import java.util.ArrayList;
import java.util.List;

public class ChatRequest {

    private String model;
    private List<Message> messages;
    private int n;// 如果我們想增加要生成的響應的數量,可以指定。默認值為1。
    private double temperature;// 控制響應的隨機性。默認值為1 (大多數隨機)。
     
    // 構造方法, Getters & setters
}

在這里,我們使用以下屬性,將其放入 application.properties 中:

openai.model=gpt-3.5-turbo
openai.api.url=https://api.openai.com/v1/chat/completions
openai.api.key=<generated_key_goes_here>

重要提示:關于 OpenAI API 密鑰的說明:

OpenAI 允許生成唯一的 API 密鑰來使用 OpenAI API。為此,請點擊(
https://platform.openai.com/account/api-keys)。在這里,需要注冊并創建 API 密鑰(如下面的快照所示)。確保保證其安全,一定保存好!

單擊“創建新密鑰”并按照屏幕上的步驟操作。就可以擁有了自己的 OpenAI API 密鑰。如果沒有注冊過,想體驗一下的話,私信我發你體key。

接下來,我們用于RestTemplate調用 OpenAI API URL。因此,讓我們添加一個攔截器,如下所示:

package com.akash.mychatGPT.config;

import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class OpenAIRestTemplateConfig {

    @Value("${openai.api.key}")
    private String openaiApiKey;

    @Bean
    @Qualifier("openaiRestTemplate")
    public RestTemplate openaiRestTemplate() {
        RestTemplate restTemplate = new RestTemplate();
        restTemplate.getInterceptors().add((request, body, execution) -> {
            request.getHeaders().add("Authorization", "Bearer " + openaiApiKey);
            return execution.execute(request, body);
        });
        return restTemplate;
    }
}

攔截器攔截請求并將 OpenAI API 密鑰添加到請求標頭中。

就是這樣,現在我們可以簡單地使用主類運行應用程序并開始調用 API。

package com.akash.mychatGPT;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyChatGptApplication {

	public static void main(String[] args) {
		SpringApplication.run(MyChatGptApplication.class, args);
	}

}

測試

本次使用Postman 進行演示。將想要問的問題傳遞給該模型。

例子#1

http://localhost:8080/chat?prompt=what are some good Spring Boot libraries。

例子#2

GPT 3.5 Turbo 模型足夠先進,可以表現出高度真實的響應。(由于有數十億行文本,該模型已經過訓練)。

注意:對 OpenAI API curl 的實際調用如下所示:

curl --location 'https://api.openai.com/v1/chat/completions' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer $OPENAI_API_KEY' \
--data '{
    "model": "gpt-3.5-turbo",
    "messages": [
        {
            "role": "user",
            "content": "Hello!"
        }
    ]
}'

注意事項

在開發應用程序時,以下是可能遇到的常見問題。

問題1:

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.akash.mychatGPT.Message` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
 at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 10, column: 9] (through reference chain: com.akash.mychatGPT.ChatResponse["choices"]->java.util.ArrayList[0]->com.akash.mychatGPT.ChatResponse$Choice["message"])

確保創建一個無參數構造函數,并為以下對象提供 getter 和 setter:

問題2:

org.springframework.web.client.HttpClientErrorException$TooManyRequests: 429 Too Many Requests: 
"{<EOL>    "error": {<EOL>        "message": "You exceeded your current quota, please check your plan and billing details.",<EOL>        "type": "insufficient_quota",<EOL>        "param": null,<EOL>        "code": null<EOL>    }<EOL>}<EOL>"

OpenAI 提供了基本配額。當前電子郵件 ID 的配額已用完,需要使用了新的電子郵件 ID。

問題3:

org.springframework.web.client.HttpClientErrorException$TooManyRequests: 429 Too Many Requests: "{<EOL>    "error": {<EOL>        "message": "Rate limit reached for default-gpt-3.5-turbo in organization org-V9XKg3mYkRRTJhHWq1lYjVtS on requests per min. Limit: 3 / min. Please try again in 20s. Contact us through our help center at help.openai.com if you continue to have issues. Please add a payment method to your account to increase your rate limit. Visit https://platform.openai.com/account/billing to add a payment method.",<EOL>        "type": "requests",<EOL>        "param": null,<EOL>        "code": null<EOL>    }<EOL>}<EOL>"

一段時間后嘗試調用 API。(為了安全起見,良好的工作時間是 30 分鐘)。

總結

在這篇短文中,我們了解了 OpenAI 的 GPT 3.5 Turbo 模型。如何生成供個人使用的密鑰。

然后,我們還研究了將常用的 Spring Boot 應用程序與 OpenAI 聊天完成 API 集成、對端點進行實際調用,并驗證了響應。

注意事項

OpenAI 的 API 是受監管的資源。我們對 API 的調用量是有限的,可以在此處進行跟蹤。

責任編輯:姜華 來源: 今日頭條
相關推薦

2023-04-18 10:47:32

2012-04-26 13:48:56

iPhone應用發布Ad Hoc

2023-09-21 08:00:00

ChatGPT編程工具

2023-12-10 14:43:30

PythonGUIeel

2023-04-11 16:04:19

Spring Boo端點運維

2024-09-06 10:46:04

2013-06-24 10:21:47

面向對象Web應用JavaScript

2011-07-21 15:37:40

jQuery MobiJQMJSON

2024-01-05 07:38:55

2023-03-01 13:54:53

Springpostion?繼承

2013-06-26 08:52:12

2022-02-18 08:43:19

Spring Boo應用程序RabbitMQ

2025-07-11 10:00:00

云計算應用程序數據基礎設施

2023-05-11 12:40:00

Spring控制器HTTP

2020-10-18 08:51:18

Spring Boot

2024-01-15 08:03:10

JVM內存工作效率

2009-01-19 11:07:42

C#Web.NET

2009-07-23 14:25:03

ASP.NET 2.0

2011-05-11 10:58:39

iOS

2009-06-22 09:06:31

Android用戶應用程序
點贊
收藏

51CTO技術棧公眾號

夜夜嗨av一区二区三区中文字幕 | 亚洲一区二区伦理| 欧美精品一区二区在线观看| 欧美激情视频免费看| 亚洲欧美日韩动漫| 日韩高清欧美激情| 欧美日韩成人在线观看| 右手影院亚洲欧美| 亚洲一区二区三区久久久| 国产精品视频1区| 中文字幕国产综合| 亚洲精品国产一区| 成人午夜视频精品一区| av亚洲在线观看| 日韩欧美一级在线播放| 欧美 日韩精品| a视频在线免费看| 99久精品国产| 91亚洲精品久久久| 日韩免费一二三区| 91亚洲一区| 亚洲美女性视频| 亚洲av无码成人精品区| 国产成人精选| 欧美性猛交xxxx偷拍洗澡| 天天干天天色天天爽| 黄色av网址在线免费观看| 懂色一区二区三区免费观看| 国产精品高清在线| 日韩免费视频一区二区视频在线观看| 亚洲综合婷婷| 一区二区三区视频免费| 麻豆国产精品一区| 97久久超碰| 欧美一级欧美一级在线播放| 欧美成人三级在线播放| 成人影院网站| 国产免费视频一区二区三区| 欧美精品色网| 久久久精品久久久久| 亚欧精品视频一区二区三区| 奇米影视777在线欧美电影观看| 欧美一级夜夜爽| 在线免费看污网站| 亚洲精品成a人ⅴ香蕉片| 欧美色精品天天在线观看视频| 大肉大捧一进一出好爽视频| av电影免费在线看| 亚洲国产一区二区三区| 800av在线免费观看| 一级毛片视频在线观看| 国产精品入口麻豆原神| 午夜欧美一区二区三区免费观看| 天天综合网天天综合| 成人午夜av影视| 国产欧美一区二区三区不卡高清| 国产91免费看| 99精品热视频| 欧美一区二区三区在线免费观看 | 99免费在线观看| 黄色工厂这里只有精品| 久久久久久亚洲精品| 久久国产精品波多野结衣av| 激情欧美国产欧美| 韩国三级电影久久久久久| 国产无码精品久久久| 一区二区三区国产在线| 青青草原一区二区| 天天天天天天天干| 精品午夜一区二区三区在线观看| 91丨九色丨国产在线| av手机免费看| eeuss鲁片一区二区三区在线观看 eeuss影院一区二区三区 | 欧美久久电影| 每日更新在线观看av| 国产欧美日韩麻豆91| 亚洲精品国产系列| 在线观看h网| 精品成人久久av| 欧美日韩在线免费播放| 外国成人毛片| 精品不卡在线视频| 人妻体内射精一区二区| 日韩综合一区| 欧美精品福利在线| 中文字幕视频网站| 久久成人久久爱| 成人av男人的天堂| 久久99久久| 亚洲免费在线看| 久久精品国产sm调教网站演员| 国产精品一区二区av影院萌芽| 欧美日韩一区 二区 三区 久久精品| www.色就是色.com| 久久365资源| 中文日韩电影网站| www.av视频在线观看| 久久久国产亚洲精品| 91精品久久久久久久久久久| 日本韩国在线观看| 国产精品久久久久影院老司| 日本中文字幕亚洲| 国产日本久久| 亚洲国产99精品国自产| 国产精品国产三级国产专业不| 欧美激情1区2区3区| 日韩av片免费在线观看| 国产美女主播在线观看| 久久伊人中文字幕| 伊人网在线免费| 欧美美女日韩| 精品噜噜噜噜久久久久久久久试看 | 中文字幕日韩在线播放| 日韩 国产 在线| 国产在线精品一区二区夜色 | 男人天堂资源在线| 亚洲一区二区不卡免费| 天天干天天玩天天操| 亚州av日韩av| 久久久久久久久久久久av| 一级黄色片在线| 久久免费精品国产久精品久久久久| 热这里只有精品| 亚洲精品国产嫩草在线观看| 亚洲精品99久久久久中文字幕| 三级在线观看免费大全| 日韩—二三区免费观看av| 国产日韩在线一区二区三区| 久久黄色美女电影| 欧美在线视频不卡| 在线 丝袜 欧美 日韩 制服| 伊人久久大香线蕉av超碰演员| 成人美女av在线直播| 成全电影播放在线观看国语| 五月天欧美精品| 国产精品91av| 欧美激情日韩| 69174成人网| 黄色网在线看| 91精品国产色综合久久不卡电影| 色婷婷国产精品免| 男女男精品网站| 日本不卡一二三区| 日韩免费小视频| 在线播放国产精品| 中文在线免费观看| 国产精品婷婷午夜在线观看| 激情综合网俺也去| 欧美久久综合网| 国产精品久久久久久久美男| 风间由美一区| 欧美日韩成人激情| 波多野结衣久久久久| 精品一区二区三区视频| 天天干天天操天天干天天操| 伊人久久综合网另类网站| 日韩视频精品在线| av手机免费看| 亚洲成a人v欧美综合天堂下载| 野战少妇38p| aa级大片欧美三级| 欧美国产综合视频| 成人影院在线免费观看| 最新69国产成人精品视频免费| 一本久道久久综合无码中文| 亚洲视频综合在线| av电影中文字幕| a91a精品视频在线观看| 日韩免费av一区二区三区| 国产情侣一区二区三区| 九九热这里只有精品6| 熟妇高潮一区二区三区| 大桥未久av一区二区三区| a级大片在线观看| 韩国午夜理伦三级不卡影院| 300部国产真实乱| 欧美91在线| 国产精品福利无圣光在线一区| 欧美成人三区| 欧美精品一区二| 伊人成年综合网| 亚洲激情第一区| 国产呦小j女精品视频| 六月丁香婷婷色狠狠久久| 黄色一级片国产| 一区二区美女| 91免费看片在线| 中文字幕在线高清| 俺去了亚洲欧美日韩| 日韩一区二区三区不卡| 欧美在线观看一区| 精品在线视频观看| 国产目拍亚洲精品99久久精品| 免费人成视频在线播放| 国产婷婷精品| 免费极品av一视觉盛宴| 国产剧情在线观看一区| 91gao视频| 成人日韩在线观看| 性视频1819p久久| 黄色在线论坛| 亚洲人午夜精品免费| 国产ts变态重口人妖hd| 在线观看视频一区| 日本在线视频中文字幕| 亚洲欧洲日韩综合一区二区| 日本性生活一级片| 极品销魂美女一区二区三区| 免费黄色日本网站| 欧美午夜a级限制福利片| 新呦u视频一区二区| 日本中文字幕在线一区| 96久久精品| 成人国产一区| 国产成人精品视频在线观看| japanese色国产在线看视频| 久久综合免费视频影院| 成人三级黄色免费网站| 日韩精品视频免费专区在线播放 | 国产福利精品导航| www.日本一区| 日韩专区欧美专区| 男人靠女人免费视频网站| 黄色欧美日韩| 国产激情片在线观看| 久久久影院免费| 视频一区三区| 欧美日韩在线二区| 欧美欧美一区二区| 日韩在线麻豆| 国产一区免费在线观看| 风间由美一区二区av101| 亚洲最大福利网| aa亚洲一区一区三区| 国产日韩在线精品av| 69堂免费精品视频在线播放| 欧美在线观看视频| 日本在线播放一二三区| 91精品国产91久久久久福利| 成人免费观看在线观看| 久久久久久一区二区三区| 久草在线视频福利| 久久久久久久影院| 51漫画成人app入口| 国内精品美女av在线播放| 国产黄色大片在线观看| 欧美黄色性视频| 都市激情久久综合| 韩国视频理论视频久久| 人狥杂交一区欧美二区| 国产99久久精品一区二区永久免费 | 欧美一区二区三区在线电影| 国产精品国产三级国产普通话对白| 欧美色偷偷大香| 一区不卡在线观看| 制服丝袜一区二区三区| www.av网站| 亚洲高清在线观看| 国产在线视频福利| 伊人伊人伊人久久| 麻豆影院在线观看| 久久91精品国产91久久久| 丁香花在线观看完整版电影| 69久久夜色精品国产69乱青草| 制服丝袜专区在线| 国产精品国产三级国产专播精品人| 小明成人免费视频一区| 成人黄色av网站| 丁香婷婷成人| 欧美另类高清视频在线| 久久国产影院| 国产毛片久久久久久国产毛片 | 亚洲欧美自偷自拍另类| 激情偷乱视频一区二区三区| 色诱av手机版| 久久伊人中文字幕| 最新黄色av网址| 亚洲一区二区三区自拍| 久久久国产高清| 精品视频在线免费| 蜜桃久久一区二区三区| 国产一区二区动漫| 亚洲奶水xxxx哺乳期| 秋霞午夜一区二区| av一级久久| 欧美精品123| 亚洲欧美色图| 日本三级免费观看| 国产一区二区0| 一本加勒比北条麻妃| 亚洲色图在线视频| 国产精品久免费的黄网站| 91精品国产色综合久久| 欧美18xxxxx| 欧美黑人巨大精品一区二区| 激情都市亚洲| 国产精华一区| 99精品综合| 国产真实乱子伦| 国产精品91xxx| 久久久久久久久福利| 亚洲国产综合91精品麻豆| 亚洲无码久久久久| 亚洲免费视频网站| 岛国毛片av在线| 91精品国产综合久久男男| 夜色77av精品影院| 隔壁人妻偷人bd中字| 久久福利视频一区二区| 久久精品视频18| 亚洲国产成人av好男人在线观看| 亚洲一区二区三区网站| 日韩成人中文字幕| 欧美videossex| 成人综合国产精品| 欧美丝袜一区| 成年网站在线免费观看| 高清视频一区二区| 乱h高h女3p含苞待放| 欧美亚洲高清一区| 麻豆导航在线观看| 2019中文字幕在线观看| av动漫精品一区二区| 国产免费xxx| 极品少妇xxxx精品少妇偷拍| 久久中文字幕精品| 色av一区二区| 免费毛片在线| 啪一啪鲁一鲁2019在线视频| 久久99偷拍| 免费不卡av在线| www.99精品| 国产成人愉拍精品久久| 精品国内二区三区| 免费在线国产视频| 国产高清在线一区| 激情欧美日韩一区| 88av在线播放| 欧美日韩国产精品一区| 亚洲 欧美 精品| 91sa在线看| 精品中文字幕一区二区三区av| 黑人糟蹋人妻hd中文字幕| 91视频91自| 午夜精品一区二| 自拍偷拍亚洲精品| 2019中文亚洲字幕| 4444在线观看| 成人中文字幕在线| 日本少妇在线观看| 亚洲精品资源在线| 国产精品伦理| 亚洲一区二区不卡视频| 精品一区二区免费在线观看| 亚洲综合视频网站| 欧美成人精品高清在线播放| xxx.xxx欧美| 久久婷婷开心| 日韩av中文字幕一区二区三区 | 日本免费一区二区三区最新| 欧美专区在线视频| 成人久久综合| 国内av一区二区| 亚洲国产aⅴ成人精品无吗| 丰满人妻妇伦又伦精品国产| 97**国产露脸精品国产| 国产一区不卡| 午夜大片在线观看| 亚洲成人免费影院| 理论在线观看| 91精品啪aⅴ在线观看国产| 欧美午夜电影在线观看| 人妻丰满熟妇av无码久久洗澡 | a在线观看免费视频| 亚洲婷婷国产精品电影人久久| 亚洲精品国产精品乱码不卡| 18久久久久久| 久久精品国产大片免费观看| 日本wwwwwww| 91国产丝袜在线播放| 国产剧情在线| 久久偷窥视频| 另类小说一区二区三区| 久久精品欧美一区二区| 一区二区成人精品| 91精品导航| 精品久久久噜噜噜噜久久图片| 亚洲男人天堂一区| 你懂的在线网址| 亚洲一区亚洲二区| 久久精品导航| 国产一级aa大片毛片| 亚洲天堂视频在线观看| 日韩一区二区三区精品| av视屏在线播放| 亚洲一区二区精品久久av| 成年在线观看免费人视频| 国产综合 伊人色| 国产一区二区在线观看视频| 国产精品久久久免费视频|