Spring AI(三)创建简单交互案例
2025-03-11

文档

1. 新建ImageService类

package com.ai.SpringAiDemo.service;

import jakarta.annotation.Resource;
import org.springframework.ai.image.ImagePrompt;
import org.springframework.ai.image.ImageResponse;
import org.springframework.ai.openai.OpenAiImageModel;
import org.springframework.ai.openai.OpenAiImageOptions;
import org.springframework.stereotype.Service;

@Service
public class ImageService {
    @Resource
    private OpenAiImageModel openaiImageModel;
    public ImageResponse generateImage(String prompt,
                                       String quality,
                                       Integer n,
                                       Integer height,
                                       Integer width) {
        return openaiImageModel.call(
                new ImagePrompt(prompt,
                        OpenAiImageOptions.builder()
                                .withModel("dall-e-2")  // 模型名称 dall-e-3 仅支持一张图片
                                .quality(quality)  // 图片质量
                                .N(n)   // 图片数量
                                .height(height)   // 图片高度
                                .width(width).build())   // 图片宽度
        );
    }
}

2. 添加RestController

package com.ai.SpringAiDemo.controller;

import com.ai.SpringAiDemo.service.ChatService;
import com.ai.SpringAiDemo.service.ImageService;
import jakarta.annotation.Resource;
import org.springframework.ai.image.ImageResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class GenAiController {

    @Resource
    private ImageService imageService

    @GetMapping("/generate-image")
    public List<String> getImage(@RequestParam String prompt,
                                 @RequestParam(defaultValue = "hd") String quality,
                                 @RequestParam(defaultValue = "1") Integer n,
                                 @RequestParam(defaultValue = "1024") Integer height,
                                 @RequestParam(defaultValue = "1024") Integer width) {
        ImageResponse imageResponse = imageService.generateImage(prompt, quality, n, height, width);
        return imageResponse.getResults().stream().map(image -> image.getOutput().getUrl()).toList();
    }
}

3. 测试Api接口