非聊天模型

ImageModel

  • 非聊天模型没有像聊天模型那样有ChatClient的使用,而是直接使用相应的Model来进行交互。

  • 比如图像模型ImageModel。当然也对应有提示ImagePrompt和选项参数ImageOptions

  • 提示词是通过ImageMessage来进行封装,整体思想与聊天模型基本一致。

  • 简单实用一下OpenAiImageModel

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class ImageModelExample {

    private final OpenAiImageModel imageModel;

    public void example() {
    ImageResponse imageResponse = imageModel.call(new ImagePrompt(
    "一台蓝色的奥迪S5",
    OpenAiImageOptions.builder()
    .model("gpt-image-1")
    .user("test")
    .quality("auto")
    .height(256)
    .height(1024)
    .build()));
    log.info("\nImage model response -> \n{}", imageResponse);
    }
    }
  • 然后因为OpenAI没有充值,图像模型不能使用,所以就只返回了一个报错。

    计费限制

  • 这里只是简单了解一下,不做多记录了。

EmbeddingModel

  • EmbeddingModel是SpringAI提供的嵌入模型。

  • 嵌入模型可能在后续学习向量数据库的时候会使用到,将内容转为嵌入向量进行存储,然后进行语意查询。

  • 下面是官方的一个结构图,大概看看。整体与其他模型基本一致的,

    embeddings api

  • 也不多做记录了,简单记录一个OpenAiEmbeddingModel调用案例。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public class EmbeddingModelExample {

    private final OpenAiEmbeddingModel embeddingModel;

    public void example() {
    EmbeddingResponse embeddingResponse = embeddingModel.call(
    new EmbeddingRequest(List.of("AI应用开发者"),
    OpenAiEmbeddingOptions.builder()
    .model("text-embedding-ada-002")
    .user("test-1")
    .build()));
    log.info("\nEmbedding model response -> \n{}", embeddingResponse);
    }
    }

  • 结果一样,没有余额,也是返回的报错。

    image-20250806174254724

总结

  • 简单了解一下SpringAI提供的其他模型的使用。
  • 各个模型整体思想,代码结构等基本都是一致的。

最后

  • 简单了解一下SpringAI除了聊天模型,也提供其他模型的使用,只是相对来说没有那么丰富。
  • 对于SpringAI模型的学习到这里结束,后面继续学习与聊天模型交互之间的聊天记忆。
  • 所有案例的源码,都会提交在GitHub上。本次案例包:com.spring.ai.example.models.three