Spring?Boot項(xiàng)目中使用OpenAI-Java的示例詳解
前言
Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程。該框架使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置。通過(guò)這種方式,Spring Boot致力于在蓬勃發(fā)展的快速應(yīng)用開(kāi)發(fā)領(lǐng)域(rapid application development)成為領(lǐng)導(dǎo)者。
準(zhǔn)備工作
1、初始化一個(gè)springboot項(xiàng)目
參考地址:http://chabaoo.cn/article/232551.htm
2、訪問(wèn)OPENAI官網(wǎng)獲取API密鑰
地址:https://platform.openai.com/account/api-keys
3、通過(guò)OPENA開(kāi)源的JAVA SDK (OpenAI-Java)訪問(wèn) API
地址:GitHub - TheoKanning/openai-java: OpenAI GPT-3 Api Client in Java
集成達(dá)芬奇模型
1、編寫(xiě)SpringBoot項(xiàng)目中的pom文件
<dependency> <groupId>com.theokanning.openai-gpt3-java</groupId> <artifactId>client</artifactId> <version>0.9.0</version> </dependency>
2、初始化OpenAiService類(lèi)
import com.theokanning.openai.OpenAiService; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.time.Duration; /** * openai 配置類(lèi) */ @Configuration public class OpenAiConfiguration { @Value("${open.ai.key}") private String openAiKey; @Value("${open.ai.request.timeout}") private long timeout; @Bean public OpenAiService openAiService(){ return new OpenAiService(openAiKey, Duration.ofSeconds(timeout)); } }
3、配置密鑰、超時(shí)時(shí)間和使用的模型
#application.properties server.port=8081 #密鑰 open.ai.key=xxxxxxxx #超時(shí)時(shí)間 open.ai.request.timeout=100000 #達(dá)芬奇模型 open.ai.model=text-davinci-003
3、編寫(xiě)訪問(wèn)業(yè)務(wù)類(lèi)
import com.google.common.collect.Maps; import com.theokanning.openai.OpenAiService; import com.theokanning.openai.completion.CompletionRequest; import com.theokanning.openai.completion.CompletionResult; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.Arrays; import java.util.Map; @Slf4j @Service public class OpenAiChatBiz { @Value("${open.ai.model}") private String openAiModel; @Autowired private OpenAiService openAiService; /** * 聊天 * @param prompt * @return */ public String chat(String prompt){ CompletionRequest completionRequest = CompletionRequest.builder() .prompt(prompt) .model(openAiModel) .echo(true) .temperature(0.7) .topP(1d) .frequencyPenalty(0d) .presencePenalty(0d) .maxTokens(1000) .build(); CompletionResult completionResult = openAiService.createCompletion(completionRequest); String text = completionResult.getChoices().get(0).getText(); return text; } }
4、編寫(xiě)訪問(wèn)接口
import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController public class OpenAiChatApi { @Autowired private OpenAiChatBiz openAiChatBiz; @RequestMapping(path = "/chat/question",method = RequestMethod.GET) public String openAiChat(@RequestParam("question")String question){ if(StringUtils.isBlank(question)){ return "Please Input"; } return openAiChatBiz.chat(question); } }
效果展示
使用google的API Tester插件進(jìn)行測(cè)試
到此這篇關(guān)于Spring Boot項(xiàng)目中使用OpenAI-Java的示例詳解的文章就介紹到這了,更多相關(guān)Spring Boot使用OpenAI-Java內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot啟動(dòng)異常Exception in thread “main“ java.lang.UnsupportedClassVersionError
- Java SpringBoot集成ChatGPT實(shí)現(xiàn)AI聊天
- SpringBoot整合Javamail實(shí)現(xiàn)郵件發(fā)送的詳細(xì)過(guò)程
- Spring AI 入門(mén)學(xué)習(xí)指南
- Spring?AI?+?ollama?本地搭建聊天?AI?功能
- Spring?AI?+?混元帶你實(shí)現(xiàn)企業(yè)級(jí)穩(wěn)定可部署的AI業(yè)務(wù)智能體
- Spring?AI借助全局參數(shù)實(shí)現(xiàn)智能數(shù)據(jù)庫(kù)操作與個(gè)性化待辦管理
- Spring AI 使用超詳細(xì)講解
- 深入解析Spring AI框架如何在Java應(yīng)用中實(shí)現(xiàn)智能化交互的關(guān)鍵
相關(guān)文章
Mybatis不啟動(dòng)項(xiàng)目直接測(cè)試Mapper的實(shí)現(xiàn)方法
在項(xiàng)目開(kāi)發(fā)中,測(cè)試單個(gè)Mybatis Mapper方法通常需要啟動(dòng)整個(gè)SpringBoot項(xiàng)目,消耗大量時(shí)間,本文介紹通過(guò)Main方法和Mybatis配置類(lèi),快速測(cè)試Mapper功能,無(wú)需啟動(dòng)整個(gè)項(xiàng)目,這方法使用AnnotationConfigApplicationContext容器2024-09-09Springboot實(shí)現(xiàn)Activemq死信隊(duì)列詳解
這篇文章主要介紹了Springboot實(shí)現(xiàn)Activemq死信隊(duì)列詳解,Activemq服務(wù)端配置重新投遞次數(shù)超過(guò)?MaximumRedeliveries?,則會(huì)進(jìn)入死信隊(duì)列,默認(rèn)情況,有一個(gè)死信隊(duì)列:AcitveMQ.DLQ,所有的消息都投遞到此隊(duì)列,包括過(guò)期消息,重投遞失敗消息,需要的朋友可以參考下2023-12-12Java訪問(wèn)者設(shè)計(jì)模式詳細(xì)講解
大多數(shù)情況下你不需要訪問(wèn)者模式,但當(dāng)一旦需要訪問(wèn)者模式時(shí),那就是真的需要它了,這是設(shè)計(jì)模式創(chuàng)始人的原話??梢钥闯鰬?yīng)用場(chǎng)景比較少,但需要它的時(shí)候是不可或缺的,這篇文章就開(kāi)始學(xué)習(xí)最后一個(gè)設(shè)計(jì)模式——訪問(wèn)者模式2022-11-11springBoot+dubbo+zookeeper實(shí)現(xiàn)分布式開(kāi)發(fā)應(yīng)用的項(xiàng)目實(shí)踐
本文主要介紹了springBoot+dubbo+zookeeper實(shí)現(xiàn)分布式開(kāi)發(fā)應(yīng)用的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Java Clone深拷貝與淺拷貝的兩種實(shí)現(xiàn)方法
今天小編就為大家分享一篇關(guān)于Java Clone深拷貝與淺拷貝的兩種實(shí)現(xiàn)方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10Spring Boot的應(yīng)用啟動(dòng)與關(guān)閉的方法
本篇文章主要介紹了Spring Boot的應(yīng)用啟動(dòng)與關(guān)閉的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12