Spring Al学习7:ImageModel

AI大模型面试圣经
大模型开发者宝藏
Dify高效AI工作流智能体

以下是 ImageModel 接口定义:

@FunctionalInterface

public interface ImageModel extends Model<ImagePrompt, ImageResponse> {

复制代码
ImageResponse call(ImagePrompt request);

}

ImagePrompt

ImagePrompt 作为 ModelRequest 的实现,封装了 ImageMessage 对象列表及可选的模型请求选项。以下代码清单展示该类的简化结构(省略构造函数和工具方法):

public class ImagePrompt implements ModelRequest<List> {

复制代码
private final List<ImageMessage> messages;

private ImageOptions imageModelOptions;

@Override
public List<ImageMessage> getInstructions() {...}

@Override
public ImageOptions getOptions() {...}

// constructors and utility methods omitted

}

ImageMessage

ImageMessage 类封装了用于生成图像的文本及其权重值。对于支持权重的模型,该值可为正数或负数。

public class ImageMessage {

复制代码
private String text;

private Float weight;

public String getText() {...}

public Float getWeight() {...}

// constructors and utility methods omitted

}

ImageOptions

ImageOptions 接口继承 ModelOptions,表示可传递给图像生成模型的选项,用于定义少量可跨模型移植的通用参数。

ImageOptions 接口定义如下:

public interface ImageOptions extends ModelOptions {

复制代码
Integer getN();

String getModel();

Integer getWidth();

Integer getHeight();

String getResponseFormat(); // openai - url or base64 : stability ai byte[] or base64

}

此外,每个模型特定的 ImageModel 实现可携带专属选项传递给 AI 模型。例如 OpenAI 图像生成模型拥有 quality、style 等独有参数。

这一强大特性允许开发者在启动应用时使用模型特定选项,运行时再通过 ImagePrompt 动态覆盖。

ImageResponse

ImageResponse 类的结构如下:

public class ImageResponse implements ModelResponse {

复制代码
private final ImageResponseMetadata imageResponseMetadata;

private final List<ImageGeneration> imageGenerations;

@Override
public ImageGeneration getResult() {
	// get the first result
}

@Override
public List<ImageGeneration> getResults() {...}

@Override
public ImageResponseMetadata getMetadata() {...}

// other methods omitted

}

ImageResponse 类封装 AI 模型的输出,每个 ImageGeneration 实例包含单个提示词可能生成的多个输出之一。

最后,ImageGeneration 类继承 ModelResult,用于表示输出响应及相关的元数据信息:

ImageGeneration

最后,ImageGeneration 类继承 ModelResult,表示输出响应及其相关结果元数据:

public class ImageGeneration implements ModelResult {

复制代码
private ImageGenerationMetadata imageGenerationMetadata;

private Image image;

@Override
public Image getOutput() {...}

@Override
public ImageGenerationMetadata getMetadata() {...}

// other methods omitted

}

AI大模型面试圣经
大模型开发者宝藏
Dify高效AI工作流智能体

相关推荐
choumou_M1 小时前
算法_1:由浅入深学习快速排序QuickSort
学习·算法·排序算法
aiks_yuan2 小时前
Java CPU 100% 怎么排查:JDK 11 起 jstack 自带线程 CPU 时间,不用再 top -H 换算十六进制(JDK 8、11、17 实测)
java
Flynn Liang4 小时前
AiServices 源码级拆解:一个接口如何变成 RAG Agent
java·langchain·源码分析·rag·langchain4j·aiservices
Flynn Liang4 小时前
LangChain4j 1.23 架构全景:Java 大模型应用的 6 层抽象
java·langchain·大模型·rag·ai agent·langchain4j
聪明的笨猪猪5 小时前
实际工程问题:AI生成Redis分布式锁的原子性缺陷导致库存超卖
java·经验分享·面试·ai编程
软件技术NINI5 小时前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设
Flynn Liang6 小时前
LangChain4j 生产级工程骨架:12 个模块 + Docker 一键启动
java·spring boot·langchain·rag·langchain4j
蒸蒸yyyyzwd6 小时前
后端学习笔记 day111
笔记·学习
叼烟扛炮6 小时前
[LangChain] 学习笔记(08):工具调用底层闭环与第三方搜索(Tavily)实战
人工智能·笔记·学习·langchain
噢,我明白了7 小时前
JAVA中的一些基础应用知识点
java·开发语言