|
@@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.ai.image.*;
|
|
|
import cn.iocoder.yudao.framework.ai.imageopenai.api.OpenAiImageRequest;
|
|
|
import cn.iocoder.yudao.framework.ai.imageopenai.api.OpenAiImageResponse;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.jetbrains.annotations.NotNull;
|
|
|
import org.springframework.retry.RetryCallback;
|
|
|
import org.springframework.retry.RetryContext;
|
|
|
import org.springframework.retry.RetryListener;
|
|
@@ -58,21 +59,14 @@ public class OpenAiImageClient implements ImageClient {
|
|
|
@Override
|
|
|
public ImageResponse call(ImagePrompt imagePrompt) {
|
|
|
return this.retryTemplate.execute(ctx -> {
|
|
|
- // 检查是否配置了 OpenAiImageOptions
|
|
|
- if (defaultImageOptions == null && imagePrompt.getOptions() == null) {
|
|
|
- throw new ChatException("OpenAiImageOptions 未配置参数!");
|
|
|
- }
|
|
|
- // 优先使用 request 中的 ImageOptions
|
|
|
- ImageOptions useImageOptions = imagePrompt.getOptions() == null ? defaultImageOptions : imagePrompt.getOptions();
|
|
|
- if (!(useImageOptions instanceof OpenAiImageOptions)) {
|
|
|
- throw new ChatException("配置信息不正确,传入的必须是 OpenAiImageOptions!");
|
|
|
- }
|
|
|
- // 转换 OpenAiImageOptions
|
|
|
- OpenAiImageOptions openAiImageOptions = (OpenAiImageOptions) useImageOptions;
|
|
|
+ OpenAiImageOptions openAiImageOptions = getOpenAiImageOptions(imagePrompt);
|
|
|
// 创建请求
|
|
|
OpenAiImageRequest request = new OpenAiImageRequest();
|
|
|
BeanUtil.copyProperties(openAiImageOptions, request);
|
|
|
request.setPrompt(imagePrompt.getInstructions().get(0).getText());
|
|
|
+ request.setModel(openAiImageOptions.getModel());
|
|
|
+ request.setStyle(openAiImageOptions.getStyle().getStyle());
|
|
|
+ request.setSize(openAiImageOptions.getSize());
|
|
|
// 发送请求
|
|
|
OpenAiImageResponse response = openAiImageApi.createImage(request);
|
|
|
return new ImageResponse(response.getData().stream().map(res -> {
|
|
@@ -83,4 +77,19 @@ public class OpenAiImageClient implements ImageClient {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+ private @NotNull OpenAiImageOptions getOpenAiImageOptions(ImagePrompt imagePrompt) {
|
|
|
+ // 检查是否配置了 OpenAiImageOptions
|
|
|
+ if (defaultImageOptions == null && imagePrompt.getOptions() == null) {
|
|
|
+ throw new ChatException("OpenAiImageOptions 未配置参数!");
|
|
|
+ }
|
|
|
+ // 优先使用 request 中的 ImageOptions
|
|
|
+ ImageOptions useImageOptions = imagePrompt.getOptions() == null ? defaultImageOptions : imagePrompt.getOptions();
|
|
|
+ if (!(useImageOptions instanceof OpenAiImageOptions)) {
|
|
|
+ throw new ChatException("配置信息不正确,传入的必须是 OpenAiImageOptions!");
|
|
|
+ }
|
|
|
+ // 转换 OpenAiImageOptions
|
|
|
+ OpenAiImageOptions openAiImageOptions = (OpenAiImageOptions) useImageOptions;
|
|
|
+ return openAiImageOptions;
|
|
|
+ }
|
|
|
+
|
|
|
}
|