Spring AI 1.0.0 M1 发布


Spring AI 1.0.0 Milestone 1 版本现已发布,具有以下新功能和改进:

ChatClient Fluent API

Fluent API 提供了构造 Prompt 的方法,然后将其作为输入传递给 AI 模型。用户可以使用ChatClient.Builder对象创建一个ChatClient。可以从 Spring Boot 自动配置中获取自动配置的ChatClient.Builder对象,也可以通过编程方式创建一个。

示例:

@RestController
class MyController {

private final ChatClient chatClient;

MyController(ChatClient.Builder chatClientBuilder) {
this.chatClient = chatClientBuilder.build();
}

@GetMapping("/ai")
String generation(String userInput) {
return this.chatClient.prompt()
.user(userInput)
.call()
.content();
}
}

user方法设置 prompt 的用户文本。call方法调用 AI 模型,提供各种重载以返回响应。在本例中,content方法返回一个字符串。

还可以响应式调用 AI 模型(using WebClient under the covers),如下所示。

Flux<String> output = chatClient.prompt()
.user("Tell me a joke")
.stream()
.content();

一个常见用例是从对 AI 模型的调用返回 JSON。使用entity方法可以轻松实现这一点。

record ActorFilms(String actor, List<String> movies) {
}

ActorFilms actorFilms = chatClient.prompt()
.user("Generate the filmography for a random actor.")
.call()
.entity(ActorFilms.class);

@Configuration类中创建时ChatClient,可以指定默认值,例如系统文本。这种设计时和运行时的分离使得运行时代码最少,只需要属性占位符值。例如:

@Configuration
class Config {

@Bean
ChatClient chatClient(ChatClient.Builder builder) {
return builder.defaultSystem("You are a friendly chat bot that answers question in the voice of a {voice}")
.build();
}

}

@RestController
class AIController {
	private final ChatClient chatClient
	AIController(ChatClient chatClient) {
		this.chatClient = chatClient;
	}
	@GetMapping("/ai")
	Map<String, String> completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message, String voice) {
		return Map.of(
				"completion",
				chatClient.prompt()
						.system(sp -> sp.param("voice", voice))
						.user(message)
						.call()
						.content());
	}
}

评估(Evaluation)

帮助解决 AI 幻觉问题。用户可以使用一个 AI 模型来评估另一个 AI 模型的响应是否准确。初步使用的是一个简单的RelevancyEvaluator,但事实证明也非常有用,在 1.0 M2 中还会有所新增。

dataController.delete();
dataController.load();

String userText = "What is the purpose of Carina?";

ChatResponse response = ChatClient.builder(chatModel)
.build().prompt()
.advisors(new QuestionAnswerAdvisor(vectorStore, SearchRequest.defaults()))
.user(userText)
.call()
.chatResponse();

var relevancyEvaluator = new RelevancyEvaluator(ChatClient.builder(chatModel));

EvaluationRequest evaluationRequest = new EvaluationRequest(userText,
(List<Content>) response.getMetadata().get(QuestionAnswerAdvisor.RETRIEVED_DOCUMENTS), response);

EvaluationResponse evaluationResponse = relevancyEvaluator.evaluate(evaluationRequest);

assertTrue(evaluationResponse.isPass(), "Response is not relevant to the question");

新的 AI 模型

  • Bedrock Anthropic Claude 3 - ben-gineer
  • Watson AI - PabloSanchi
  • OpenAI Speech - hemeda3
  • Multi-modality support for OpenAI
  • AWS Bedrock claude3
  • MiniMax - mxsl-gr
  • ZhiPu - mxsl-gr
  • Azure Open AI image generation - bmoussaud

更新模型

  • OpenAI - 支持 GPT4o 和多模态
  • Google Gemini Pro 1.5 pro、flash 等
  • Anthropic function calling
  • Ollama 多模态支持
  • 改进了 streaming function calling 支持 - Grogdunn

新的 Vector Stores

  • Apache Cassandra - michaelsembwever
  • Elastic Search - JM-Lab
  • MongoDB Atlas - Kirbstomper
  • SAP HanaDB - rahulmitt

Test Container 支持

Spring AI 提供 Testcontainer 支持,用于在测试中或通过 docker compose 启动向量存储数据库。

更多详情可查看官方博客


