使用Spring集成OpenAI 生成图像

IT 文章3年前 (2023)发布 小编
0 0 0

ChatGPTOpenAI 开发的一款强大自然语言生成模型,可生成类似人类的文本。通过 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 请求并处理响应。

ad

程序员导航

优网导航旗下整合全网优质开发资源,一站式IT编程学习与工具大全网站

首先,您需要将 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。

ad

AI 工具导航

优网导航旗下AI工具导航,精选全球千款优质 AI 工具集

现在,您可以在 Spring 控制器中使用此类来使用 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 请求。

ad

免费在线工具导航

优网导航旗下整合全网优质免费、免注册的在线工具导航大全

http://localhost:8080/generateImages

这是我的 API 测试截图和响应:

使用Spring集成OpenAI 生成图像

可以看到具有 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 强大的功能,从而使开发变得更加轻松!

© 版权声明

相关文章

暂无评论

暂无评论...