1.Spring AI简介
Spring AI旨在使用AI Models将企业数据与API连接起来。其提供了抽象方法以供开发者使用,使得我们只需要更改最小的代码就能交换组件。参考文档:Spring AI
主要功能包括:
- 支持的模型提供商包括:OpenAI、Microsoft、Amazon、Google和Hugging Face
- 支持的模型类型包括:聊天、文本到图像、音频转录、文本到语音等
- 跨AI提供商的可移植 API,适用于所有模型。支持同步API和流 API 选项。还支持下拉以访问特定于模型的功能。
- 将AI模型映射到POJOs
- 支持所有主要的矢量数据库提供商
- 函数调用:Function calling
- Spring Boot自动配置和AI模型和向量存储的启动器
- 用于数据工程的ETL框架
2. AI概念
学习AI之前需要了解以下AI的一些核心概念。
2.1 Models 模型
AI Models是设计用于处理和生成信息的算法,通常用于模仿人类的认知功能。通过从大型数据中学习模式和见解,做出预测、文本、图像或其他输出,从而增强其在特定方向的认知。有许多不同类型的AI模型,每一种模型都适用于特定的用例。也就是说模型是通过不同的输入形成特定模式的输出,以提供不同的需求。
Spring AI支持将输入和输出处理为语言、图像和音频的模型。
2.2 Prompts 提示
Prompts用于指导AI Model基于语言的输入,生成特定的输出。一般我们理解提示就是输入发送到AP的对话框里的文本。但是它所包含的远不止如此,在很多AI模型中,提示不仅仅是一个简单的字符串。
ChatGPT的API在提示中包含多个文本输入,每个文本输入都被分配一个角色,比如系统角色,它告诉模型如何设置交互上下文,比如用户角色,通常来自用户的输入。
2.3 Prompt Templates 提示模板
Prompt Templates是为了在输入创建有效的请求上下文,并用特定用户输入的值替换请求的部分。此过程使用传统的基于文本的模板引擎进行提示创建与管理。
Spring AI使用OSS库SpringTemplate来实现该功能。
例如:Tell me a {adjective} joke about {content}.
在Spring AI中,提示模板可以作为比作Spring MVC框架中的View。通常使用java.util.Map
提供一个模型对象,用于填充模板中的占位符。"rendered"字符串成为提供给AI模型的提示内容。
发送到模型的提示存在着相当大的差异,提示从最初的简单的字符串开始,现在已经发展到包含多个消息,每条消息中的每个字符串都代表模型的不同角色。
2.4 Embeddings 嵌入
嵌入是文本、图像或视频的数字表示形式,用于捕获输入之间的关系。
嵌入的工作原理是将文本、图像和视频转换为浮点型数组。
2.5 Tokens
Tokens 是AI model 工作的构建块,可以理解为,在输入时,模型将单词转换为Tokens,在输出时,又将Tokens转回单词。
在英语中,一个Token大概相当于一个单词的75%,但是这不是绝对的。
但是更多的是,Tokens = Money。在使用第三方AI模型的时候,购买的就是Token的数量。输入和输出都会影响Token的总数。
另外,Models受Tokens的限制。这些限制限制了单个API调用中处理的文本数,该阈值称为上下文窗口。Model不会处理超过该限制的任何文本。
当超过该限制时候需要设计软件工程策略来切碎数据并在模型的上下文中呈现数据,Spring AI能够帮您完成次任务。
2.6 Structured Output 结构化输出
传统上,AI Models的输出都是以字符串的形式出现的,即使你要求其回复使用JSON格式,也是如此;也许其是一个正确的JSON串,但是它只是个字符串。即使在提示中加入"for JSON"。
这种复杂性,导致了一个专业领域的出现,该领域设计创建提示以产生预期的输出,然后将生成的简单字符串转换为可用于应用程序集成的可用数据结构。
结构化输出转换采用精心设计的prompts,通常需要与模型进行多次交互才能实现所需的格式设置。
2.7 Bringing Your Data &APIs to the AI Model
通俗的讲就是该如何让AI模型训练没有匹配过的信息,就是该如何训练模型。
2.7.1 Fine Tuning 微调
2.7.2 Prompt Stuffin 提示填充
一种更实用的替代方法涉及将数据嵌入到提供给模型的提示中。给定模型的令牌限制,需要技术在模型的上下文窗口中呈现相关数据。这种方法通俗地称为“填充提示符”。Spring AI 库可帮助您实现基于“填充提示符”技术的解决方案,该技术也叫检索增强生成 RAG.
2.7.3 Function Calling
此技术允许注册自定义用户函数,这些函数将大型语言模型连接到外部系统的 API。
Spring AI 大大简化了为支持而需要编写的代码。