Переглянути джерело

【增加】Midjourney client,增加 imagine 方法

cherishsince 11 місяців тому
батько
коміт
20addff45e

+ 40 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/MidjourneyProxyClient.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.ai.client;
+
+import cn.iocoder.yudao.module.ai.client.vo.MidjourneyImagineReqVO;
+import cn.iocoder.yudao.module.ai.client.vo.MidjourneySubmitRespVO;
+import jakarta.validation.constraints.NotNull;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * Midjourney Proxy 客户端
+ *
+ * @author fansili
+ * @time 2024/5/30 13:58
+ * @since 1.0
+ */
+@Component
+public class MidjourneyProxyClient {
+
+    private static final String URI_IMAGINE = "/submit/imagine";
+
+    @Value("${ai.midjourney-proxy.url:http://127.0.0.1:8080/mj}")
+    private String url;
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    /**
+     * imagine - 根据提示词提交绘画任务
+     *
+     * @param imagineReqVO
+     * @return
+     */
+    public MidjourneySubmitRespVO imagine(@Validated @NotNull MidjourneyImagineReqVO imagineReqVO) {
+        return restTemplate.postForObject(url.concat(URI_IMAGINE), imagineReqVO, MidjourneySubmitRespVO.class);
+    }
+
+}

+ 32 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/vo/MidjourneyImagineReqVO.java

@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.ai.client.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Midjourney:Imagine 请求
+ *
+ * @author fansili
+ * @time 2024/5/30 14:02
+ * @since 1.0
+ */
+@Data
+public class MidjourneyImagineReqVO {
+
+    @Schema(description = "垫图(参考图)base64数组", required = false)
+    private List<String> base64Array;
+
+    @Schema(description = "通知地址", required = false)
+    @NotNull(message = "回调地址不能为空!")
+    private String notifyHook;
+
+    @Schema(description = "提示词", required = true)
+    @NotNull(message = "提示词不能为空!")
+    private String prompt;
+
+    @Schema(description = "自定义参数", required = false)
+    private String state;
+}

+ 27 - 0
yudao-module-ai/yudao-module-ai-biz/src/main/java/cn/iocoder/yudao/module/ai/client/vo/MidjourneySubmitRespVO.java

@@ -0,0 +1,27 @@
+package cn.iocoder.yudao.module.ai.client.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * Midjourney:Imagine 请求
+ *
+ * @author fansili
+ * @time 2024/5/30 14:02
+ * @since 1.0
+ */
+@Data
+public class MidjourneySubmitRespVO {
+
+    @Schema(description = "状态码: 1(提交成功), 21(已存在), 22(排队中), other(错误)")
+    private String code;
+
+    @Schema(description = "描述")
+    private String description;
+
+    @Schema(description = "扩展字段")
+    private String properties;
+
+    @Schema(description = "任务ID")
+    private String result;
+}