秦皇岛网站,wordpress html标签,域名购买,四川省工程建设管理协会网站前言
Spring最近刚刚推出了SpringAI#xff0c;封装了AI大模型接口的使用。本文将参考Spring官网案例#xff0c;一步步教你如何调用OpenAI的接口#xff0c;让ChatGPT接口返回一个笑话。
前提条件
请下载并安装好JDK17或更新的版本#xff0c;本文使用的是JDK21。JDK下…前言
Spring最近刚刚推出了SpringAI封装了AI大模型接口的使用。本文将参考Spring官网案例一步步教你如何调用OpenAI的接口让ChatGPT接口返回一个笑话。
前提条件
请下载并安装好JDK17或更新的版本本文使用的是JDK21。JDK下载地址。准备好梯子。没有梯子调用OpenAI接口会报500错误。也别问我梯子是啥懂得都懂。准备好OpenAI接口的API Key淘宝上有卖的应该不差过10元。如果你的Maven用的是阿里云仓库建议先注释掉。AI依赖包太新了目前阿里云还没有。
创建项目 使用idea创建一个新的Spring项目。File New Project Spring Initializer Server URL一定要用Spring的https://start.spring.io其他的地址目前还没更新。 JDK版本一定要大于等于17低版本不支持Springboot3 依赖包选择Spring Web和OpenAI在最下方如下图 创建成功之后等待项目自动下载依赖包。这里就看大家网速了。
配置开发 项目创建好之后加入OpenAI接口配置。 application.properties spring.application.nameJavaAI
# openai api-key 没有的建议自己去买一个我这个应该很快就会失效
spring.ai.openai.api-keysk-YBp5UzXATs19YDXrnkIRT3BlbkFJcjUcXqcdCLSxNpbUR4Ts
# ChatGPT模型版本
spring.ai.openai.chat.options.modelgpt-3.5-turbo
spring.ai.openai.chat.options.temperature0.7pom.xml这里面的内容是自动生成的一般不用改。 ?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.2.4/versionrelativePath/ !-- lookup parent from repository --/parentgroupIdcom.gem/groupIdartifactIdJavaAI/artifactIdversion0.0.1-SNAPSHOT/versionnameJavaAI/namedescriptionJavaAI/descriptionpropertiesjava.version21/java.versionspring-ai.version0.8.1/spring-ai.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-openai-spring-boot-starter/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.ai/groupIdartifactIdspring-ai-bom/artifactIdversion${spring-ai.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagementbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationexcludesexcludegroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/exclude/excludes/configuration/plugin/plugins/buildrepositoriesrepositoryidspring-milestones/idnameSpring Milestones/nameurlhttps://repo.spring.io/milestone/urlsnapshotsenabledfalse/enabled/snapshots/repository/repositories
/project在你的启动类中加入代理设置不然掉接口会报500。 JavaAiApplication.java import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class JavaAiApplication {public static void main(String[] args) {// 设置代理这里需要根据自己找的代理软件来调整配置System.setProperty(proxySet,true);System.setProperty(proxyType,4);// 代理地址根据代理软件System.setProperty(proxyHost, 127.0.0.1);// 代理端口HttpSystem.setProperty(proxyPort,21882);SpringApplication.run(JavaAiApplication.class, args);}
}创建controller使用调用OpenAI的接口。 ChatController import org.springframework.ai.chat.ChatResponse;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.openai.OpenAiChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;import java.util.Map;/*** ChatGPT接口调用br** author Gem* version 1.0* date 2024/4/18*/
RestController
public class ChatController {private final OpenAiChatClient chatClient;Autowiredpublic ChatController(OpenAiChatClient chatClient) {this.chatClient chatClient;}GetMapping(/ai/generate)public Map generate(RequestParam(value message, defaultValue Tell me a joke) String message) {return Map.of(generation, chatClient.call(message));}GetMapping(/ai/generateStream)public FluxChatResponse generateStream(RequestParam(value message, defaultValue Tell me a joke) String message) {Prompt prompt new Prompt(new UserMessage(message));return chatClient.stream(prompt);}
}到此开发配置结束。
启动调试 启动项目启动前请先开启梯子默认端口号8080。 启动成功日志 Connected to the target VM, address: 127.0.0.1:55997, transport: socket. ____ _ __ _ _/\\ / ____ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | _ | _| | _ \/ _ | \ \ \ \\\/ ___)| |_)| | | | | || (_| | ) ) ) ) |____| .__|_| |_|_| |_\__, | / / / /|_||___//_/_/_/:: Spring Boot :: (v3.2.4)2024-04-18T17:42:27.49508:00 INFO 22192 --- [JavaAI] [ main] com.gem.javaai.JavaAiApplication : Starting JavaAiApplication using Java 21.0.3 with PID 22192 (D:\Workspace\idea\study\JavaAI\JavaAI\target\classes started by Administrator in D:\Workspace\idea\study\JavaAI\JavaAI)
2024-04-18T17:42:27.49708:00 INFO 22192 --- [JavaAI] [ main] com.gem.javaai.JavaAiApplication : No active profile set, falling back to 1 default profile: default
2024-04-18T17:42:28.37108:00 INFO 22192 --- [JavaAI] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port 8080 (http)
2024-04-18T17:42:28.38008:00 INFO 22192 --- [JavaAI] [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2024-04-18T17:42:28.38008:00 INFO 22192 --- [JavaAI] [ main] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.19]
2024-04-18T17:42:28.42308:00 INFO 22192 --- [JavaAI] [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2024-04-18T17:42:28.42308:00 INFO 22192 --- [JavaAI] [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 744 ms
2024-04-18T17:42:29.10008:00 INFO 22192 --- [JavaAI] [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path
2024-04-18T17:42:29.10608:00 INFO 22192 --- [JavaAI] [ main] com.gem.javaai.JavaAiApplication : Started JavaAiApplication in 1.95 seconds (process running for 2.765)启动成功后我们可以使用IDEA自带的Http Client工具进行测试。点击方法左侧的绿色豆子即可。 使用这个工具的好处是他会记录每次的返回结果且不用额外安装。当然你也可以使用其他测试工具。 点绿色的箭头调用成功后会在返回结果中看到ChatGPT讲的笑话。 GET http://localhost:8080/ai/generateHTTP/1.1 200
Content-Type: application/json
Transfer-Encoding: chunked
Date: Thu, 18 Apr 2024 10:08:37 GMT
Keep-Alive: timeout60
Connection: keep-alive{generation: Why did the scarecrow win an award? Because he was outstanding in his field!
}Response file saved.2024-04-18T180837.200.jsonResponse code: 200; Time: 1602ms (1 s 602 ms); Content length: 94 bytes (94 B)程序内部调用的是这个接口地址可以先用浏览器访问下是否能正常返回 本文到此结束大家学会了么
参考教程
https://www.bilibili.com/video/BV1HJ4m1L7qw/?spm_id_from333.337.search-card.all.clickvd_sourcecbae38ae3b5a4c826df018bbf1c10a9d