首先,为啥不用Spring AI aibaba。是因为我现在运行的项目已经有,对于生图是有要求的,对比模型的话还是豆包和即梦在图片处理上更有优势。所以与其去改Spring AI aibaba,我就想的还不如改Spring AI咯。
第一步就是重构OpenAiImageModel,这个怎么说呢,国内的大模型基本还是遵循OpenAI的规范。
@Configuration
public class ImageModelConfig {
@Value("${spring.ai.openai.image.options.images-path}")
private String imagesPath;
@Value("${spring.ai.openai.image.api-key}")
private String apiKey;
@Value("${spring.ai.openai.image.base-url}")
private String baseUrl;
@Value("${spring.ai.openai.image.options.model}")
private String model;
@Bean
public OpenAiImageModel openAiImageApi(){
OpenAiImageApi openAiImageApi = OpenAiImageApi.
builder().
baseUrl(baseUrl).
apiKey(apiKey).
imagesPath(imagesPath).build();
OpenAiImageOptions openAiImageOptions = OpenAiImageOptions.builder().model(model).build();
return new OpenAiImageModel(openAiImageApi,openAiImageOptions,new RetryTemplate());
}
}
其实这里就是指定了下请求地址,因为框架里面有默认地址咯。
第二步调用生图
@Autowired
private OpenAiImageModel openAiImageModel;
@GetMapping("/wb")
public String structuredOutput1(String msg){
ImageResponse response = openAiImageModel.call(
new ImagePrompt(msg,
OpenAiImageOptions.builder()
.quality("hd")
.N(4)
.height(1024)
.width(1024).build())
);
return response.getResult().getOutput().getUrl();
}
这个就比较简单咯