SpringAI——概念学习

一、概念介绍

在学习一个新的知识前对它的概念进行了解能有一个初步的认识。

大模型

(一)模型(Models)

基于大数据集学习,支持将文本、图像和音频数据作为输入输出。SpringAI支持多种类型的模型:Chat、Embedding、文生图、语音和文字互转等类型。对多提供商都有支持:OpenAi、DeepSeek、Google等。支持同步(call())和流式(stream())两种响应方式。

大模型

(二)提示词(Prompts)

提示词是与AI模型交互的最重要的输入,可以通过不同的输入引导AI模型输出不同格式的数据。好的提示词可以在使用AI模型中拥有更好的体验,一定要认真写提示词。

大模型

提示词在SpringAI中有一个重要的成员变量消息列表messages。框架中有四种不同角色的消息,分别是:

SYSTEM:用来设定系统提示词,用来表明这个AI模型的用途和后续的响应行为(SystemMessage)

USER:用户输入的内容,支持不同格式的数据(UserMessage)

ASSISTANT:AI回复的内容(AssistantMessage)

TOOL:工具调用的结果(ToolMessage)

1.提示词模板(PromptsTemplates)

基于字符串模板引擎(SpringAI使用StringTemplate),通过占位符(如{role})动态填充用户输入;类比SpringMVC的View,接收Map类型数据渲染为最终提示词,适配多角色消息格式。

(三)嵌入(Embeddings)

我们输入的文字、图片、语音等内容最终还是要交给计算机去进行海量的计算,Embedding将我们输入的内容向量化为浮点数组成的数据,这些数据以数值化的形式呈现给计算机,计算机通过计算向量之间的数值距离判断对象的相似度,可用于文本分类、语义搜索、RAG等场景。

(四)Token

提示词中提到的所有类型的消息都是token的一种,token的数量和使用模型花费的钱有着最直接的关系。

(五)结构化输出(StructuredOutput)

AI模型输出的内容默认是非结构化的文本,即使我们在每次和AI模型对话时都和它说“给我输出为JSON格式的数据”,再说这样也很不优雅。SpringAI提供了不同的转换器类型可以将默认的输出转换为结构化的数据,通过BeanOutputConverter转换器类型可以将输出的内容转换为JavaBean/Record。只需调用entity(Xxx.class)方法。

(六)工具调用(ToolCalling)

注册自定义服务,连接外部系统API,让AI模型能够调用外部服务和API,获取实时数据/执行操作。可以通过在方法上添加@Tool注解标记定义一个方法为工具,通过description属性可以给工具添加描述信息;在方法入参前添加@ToolParam注解描述说明字段信息。

系统提示词、用户提示词和工具方法的描述,字段的描述相结合可以提高工具命中的概率。可以通过工具调用解决知识陈旧、无法访问外部数据的问题。

(七)检索增强生成(RAG)

通过两个步骤可以解决公司内部的私有文档(没能在大模型训练时参与训练的数据):

  • ETL阶段:读取非结构化文档->保留语义拆分为适配模型token限制的大小->转换为向量数据->将向量化后的数据存储到向量数据库;

  • 推理阶段:用户输入提问信息->从向量数据库检索相似文档片段->与问题一起发给AI模型->AI模型输出响应。

(八)Advisors

类似SpringAOP的Interceptor,用于增强和修改和AI的交互

核心接口有:

  • CallAdvisor:同步调用的Advisors

  • StreamAdvisor:流式调用的Advisors

内置常用实现有:

  • MessageChatMemoryAdvisor:管理对话记忆

  • ToolCallAdvisor:处理工具调用循环

  • SimpleLoggerAdvisor:打印请求和响应日志

(九)SpringAIAlibaba(SAA)

在SpringAI框架的基础上做了进一步封装,可以更方便的和SpringCloudAlibaba做出结合。SpringAIAlibaba项目从架构上包含如下三层:

  • AgentFramework,是一个以ReactAgent设计理念为核心的Agent开发框架,使开发者能够构建具备自动上下文工程和人机交互等核心能力的Agent。

  • Graph,graph是一个低级别的工作流和多代理协调框架,能够帮助开发者实现复杂的应用程序编排,它具备丰富的预置节点和简化的图状态定义,Graph是AgentFramework的底层运行时基座。

  • AugmentedLLM,以SpringAI框架底层原子抽象为基础,为构建大型语言模型(LLM)应用提供基础抽象,例如模型(Model)、工具(Tool)、多模态组件(MCP)、消息(Message)、向量存储(VectorStore)等。


作者:湫水河

编辑:河洛生


上一篇: 盘点国内外40家物联网采集类厂家,看看有你熟悉的吗?
下一篇: 从0到1搭建可视化流程编辑器——BaklavaJS深度实践