目录
4.1、在 Spring Boot 中注入 AiClient
1、概览
Spring 通过 Spring AI 项目正式启用了 AI(人工智能)生成提示功能。本文将带你了解如何在 Spring Boot 应用中集成生成式 AI,以及 Spring AI 如何与模型互动。
2、Spring AI 的主要概念
首先回顾一下一些关键的领域术语和概念。
Spring AI 最初专注于处理语言输入和生成语言输出的模型。该项目的理念是为开发人员提供一个抽象接口,为将生成式 AI 作为独立组件纳入应用奠定基础。
接口 AiClient
就是这样一个抽象,它有两个基本实现:OpenAI
和 Azure OpenAI
。
public interface AiClient {
default String generate(String message);
AiResponse generate(Prompt prompt);
}
AiClient
为生成函数提供了两个选项。简化版生成函数:generate(String message)
,使用 String
作为输入和输出,可以避免使用 Prompt
和 AiResponse
类的额外复杂性。
2.1、高级的 Prompt 和 AiResponse
在 AI 领域,Prompt(提示)是指提供给 AI 的文本信息。它由上下文和问题组成,该模型用于生成答案。从 Spring AI 项目的角度来看,Prompt
是一个参数化 Message
列表。
public class Prompt {
private final List<Message> messages;
// 构造函数和其他方法
}
public interface Message {
String getContent();
Map<String, Object> getProperties();
MessageType getMessageType();
}
Prompt
使开发人员能够对文本输入进行更多控制。Prompt 模板就是一个很好的例子,它使用预定义文本和占位符集构建。然后,可以使用传递给 Message
构造函数的 Map<String, Object>
值填充它们。
Tell me a {adjective} joke about {content}.
Message
接口还包含有关 AI 模型可处理的消息(Message)类别的高级信息。例如,OpenAI 实现区分会话角色,通过 MessageType
进行映射。对于其他模型,它可以反映消息格式或其他一些自定义属性。更多详情,请参阅 官方文档。
public class AiResponse {
private final List<Generation> generations;
// Get 和 Set
}
public class Generation {
private final String text;
private Map<String, Object> info;
}
AiResponse
由 Generation
(生成)对象列表组成,每个对象都包含来自相应 Prompt
(提示)的输出。此外,Generation
对象还提供 AI 响应的元数据信息。
不过,由于 Spring AI 项目仍处于测试阶段,并非所有功能都已完成并文档化。请关注 GitHub repository 中的 issues 进展。
github.com/spring-projects/spring-ai
3、Spring AI 入门
首先,AiClient
与 OpenAI 平台的所有通信都需要 API Key。