Spring AI 简介
1、概览
Spring 通过 Spring AI 项目正式启用了 AI(人工智能)生成提示功能。本文将带你了解如何在 Spring Boot 应用中集成生成式 AI,以及 Spring AI 如何与模型互动。
2、Spring AI 的主要概念
首先回顾一下一些关键的领域术语和概念。
Spring AI 最初专注于处理语言输入和生成语言输出的模型。该项目的理念是为开发人员提供一个抽象接口,为将生成式 AI 作为独立组件纳入应用奠定基础。
接口 AiClient
就是这样一个抽象,它有两个基本实现:OpenAI
和 Azure OpenAI
。
AiClient
为生成函数提供了两个选项。简化版生成函数:generate(String message)
,使用 String
作为输入和输出,可以避免使用 Prompt
和 AiResponse
类的额外复杂性。
2.1、高级的 Prompt 和 AiResponse
在 AI 领域,Prompt(提示)是指提供给 AI 的文本信息。它由上下文和问题组成,该模型用于生成答案。 从 Spring AI 项目的角度来看,Prompt
是一个参数化 Message
列表。Prompt
使开发人员能够对文本输入进行更多控制。Prompt 模板就是一个很好的例子,它使用预定义文本和占位符集构建。然后,可以使用传递给 Message
构造函数的 Map<String, Object>
值填充它们。Message
接口还包含有关 AI 模型可处理的消息(Message)类别的高级信息。例如,OpenAI 实现区分会话角色,通过 MessageType
进行映射。对于其他模型,它可以反映消息格式或其他一些自定义属性。更多详情
AiResponse
由 Generation
(生成)对象列表组成,每个对象都包含来自相应 Prompt
(提示)的输出。此外,Generation
对象还提供 AI 响应的元数据信息。
不过,由于 Spring AI 项目仍处于测试阶段,并非所有功能都已完成并文档化。
3、Spring AI 入门
首先,AiClient
与 OpenAI 平台的所有通信都需要 API Key。为此,可以在 “API Keys” 页面上创建一个 Token。
Spring AI 项目定义了配置属性:spring.ai.openai.api-key
。
可以在 application.yml
文件中进行设置。
下一步是配置依赖。Spring AI 项目在 Spring 里程碑库(Spring Milestone Repository)中提供了组件。
因此,需要添加 repository
定义:
4、Spring AI 实践
现在,编写一个简单的 REST API 用于演示。它由两个端点组成,可以返回想要的任何主题和流派的诗歌:
/ai/cathaiku
:实现基本的generate()
方法,并返回一个关于猫的的俳句(简单的字符串)。/ai/poetry?theme={{theme}}&genre={{genre}}
:演示PromtTemplate
和AiResponse
类的功能。
4.1、在 Spring Boot 中注入 AiClient
为了简单起见,从 cathaiku 端点开始。通过 @RestController
注解,设置 PoetryController
并添加 GET
方法映射:
本文介绍了 Spring AI 项目及其在 REST API 方面的功能,它为生成式 AI 集成到 Spring Boot 应用中提供了一个可靠的接口。在撰写本文时,spring-ai-starter 仍在积极开发中(可以访问快照版本)。
本文介绍了与 Spring AI 的基本集成和高级集成,包括 AiClient
的底层原理,还通过实际案例介绍了 Spring AI 高级功能的示例:PromtTemplate
、AiResponse
和 BeanOutputParser
以及异常处理。