相關推薦

2023-08-12

Spring Cloud 2023.0 首个里程碑版本 (aka Leyton) 已发布。 获取地址:Maven Spring Cloud 为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如:配置管理、服务发现、智能路由、微代理、控制总线、一次性令牌、

2023-07-18

Spring Data 2023.1.0-M1 现已发布。该版本介绍了 2023.1 版本的主要主题,以及所有主题的初始特性: 拥抱 JDK 21 LTS 对 Kotlin Value Classes 的支持 对 Repository Query Methods 的Limit支持 为 Spring Data JDBC 提供 Schema 和 SpEL 支持 可查

2023-02-28

Spring Boot 3.1.0-M1 现已发布。此版本包括 105 项增强功能、文档改进、依赖项升级和错误修复。值得注意的新功能包括: 文件和控制台的不同 log levels 如果你使用 Logback 或 Log4j2,现在可以选择为控制台日志和文件日志

2024-07-21

Spring Modulith 是一个新的、实验性的 Spring 项目,支持开发人员在 Spring Boot 应用程序中实现逻辑模块,它允许应用结构验证、记录模块安排、为单个模块运行集成测试、在运行时观察模块交互,以及以松散耦合的方式实现模块

2023-07-22

Spring Boot 多个分支发布了更新,包括 3.2.0-M1、3.1.2、3.0.9 和 2.7.14。 3.2.0-M1 此版本包括 141 项增强功能、文档改进、依赖项升级和错误修复。值得注意的新功能包括: 在使用 Java 21 上时,初步支持虚拟线程 为 Spring Fr

2023-06-26

Spring Modulith 1.0 M1 现已正式发布。Spring Modulith 是一个新的、实验性的 Spring 项目,支持开发人员在 Spring Boot 应用程序中实现逻辑模块,它允许应用结构验证、记录模块安排、为单个模块运行集成测试、在运行时观察模块

2023-03-03

Spring Shell 2.1.7、3.0.1 和 3.1.0-M1 现已发布。Spring Shell 是基于 Spring 的交互式 Shell,可让开发者使用简单的基于 Spring 的编程模型来开发命令。 2.1.7 版本主要变化 基于 Spring Boot 2.7.9 构建 向后移植了一些错误修复 Issues #677&nb

2022-08-12

Spring Web Flow 3.0 M1 现已发布,此版本主要关注与 Spring Framework 6 和 Jakarta EE 的兼容性。spring-projects/spring-webflow-samples 上的 Travel booking-mvc 示例已更新,commit history 提供了示例更改。其中一项重大变化是需要删除尚未迁移到 Jakart

2023-06-20

eBuddy 和/或 Javassist 替换 CGLib [WICKET-6889] - 提供可以加载 Spring 配置类的 SpringWebApplicationFactory 的特殊化 [WICKET-6890] - 渲染调试设置“outputMarkupContainerClassName”为属性 [WICKET-6893] - 通过委托给 DefaultListableBeanFactory 使 ApplicationContex

2024-08-03

-shell 以及周边组件 集中处理 DDE 组件缺陷,为后续版本发布做准备 SIG详情:DDE 桌面环境小组 5. dde-port SIG: 持续推进 dde 在各个发行版的移植 SIG详情:dde-porting SIG 6. deepin-kernel SIG: 完善现有硬件支持情况 为 deepin

2023-11-01

苹果今天在“来势迅猛”发布会上正式官宣 M3、M3 Pro、M3 Max 芯片,是首款采用 3 纳米工艺技术的 PC 芯片。 苹果介绍称,M3 系列芯片搭载的新一代图形处理器实现了 Apple 芯片史上最大幅的图形处理器架构飞跃。这款图形处理

2022-10-08

Spring Cloud 2022.0.0 发布了第 5 个里程碑版本。 值得关注的变化 Spring Cloud Netflix 升级到 Eureka 2.0.0-rc.3。Eureka 2.0.0 是 Eureka 的一个新分支,与 7 年前的旧 2.x-archive 分支实验无关。新的 2.x 分支是为了与 JakartaEE 兼容,这也

2022-09-24

Spring Batch 5.0.0-M6 和 4.3.7 已发布。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 Spring Batch 5.0.0-M6 的

2024-05-25

SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 Spring Boot 中非常方便地使用 SOFA