行业资讯 2025年08月6日
0 收藏 0 点赞 961 浏览 3243 个字
摘要 :

ChatGPT 是 OpenAI 开发的一款强大自然语言生成模型,可生成类似人类的文本。通过 OpenAI API,开发人员可以访问该模型,并将其集成到自己的应用程序中。在本文中,我们……

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。

现在,您可以在 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 请求。

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

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/8766.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号