🌓

SpringAI - ChatMemory

对话记忆什么是对话记忆AI记忆 AI模型本身是无状态的,是不会保留历史交互信息。 当需要与AI多轮交互时,如果无法保持上下文(对话记忆),则AI模型可能会出现理解错误的情况。 这一特性也算是AI模型的一个局限点,只能应用系统自行实现上下文保持。 SpringAI主要通过记忆、存储、检索三块来实现与AI保持上下文。 记忆,并非历史记录 对话记忆: 主要是围绕...

阅读全文

SpringAI - Models(一)

ModelAI模型 Model是SpringAI对AI模型的抽象。学习中一直使用的ChatModel是对聊天模型的抽象。 SpringAI除了聊天模型ChatModel,还抽象了比如嵌入模型、图像、音频模型等等。下面是官方的模型层次图: StreamingModel本质是与Model一致的,只是对支持流式响应的模型的抽象。 ChatModel Ch...

阅读全文

SpringAI - Models(二)

DeepSeek 模型Spring boot starter SpringAI 为封装的 DeepSeek 聊天模型提供 Spring Boot 自动配置。通过添加下面依赖即可: 1234<dependency> <groupId>org.springframework.ai</groupId> <artifactI...

阅读全文

SpringAI - Models(三)

非聊天模型ImageModel 非聊天模型没有像聊天模型那样有ChatClient的使用,而是直接使用相应的Model来进行交互。 比如图像模型ImageModel。当然也对应有提示ImagePrompt和选项参数ImageOptions。 提示词是通过ImageMessage来进行封装,整体思想与聊天模型基本一致。 简单实用一下OpenAiImage...

阅读全文

SpringAI - ToolCalling(一)

工具调用AI的工具能力AI的短板 AI模型通过训练具备了逻辑推理、数据处理、内容生成等能力,但也存在一些短板。比如以下这些场景 向AI询问今天的天气如何。 让AI制定了旅游计划,让其帮忙预订机票。 因为缺少天气数据的支撑,AI无法给出准确的天气信息。 同样因为缺少预订机票可执行的系统支撑,也无法完成预定。 工具的作用 针对上述两个场景,AI提供梨工具调...

阅读全文

SpringAI - ToolCalling(二)

函数工具调用函数即工具 在方法即工具中有一项限制是参数和返回类型不得是函数式类型(如 Function、Supplier、Consumer)。 SpringAI为函数式类型单独提供了构建工具的方式。 使用 FunctionToolCallback 可以通过FunctionToolCallback将Java中的函数式类型(Function、Supplier、...

阅读全文

SpringAI - ToolCalling(三)

SpringAI-工具的特性工具的生命周期生命周期 SpringAI默认会自动执行AI模型对工具调用的请求,并将工具执行结果返回给AI模型。 整个过程由ChatModel(SpringAI与AI模型交互的核心实现)及ToolCallingManager(工具调用的核心管理器)共同完成。(ChatModel后续会深入学习和记录) 下图是官方的工具执行的生命...

阅读全文

SpringAI - 多模态(Multimodality)

多模态AI模型的多模态 在前面的学习中我们只使用到了文本内容的输入与AI进行交互,那文本输入就算是一种模态。 那如果某个AI不仅仅能理解文本,还能理解图像、音频、视频等输入,那这个AI模型就支持了多模态。 现在能支持多模态的AI模型,在SpringA的文档上看到如下: 例如 OpenAI 的GPT-4o、Google 的Vertex AI Gemini...

阅读全文

SpringAI - 结构化输出(StructuredOutputConverter)

结构化输出如何引导AI结构化输出 AI模型输出响应并非像传统程序那样默认按某种结构化响应来输出,而是按照自然语言进行输出。 AI模型是可以按照输入的指令、需求来进行特定的处理和输出。那么可以利用这一点,要求AI按照指定的格式结构输出。 所以在调用AI之前,需要在提示词中加入明确、精准的格式指令,且最好是给出格式的例子来进行引导。如果输入的指令不够明确,也会存...

阅读全文

SpringAI - Prompt(一)

MessageAI提示词 提示词是引导AI进行特定的处理及生成的输入,高效的提示词可以显著提升AI的处理及响应。 这里要记录的并不是提示词深入的概念,也不是如何设计高效的提示词,最起码首要目标不是这些。 而是学习和记录如何使用SpringAI提供的API快速的、灵活的将提示词编入程序与AI进行交互。 其实早在入门篇中就已经记录到了,且在过去的案例里面也基本都...

阅读全文