赞
踩
因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享
点击关注#互联网架构师公众号,领取架构师全套资料 都在这里
大家好,我是互联网架构师!
ChatGPT 是由 OpenAI 开发的强大语言模型,可以用于生成类似人类的文本。OpenAI API 允许开发人员访问该模型并在其自己的应用程序中使用。在本文中,我们将讨论如何使用 Java Spring Framework 与 OpenAI API 生成图像。
在开始之前,您需要在 OpenAI 网站 "https://beta.openai.com/account/api-keys" 上注册 API 密钥。一旦拥有了 API 密钥,就可以开始向 API 发送请求。
要使用 Java Spring Framework 与 OpenAI API,请使用可以处理 HTTP 请求的库。这方面比较常用的库是 Spring RestTemplate 库。RestTemplate 是一种强大而灵活的库,可以轻松地发送 HTTP 请求并处理响应。
首先,需要将 Spring RestTemplate 库添加到项目中。可以将以下依赖项添加到 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()
- }
接下来,创建一个处理 API 调用的类。可以使用下面的示例:
- @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();
- }
- }
这个类使用 Spring RestTemplate 库向 OpenAI API 的生成图像端点发送 POST 请求,包含给定的提示词和想要接收的图像数量。如果需要,还可以增加一些其他可选参数,可以在下面的链接中检查:https://beta.openai.com/docs/api-reference/images/create。
API 密钥已添加到请求头中,并以 JSON 的形式发送请求。然后解析响应以返回生成的图像 URL。
现在,可以在代码中使用此类来使用 ChatGPT 生成图像。以下是如何在 Spring 控制器中使用 *generateImages* 方法的示例。
- @RestController
- public class OpenAiController {
- @Autowired
- private final OpenAi openAi;
- public OpenAiController(OpenAi openAi) {
- this.openAi = openAi;
- }
- @PostMapping("/generateImages")
- public String generateImages(@RequestBody GenerateImagesRequest request) {
- return openAi.generateImages(request.getPrompt(), request.getTemperature(), request.getMaxTokens(), request.getStop(),
- request.getLogprobs(), request.isEcho(), request.getN());
- }
- }
上面的代码是 Spring REST 控制器的示例,它使用请求正文中传递的参数调用 OpenAi 类中的 generateImages 方法。它将 POST 请求映射到 /generateImages 终点,并将生成的图像作为响应返回。
还可以为请求正文定义一个 POJO 类,例如:
- public class GenerateImagesRequest {
- private String prompt;
- private float temperature;
- private int maxTokens;
- private String stop;
- private int logprobs;
- private boolean echo;
- private int n;
- // getters and setters
- }
值得注意的是,生成的图像可能不完美,可能需要进一步审查和调整。我们已向模型添加了许多参数,但在向服务器发送 post 请求时,OpenAI 实用程序类中并未使用它们。这是因为这些参数大多是可选的,有些甚至对于生成图像的端点(endpoint)无效。但是,对于其他端点,如“文本完成”等,这些是有效的。
测试 API 的时间到了
现在,我们已经准备好端点,可以启动服务器并使用以下 URL 从 Postman 或任何其他 API 测试工具发出 POST 请求。
http://localhost:8080/generateImages
这是我的 API 测试截图和响应:
可以看到具有 prompt 和 n 值的 Json 请求正文。n=3 表示我们将收到 5 张生成的图像作为响应。我们确实收到与刚刚发送的提示文本相关的 3 个图像 URL。
现在可以复制这些 URL 并将它们粘贴到浏览器中以查看实际图像。
图像生成使用 DALL·E 模型。有许多其他模型可供使用,根据要求进行选择。不仅可以生成图像,还可以操纵它们。可以都尝试一下,看看哪个最合心意。使用下面的链接获取所有可用模型:https://api.openai.com/v1/models(将你的 API 密钥作为 Bearer 令牌添加)。
本文提供了有关如何使用 Java Spring Framework 与 OpenAI API 生成 ChatGPT 图像的详细步骤。
希望本指南有助于在基于 Spring 的项目中使用 ChatGPT 的强大功能,使开发变得更轻松!
转自:Manpreet Singh,
链接:manpreetsinghdor.medium.com
· END ·
最后,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 系列面试题和答案,非常齐全。
如果这篇文章对您有所帮助,或者有所启发的话,帮忙扫描上方二维码关注一下,您的支持是我坚持写作最大的动力。
求一键三连点赞、转发、在看。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。