文章主题:ChatGPT, OpenAI API, Java Spring Framework, image generation
ChatGPT,作为一款由OpenAI研发的先进语言模型,具备生成类似于人类文本的能力。借助OpenAI提供的API接口,开发者可以轻松地将其集成到自有的应用程序之中。在本篇文章中,我们将探讨如何运用Java Spring框架与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.openaiversion = 0.0.1-SNAPSHOTsourceCompatibility = 17repositories{
mavenCentral()
}
dependencies{
implementation org.springframework.boot:spring-boot-starter-web testImplementation org.springframework.boot:spring-boot-starter-test}
tasks.named(test) {
useJUnitPlatform()
}
接下来,创建一个处理 API 调用的类。可以使用下面的示例:
@Componentpublic 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 = newRestTemplate();
public String generateImages(String prompt, float temperature, int maxTokens, String stop, final int logprobs, final boolean echo){
HttpHeaders headers = newHttpHeaders();
在编程中,尤其是在Web开发中,设置HTTP头信息(headers)是一项非常重要的任务。它们可以帮助我们在浏览器与服务器之间传递额外的信息,例如身份验证凭据、语言偏好等。在这里,我将以一名文章专业高手的水平,为您详细解释如何设置Content-Type头部信息。首先,我们需要了解Content-Type头部信息的含义。它是一个描述性的字符串,用于指定从服务器发送给浏览器的数据的MIME类型。例如,如果我们正在传输一个JSON格式的数据,那么我们可以将Content-Type设置为”application/json”。在JavaScript中,我们通常使用`setContentType()`方法来设置Content-Type头部信息。这个方法的参数是一个MediaType对象,它包含了我们要发送的数据的类型信息。例如,如果我们想要发送一个JSON格式的数据,我们可以创建一个MediaType对象,并将它设置为”application/json”。下面是具体的代码示例:“`javascriptlet headers = new Headers();headers.setContentType(MediaType.APPLICATION_JSON);“`在这个例子中,我们创建了一个新的Headers对象,然后调用其`setContentType()`方法,将Content-Type设置为”application/json”。这样,当浏览器接收到这个响应时,它会知道这是一个JSON格式的数据,从而正确地解析和显示它。需要注意的是,不同的浏览器可能对Content-Type的理解有所不同,因此,为了确保兼容性,我们通常会使用`”application/json”`这样的标准值。当然,如果你有特定的需求,也可以根据实际情况选择其他的MediaType值。总的来说,设置Content-Type头部信息是一项重要的任务,它可以帮助我们更好地控制从服务器到浏览器的数据传输。通过理解和使用`setContentType()`方法,我们可以轻松地在JavaScript中实现这个功能。
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 = newHttpEntity < > (requestJson, headers);
ResponseEntity < String > response = restTemplate.postForEntity(OPENAI_URL, request, String.class);
returnresponse.getBody();
}
}
在本文中,我们将探讨如何使用Spring RestTemplate库向OpenAI API的生成图像端点发送POST请求,同时传递所需的提示词以及希望接收的图像数量。此外,根据需要在代码中还可以添加其他可选参数,具体信息请参考以下链接:https://beta.openai.com/docs/api-reference/images/create。
API 密钥已添加到请求头中,并以 JSON 的形式发送请求。然后解析响应以返回生成的图像 URL。
现在,可以在代码中使用此类来使用 ChatGPT 生成图像。以下是如何在 Spring 控制器中使用 *generateImages* 方法的示例。
@RestControllerpublic class OpenAiController{
@Autowired private finalOpenAi openAi;
public OpenAiController(OpenAi openAi){
this.openAi = openAi;
}
@PostMapping(“/generateImages”)
public String generateImages(@RequestBody GenerateImagesRequest request){
returnopenAi.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{
privateString prompt;
private floattemperature;
private intmaxTokens;
privateString stop;
private intlogprobs;
private booleanecho;
private intn;
// 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 的强大功能,使开发变得更轻松!
感谢阅读,希望对你有所帮助 :) 来源:manpreetsinghdor.medium.com推荐:恐怖的GPT4 ,打不过就加入 !网友用文心一言魔性作图,我愣住了最近发现我做了一个ChatGPT星球,这个星球有几十位行业内大佬
星球短短几天就发展到近1200人规模,星球活跃度上周排名第9:
简单说下这个星球能给大家提供什么:
星球福利:1、带你开通微软的New Bing账号,体验GPT4 。2、会邀请你加入ChatGPT会员交流群,群特别活跃。3、会赠送5份完整的ChatGPT使用手册和66个ChatGPT副业赚钱手册。4、教你开通ChatGPTPlus账号,提前使用ChatGPT4.0 。星球分享:1、ChatGPT的使用方法,最新资讯,商业价值。2、一些副业思考、创业案例、落地案例分享。3、探讨未来关于ChatGPT的机遇,帮助大家解决遇到的问题。4、ChatGPT全网最新最全的行业报告文档免费下载。5、提供访问ChatGPT的网络渠道。6、4月份开始带大家搞副业收入 !
7、提供一整年的售后服务,一起搞副业其它福利还在筹划中… 不过,我给你大家保证,加入星球后,收获的价值会远远大于今天加入的门票费用 !现在星球在运营初期,正式运营价格定为299,目前我给出了加入的最低价129,后面星球成员每增加100人,星球费用会增长10元(估计发文后就会涨价)。早就是优势,建议大家尽早以便宜的价格加入!
有兴趣的朋友们,欢迎扫码领取大额优惠券,加入本星球:
AI时代,拥有个人微信机器人AI助手!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
搜索微信号aigc666aigc999或上边扫码,即可拥有个人AI助手!