前提:在 https://beta.openai.com/account/api-keys 注册一个自己的 API key.
要在Java Spring Framework中使用OpenAI API,您需要使用一个能够处理HTTP请求的库。其中一个流行的库是Spring RestTemplate库。RestTemplate是一个强大而灵活的库,可以轻松地发送HTTP请求并处理响应。
首先,您需要将Spring RestTemplate库添加到您的项目中。您可以通过将以下依赖项添加到您的build.gradle文件中来实现:
dependencies { // 其他依赖... implementation 'org.springframework.boot:spring-boot-starter-web' }
spring-boot-starter-web依赖项包含了RestTemplate库,以及构建使用Spring进行Web应用程序所需的其他依赖项。
添加依赖项之后,您需要在应用程序中配置RestTemplate。您可以在Spring配置类或直接在应用程序类中创建一个RestTemplate bean。以下是创建RestTemplate bean的示例:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @Configuration public class AppConfig { @Bean public RestTemplate restTemplate() { return new RestTemplate(); } }
上面的示例中,@Configuration注解表示该类包含Spring配置。restTemplate()方法上的@Bean注解创建了一个RestTemplate bean,可以自动装配到其他类中以进行HTTP请求。
配置好RestTemplate之后,您可以使用它向OpenAI API发送HTTP请求。您可以使用getForObject()或postForObject()等方法发送GET或POST请求。以下是使用RestTemplate进行GET请求的示例:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; @Service public class OpenAIService { private final RestTemplate restTemplate; @Autowired public OpenAIService(RestTemplate restTemplate) { this.restTemplate = restTemplate; } public String getOpenAIResponse() { String apiUrl = "https://api.openai.com/v1/your-endpoint"; // 设置任何必要的请求参数或头部信息 // 发送GET请求并接收响应 String response = restTemplate.getForObject(apiUrl, String.class); return response; } }
在上面的示例中,通过构造函数注入了RestTemplate bean到OpenAIService类中。在getOpenAIResponse()方法中,您可以根据需要自定义URL、请求参数、头部信息,并处理响应。
请记得将"https://api.openai.com/v1/your-endpoint"替换为您想要与OpenAI API通信的实际URL。
以上就是在Java Spring Framework项目中使用Spring RestTemplate库与OpenAI API交互的方法。
更详细的操作,请参考这篇文章。
build.gradle 的内容:
plugins { id 'java' id 'org.springframework.boot' version '3.0.1' id 'io.spring.dependency-management' version '1.1.0' } group = 'com.openai' version = '0.0.1-SNAPSHOT' sourceCompatibility = '17' repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.named('test') { useJUnitPlatform() }
Java 实现:
@Component public class OpenAi { private static final String OPENAI_URL = "https://api.openai.com/v1/images/generations"; private final String apiKey = "<your-api-key"; private final RestTemplate restTemplate = new RestTemplate(); public String generateImages(String prompt, float temperature, int maxTokens, String stop, final int logprobs, final boolean echo) { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.set("Authorization", "Bearer " + apiKey); // We are including only some of the parameters to the json request String requestJson = "{\"prompt\":\"" + prompt + "\",\"n\":" + n + "}"; HttpEntity<String> request = new HttpEntity<>(requestJson, headers); ResponseEntity<String> response = restTemplate.postForEntity(OPENAI_URL, request, String.class); return response.getBody(); } }