Redian新闻
>
Spring + OpenAI 生成图像

Spring + OpenAI 生成图像

公众号新闻

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 
来源:manpreetsinghdor.medium.com

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



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
Grand Opening | 2023 China Focus@Boston is open for registrationChinese Professor Suspended For Racist, Homophobic SpeechCVPR'23 最佳论文候选 | 采样提速256倍!蒸馏扩散模型生成图像质量媲美教师模型关于Prompt Engineering你该了解啥?OpenAI应用研究负责人帮你梳理了当3D打印技术开始盖房:电脑生成图纸、挤牙膏式铺水泥 |【经纬低调分享】Opera推出Opera One,将取代Opera浏览器OpenAI 开源新模型代码,一步成图,1 秒 18 张一个无需注解的 Spring Boot API文档生成神器过年穿新衣:分放新队服欢乐记一键生成山川、河流,风格多样,从2D图像中学习生成无限3D场景Spring breakSpring循环依赖那些事儿(含Spring详细流程图)英国伦敦爱丁堡带孩子游记 Spring 2023深入剖析 Spring Boot 的 SPI 机制Sony世界摄影大奖"AI生成图片竟获优胜",创作者突抢麦:拒绝领奖「Tiamat」完成近千万美元A轮融资,专注将AI生成图像的可控性做到极致|早起看早期Hong Kong TV Company Deploys Stars as Salespeople on TaobaoAgustín Hernández:中美洲建筑背景下的未来主义巨构别只会 SpringMVC 了!Spring 又官宣了一个更牛逼的替代框架!一文详解Prompt学习和微调(Prompt Learning & Prompt Tuning)微软必应再进化!接入DALL·E模型,文字生成图像功能来了!【周末综艺会6期】Spring Garden Show 和板蓝花儿开苹果版余额宝上线,一季度比亚迪销量居国内第一,AI生成图获摄影大奖,iOS17或将允许三方商店应用,这就是今天的其他大新闻!砂子和眼睛,匣子和宝珠,语法和语言:论人在语言中的地位比Diffusion更快!OpenAI新图像生成模型开源了!清华校友宋飏一作开挖扩散模型小动作,生成图像几乎原版复制训练数据,隐私要暴露了AI生成图片在国际摄影大赛拿下大奖?!摄影师:我故意的!AI生成图片获世界摄影大奖冠军,人工智能队又上分了!如果有人热捧权威,无论是人还是偶像(包括由他们自己定义的科学),那么对他的言行,你要当心了。一段青绿色的快闪终结扩散模型:OpenAI开源新模型代码,一步成图,1秒18张Jiangsu City Punishes Property Developers For Selling Cheaply打卡,Goodbye Spring Break中西合璧,天下无敌伯克利音乐学院2023Spring 新生见面会+Open Mic「晴」活动来啦!快来参与~OpenAI再发3D生成模型Shap-E,传Midjourney入局3D模型生成中文多模态模型问世!IDPChat生成图像文字,只需5步+单GPU天赋“易昺(bǐng)”,创造历史!图像生成终结扩散模型,OpenAI「一致性模型」加冕!GAN的速度一步生图,高达18FPS
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。