Spring AI 整合 openAI 的绘图模型生成图片

4 篇文章 0 订阅

Spring AI 提供了图片生成接口,允许开发人员与各种专门用于图像生成的人工智能模型进行交互。目前,图像生成接口支持 OpenAI 和 Stability AI。我将为您提供一个详细的示例,演示如何使用 Spring AI 生成绘画。以下是详细的步骤和代码注释:

  1. 项目搭建

    参考 Spring AI 介绍以及与 Spring Boot 项目整合

  2. 源码介绍

    • 在 Chat API 部分,我们使用的是 OpenAiChatModel,类似地,绘图接口是 OpenAiImageModel
    • Spring AI 的核心绘图接口是 OpenAiImageModel,而 spring-ai-openai 中对该接口的具体实现是 OpenAiImageModel 类。
    • 调用绘图时,我们只需传入一个 ImagePrompt,其中包含了绘制图片的信息,如 ImageMessage(绘图指令)和 OpenAiImageOptions(图片尺寸、数量、返回格式、调用模型等)。
    • 对于 OpenAI 的绘图,我们主要关注 ImageMessageImageMessage 通常以字符串形式构建,例如:“帮我画一张小狗的图片”。
    • ImageOptions 涉及图片的大小、数量、返回格式以及调用的模型。OpenAI 的绘图调用使用 OpenAiImageOptions 类。
  3. 绘图示例

    • 下面是一个简单的实现,使用 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与语音和各项整合案例。

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值