Spring AI 提供了图片生成接口,允许开发人员与各种专门用于图像生成的人工智能模型进行交互。目前,图像生成接口支持 OpenAI 和 Stability AI。我将为您提供一个详细的示例,演示如何使用 Spring AI 生成绘画。以下是详细的步骤和代码注释:
-
项目搭建:
-
源码介绍:
- 在 Chat API 部分,我们使用的是
OpenAiChatModel
,类似地,绘图接口是OpenAiImageModel
。 - Spring AI 的核心绘图接口是
OpenAiImageModel
,而spring-ai-openai
中对该接口的具体实现是OpenAiImageModel
类。 - 调用绘图时,我们只需传入一个
ImagePrompt
,其中包含了绘制图片的信息,如ImageMessage
(绘图指令)和OpenAiImageOptions
(图片尺寸、数量、返回格式、调用模型等)。 - 对于 OpenAI 的绘图,我们主要关注
ImageMessage
。ImageMessage
通常以字符串形式构建,例如:“帮我画一张小狗的图片”。 ImageOptions
涉及图片的大小、数量、返回格式以及调用的模型。OpenAI 的绘图调用使用OpenAiImageOptions
类。
- 在 Chat API 部分,我们使用的是
-
绘图示例:
- 下面是一个简单的实现,使用 DALL-E-3 模型绘制图片:
@RestController
@RequestMapping("/openai")
public class OpenAiImageController {
@Resource
private OpenAiImageModel openAiImageModel;
// 定义一个接口,传入文本
@GetMapping("/image/generate")
public String chat(@RequestParam(value = "message",defaultValue = "生成一只萌萌的狮子?") String message) {
// 调用OpenAI聊天模型的call方法,传入message参数,得到返回结果
ImageResponse imageResponse = openAiImageModel.call(new ImagePrompt(message, OpenAiImageOptions.builder()
.withModel(OpenAiImageApi.ImageModel.DALL_E_3.getValue()) //这里一定要选择OPEN AI能用于做画的大模型,默认的不可以,其它参数可以自己定制
.build()
));
String result = imageResponse.getResult().getOutput().getUrl();
// 打印返回结果
System.out.println(result);
// 返回结果
return result;
}
}
在上述示例中,我们通过在浏览器里输入`http://localhost:8080/openai/image/generate?message=%E8%AF%B7%E5%B8%AE%E6%88%91%E7%94%BB%E4%B8%80%E5%8F%AA%E7%8B%AE%E5%AD%90` 调用接口,最终返回图片的URL地址,当然你也可以返回图片的BASE64
返回的结果图片如下:
上面的例子,传入一个绘图指令,然后返回生成的图片 URL,更多地参数配置以及各种探索可以访问官网。后面我们还继续介绍Spring Ai与语音和各项整合案例。