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
}