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();
}
}