Bootstrap

如何使用spring-AI?

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 高级功能的示例:PromtTemplateAiResponse 和 BeanOutputParser 以及异常处理。

;