Spring AI(繪圖)

DHaiLin發表於2024-07-16

接上篇:Spring AI(聊天程式)

application.yml新增配置

image模型版本、數量、高度等相關引數配置,若當前程式碼中和application配置檔案中同時宣告,則程式碼中的配置會覆蓋application配置檔案中的

      # ai繪圖設定
      image:
        options:
          # 模型版本
          model: gpt-4-dalle
          # 圖片質量
          quality: hd
          # 數量
          n: 2
          # 高度
          height: 1920
          # 寬度
          width: 1080

application.yml檔案如下

Spring AI(繪圖)
spring:
  application:
    name: spring-ai
  ai:
    openai:
      # 訪問open ai介面的api key
      api-key: sk-3sfER03LDLG3SDFsdlwe283JSdw023lkrmrHDND32fmREKFD
      # 訪問open ai的介面地址
      base-url: https://openai.com/

      # ai聊天設定
      chat:
        options:
          # chatGpt模型版本,32k是引數量,若當前程式碼中和application配置檔案中同時宣告,則程式碼中的配置會覆蓋application配置檔案中的
          model: gpt-4-32k
          # 溫度越高,回答的準確率會下降,溫度越低,回答的準確率越好,若當前程式碼中和application配置檔案中同時宣告,則程式碼中的配置會覆蓋application配置檔案中的
          temperature: 0.3F

      # ai繪圖設定
      image:
        options:
          # 模型版本
          model: gpt-4-dalle
          # 圖片質量
          quality: hd
          # 數量
          n: 2
          # 高度
          height: 1920
          # 寬度
          width: 1080
View Code

1、AI繪圖(呼叫一次介面)

Spring AI(繪圖)
/**
 * ai繪圖
 * @author ithailin
 */
@RestController
@RequestMapping("/ai")
public class ImageController {
    private static final Logger logger = LoggerFactory.getLogger(ImageController.class);
    @Autowired
    private OpenAiImageModel openAiImageModel;

    /**
     * 呼叫openai的介面
     * public ImageResponse call(ImagePrompt imagePrompt){}
     * @param msg:我們提問的訊息
     * @return
     */
    @RequestMapping("/image")
    public Object image(String msg){
        logger.info("msg:{}",msg );
        ImagePrompt imagePrompt = new ImagePrompt(msg);
        ImageResponse imageResponse = openAiImageModel.call(imagePrompt);
        String imageUrl = imageResponse.getResult().getOutput().getUrl();
        logger.info("imageUrl:{}",imageUrl);
        return imageResponse.getResult().getOutput().getUrl();
    }

    /**
     * 呼叫openai的介面
     * public ImageResponse call(ImagePrompt imagePrompt){}
     * @param msg:我們提問的訊息
     * @return
     */
    @RequestMapping("/image2")
    public Object image2(String msg){
        logger.info("msg:{}",msg );

        OpenAiImageOptions imageOptions = OpenAiImageOptions.builder()
                //高畫質影像
                .withQuality("hd")
                //生成四張
                .withN(4)
                //高度
                .withHeight(1024)
                //寬度
                .withWidth(1024).build();

        ImagePrompt imagePrompt = new ImagePrompt(msg,imageOptions);
        ImageResponse imageResponse = openAiImageModel.call(imagePrompt);
        String imageUrl = imageResponse.getResult().getOutput().getUrl();
        logger.info("imageUrl:{}",imageUrl);
        return imageResponse.getResult().getOutput().getUrl();
    }
}
View Code

接下篇:

相關文章