本文介绍在java
中如何使用Azure OpenAI
中的DALL·E 3
如果你想看官方的版本,请点击下面的这个链接适用于 Java 的 Azure OpenAI 客户端库 | Microsoft Learn
但是根据他的示例代码我并没有调用成功,如果哪位朋友成功了也可以分享一下。
本文将介绍使用okhttp
的方式调用
调用示例代码
@Value("${dall-e-3.azure-openai-key}")
private String apiKey;
@Value("${dall-e-3.endpoint}")
private String endpoint;
@Value("${dall-e-3.deployment-or-model-id}")
private String modelId;
@Value("${dall-e-3.version}")
private String version;
/**
* @param questionDto 问题参数
* prompt 提示词
* size 尺寸 默认为1024x1024
* n 生成图片数量 默认为1
* quality 选项有“高清hd”和“标准standard”;默认为标准
* style 选项有“自然natural”和“生动vivid”;默认为生动
* @return {@link String}
*/
public String generateImage(QuestionDto questionDto) {
try {
String url = endpoint + "/openai/deployments/" + modelId + "/images/generations?api-version=" + version;
// Request body
JSONObject body = new JSONObject();
body.put("prompt", questionDto.getQuestion());
body.put("size", IMG_RESOLUTION_1024.getModel());
body.put("n", 1);
body.put("quality", QUALITY_STANDARD.getModel());
body.put("style", STYLE_NATURAL.getModel());
OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(25, TimeUnit.SECONDS)
.build();
Request request = new Request.Builder()
.url(url)
.post(RequestBody.create(MediaType.parse("application/json"), body.toJSONString()))
.addHeader("api-key", apiKey)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
assert response.body() != null;
String responseBody = response.body().string();
JSONObject jsonResponse = JSONObject.parseObject(responseBody);
return jsonResponse.getJSONArray("data").getJSONObject(0).getString("url");
} else {
System.out.println("Error: " + response.code() + " - " + response.message());
return null;
}
} catch (IOException e) {
log.error("Error: " + e.getMessage());
return "超时连接,请重新尝试";
}
}
关于哪些区可以使用DALL·E 3
可以看哪个区的DALL·E 3
还在收费,基本就是可以创建的,可以点链接看一下Azure OpenAI 服务 - 定价| Microsoft Azure。我选择的是Sweden Central(瑞典中部)