成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用 Spring Boot 創(chuàng)建自己的 ChatGPT 應(yīng)用程序

開發(fā) 架構(gòu)
在這篇短文中,我們了解了 OpenAI 的 GPT 3.5 Turbo 模型。如何生成供個人使用的密鑰。然后,我們還研究了將常用的 Spring Boot 應(yīng)用程序與 OpenAI 聊天完成 API 集成、對端點(diǎn)進(jìn)行實(shí)際調(diào)用,并驗(yàn)證了響應(yīng)。

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

我們將Spring Boot程序公開一個 REST 端點(diǎn),它將以requestParam的形式發(fā)起請求,然后對其進(jìn)行處理,并以可讀的文本格式返回響應(yīng)。

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

前提條件

我們將使用OpenAI的ChatGPT完成API在我們程序里的調(diào)用。

該API的各個重要參數(shù)描述如下:

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

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

Messages 這表示發(fā)送到模型的實(shí)際請求類,以便模型可以解析消息并以人們可讀的格式生成相應(yīng)的響應(yīng)。

包含兩個子屬性:

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

content: 這才是真正的消息。

Message DTO 如下所示:

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

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

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

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

創(chuàng)建一個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) {
        // 創(chuàng)建請求
        ChatRequest request = new ChatRequest(model, prompt, 1, 1.1);

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

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

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

創(chuàng)建一個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;// 如果我們想增加要生成的響應(yīng)的數(shù)量,可以指定。默認(rèn)值為1。
    private double temperature;// 控制響應(yīng)的隨機(jī)性。默認(rèn)值為1 (大多數(shù)隨機(jī))。
     
    // 構(gòu)造方法, 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>

重要提示:關(guān)于 OpenAI API 密鑰的說明:

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

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

接下來,我們用于RestTemplate調(diào)用 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 密鑰添加到請求標(biāo)頭中。

就是這樣,現(xiàn)在我們可以簡單地使用主類運(yùn)行應(yīng)用程序并開始調(diào)用 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 進(jìn)行演示。將想要問的問題傳遞給該模型。

例子#1

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

例子#2

GPT 3.5 Turbo 模型足夠先進(jìn),可以表現(xiàn)出高度真實(shí)的響應(yīng)。(由于有數(shù)十億行文本,該模型已經(jīng)過訓(xùn)練)。

注意:對 OpenAI API curl 的實(shí)際調(diào)用如下所示:

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!"
        }
    ]
}'

注意事項(xiàng)

在開發(fā)應(yīng)用程序時,以下是可能遇到的常見問題。

問題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"])

確保創(chuàng)建一個無參數(shù)構(gòu)造函數(shù),并為以下對象提供 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 提供了基本配額。當(dāng)前電子郵件 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>"

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

總結(jié)

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

然后,我們還研究了將常用的 Spring Boot 應(yīng)用程序與 OpenAI 聊天完成 API 集成、對端點(diǎn)進(jìn)行實(shí)際調(diào)用,并驗(yàn)證了響應(yīng)。

注意事項(xiàng)

OpenAI 的 API 是受監(jiān)管的資源。我們對 API 的調(diào)用量是有限的,可以在此處進(jìn)行跟蹤。

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2023-04-18 10:47:32

2012-04-26 13:48:56

iPhone應(yīng)用發(fā)布Ad Hoc

2023-09-21 08:00:00

ChatGPT編程工具

2023-12-10 14:43:30

PythonGUIeel

2023-04-11 16:04:19

Spring Boo端點(diǎn)運(yùn)維

2024-09-06 10:46:04

2011-07-21 15:37:40

jQuery MobiJQMJSON

2013-06-24 10:21:47

面向?qū)ο?/a>Web應(yīng)用JavaScript

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應(yīng)用程序RabbitMQ

2024-01-15 08:03:10

JVM內(nèi)存工作效率

2020-10-18 08:51:18

Spring Boot

2023-05-11 12:40:00

Spring控制器HTTP

2009-07-23 14:25:03

ASP.NET 2.0

2011-05-11 10:58:39

iOS

2009-06-22 09:06:31

Android用戶應(yīng)用程序

2009-01-19 11:07:42

C#Web.NET

2021-08-30 20:19:55

應(yīng)用程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 三级av在线 | 亚洲高清视频在线观看 | 黑人巨大精品欧美一区二区免费 | 国产999精品久久久久久 | 免费视频成人国产精品网站 | 天天操狠狠操 | 伊人免费在线观看 | 午夜三区 | 中文字幕av在线 | 日韩在线中文字幕 | 日韩欧美一区二区在线播放 | 日韩精品一区二区三区高清免费 | 欧美亚洲激情 | 久久九九免费 | 婷婷久久五月 | 久久久精品在线 | 成人精品一区二区三区中文字幕 | av一二三区| 色综合久| 久久久久国产一级毛片高清网站 | 日韩在线精品视频 | 亚洲人人 | 国产免费拔擦拔擦8x高清 | 毛片视频网站 | 毛片一级黄色 | 亚洲中午字幕 | 亚洲视频中文字幕 | 久久激情网 | 精品国产一区二区三区四区在线 | 久久综合久久综合久久综合 | 日韩欧美一区二区三区 | 亚洲国产精品va在线看黑人 | 另类专区亚洲 | 亚州精品天堂中文字幕 | 可以免费看的毛片 | 请别相信他免费喜剧电影在线观看 | 欧美精品中文字幕久久二区 | 中文字幕国产精品 | 国产精品永久久久久 | 日韩中文字幕在线视频 | 午夜视频在线观看网站 |