Spring AI 第二讲 之 Chat Model API 第九节 watsonx.ai Chat

2024-06-09 11:36

本文主要是介绍Spring AI 第二讲 之 Chat Model API 第九节 watsonx.ai Chat,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

通过 watsonx.ai,你可以在本地运行各种大型语言模型(LLM),并从中生成文本。Spring AI 通过 WatsonxAiChatModel 支持 watsonx.ai 文本生成。

您首先需要拥有一个 watsonx.ai 的 SaaS 实例(以及一个 IBM 云帐户)。

请参阅免费试用,免费试用 watsonx.ai

更多信息请点击此处

自动配置

Spring AI 为 watsonx.ai 聊天客户端提供了 Spring Boot 自动配置功能。要启用它,请在项目的 Maven pom.xml 文件中添加以下依赖项:

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-watsonx-ai-spring-boot-starter</artifactId>
</dependency>

 或 Gradle build.gradle 构建文件。

dependencies {implementation 'org.springframework.ai:spring-ai-watsonx-ai-spring-boot-starter'
}

聊天属性

连接属性

前缀 spring.ai.watsonx.ai 用作属性前缀,可让您连接到 watsonx.ai。

PropertyDescriptionDefault

spring.ai.watsonx.ai.base-url

要连接的 URL

us-south.ml.cloud.ibm.com

spring.ai.watsonx.ai.stream-endpoint

流媒体端点

generation/stream?version=2023-05-29

spring.ai.watsonx.ai.text-endpoint

文本终端

generation/text?version=2023-05-29

spring.ai.watsonx.ai.project-id

项目 ID

-

spring.ai.watsonx.ai.iam-token

IBM 云账户 IAM 令牌

-

配置属性

spring.ai.watsonx.ai.chat 前缀是让你配置 Watsonx.AI 聊天模型实现的属性前缀。 

PropertyDescriptionDefault

spring.ai.watsonx.ai.chat.enabled

启用 Watsonx.AI 聊天模型。

true

spring.ai.watsonx.ai.chat.options.temperature

模型的温度。温度越高,模型的答案越有创意。

0.7

spring.ai.watsonx.ai.chat.options.top-p

与 top-k 一起使用。较高的值(如 0.95)将产生更多样化的文本,而较低的值(如 0.2)将产生更集中和保守的文本。

1.0

spring.ai.watsonx.ai.chat.options.top-k

降低产生无意义答案的概率。数值越大(如 100),答案就越多样化,而数值越小(如 10),答案就越保守。

50

spring.ai.watsonx.ai.chat.options.decoding-method

解码是模型在生成的输出中选择标记的过程。

greedy

spring.ai.watsonx.ai.chat.options.max-new-tokens

设置 LLM 遵循的标记上限。

20

spring.ai.watsonx.ai.chat.options.min-new-tokens

设置 LLM 必须生成的令牌数量。

0

spring.ai.watsonx.ai.chat.options.stop-sequences

设置 LLM 停止的时间。(例如,["\n\n\n"]),那么当 LLM 产生三个连续的换行符时就会终止。在生成 Min tokens 参数中指定的标记数之前,停止序列将被忽略。

-

spring.ai.watsonx.ai.chat.options.repetition-penalty

设置对重复的惩罚力度。数值越大(如 1.8),对重复的惩罚力度就越大,而数值越小(如 1.1),惩罚力度就越宽松。

1.0

spring.ai.watsonx.ai.chat.options.random-seed

产生可重复的结果,每次设置相同的随机种子值。

randomly generated

spring.ai.watsonx.ai.chat.options.model

模型是要使用的 LLM 模型的标识符。

google/flan-ul2

运行时选项

WatsonxAiChatOptions.java 提供了模型配置,如使用的模型、温度、频率惩罚等。

启动时,可使用 WatsonxAiChatModel(api, options) 构造函数或 spring.ai.watsonxai.chat.options.* 属性配置默认选项。

在运行时,你可以通过向提示调用添加新的、针对特定请求的选项来覆盖默认选项。例如,覆盖特定请求的默认模型和温度:

ChatResponse response = chatModel.call(new Prompt("Generate the names of 5 famous pirates.",WatsonxAiChatOptions.builder().withTemperature(0.4).build()));

除了特定于模型的 WatsonxAiChatOptions.java 之外,你还可以使用通过 ChatOptionsBuilder#builder() 创建的便携式 ChatOptions实例。

 使用示例

public class MyClass {private final static String MODEL = "google/flan-ul2";private final WatsonxAiChatModel chatModel;@AutowiredMyClass(WatsonxAiChatModel chatModel) {this.chatModel = chatModel;}public String generate(String userInput) {WatsonxAiOptions options = WatsonxAiOptions.create().withModel(MODEL).withDecodingMethod("sample").withRandomSeed(1);Prompt prompt = new Prompt(new SystemMessage(userInput), options);var results = chatModel.call(prompt);var generatedText = results.getResult().getOutput().getContent();return generatedText;}public String generateStream(String userInput) {WatsonxAiOptions options = WatsonxAiOptions.create().withModel(MODEL).withDecodingMethod("greedy").withRandomSeed(2);Prompt prompt = new Prompt(new SystemMessage(userInput), options);var results = chatModel.stream(prompt).collectList().block(); // wait till the stream is resolved (completed)var generatedText = results.stream().map(generation -> generation.getResult().getOutput().getContent()).collect(Collectors.joining());return generatedText;}}

这篇关于Spring AI 第二讲 之 Chat Model API 第九节 watsonx.ai Chat的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045068

相关文章

Java NoClassDefFoundError运行时错误分析解决

《JavaNoClassDefFoundError运行时错误分析解决》在Java开发中,NoClassDefFoundError是一种常见的运行时错误,它通常表明Java虚拟机在尝试加载一个类时未能... 目录前言一、问题分析二、报错原因三、解决思路检查类路径配置检查依赖库检查类文件调试类加载器问题四、常见

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Java 实用工具类Spring 的 AnnotationUtils详解

《Java实用工具类Spring的AnnotationUtils详解》Spring框架提供了一个强大的注解工具类org.springframework.core.annotation.Annot... 目录前言一、AnnotationUtils 的常用方法二、常见应用场景三、与 JDK 原生注解 API 的

Java controller接口出入参时间序列化转换操作方法(两种)

《Javacontroller接口出入参时间序列化转换操作方法(两种)》:本文主要介绍Javacontroller接口出入参时间序列化转换操作方法,本文给大家列举两种简单方法,感兴趣的朋友一起看... 目录方式一、使用注解方式二、统一配置场景:在controller编写的接口,在前后端交互过程中一般都会涉及

Java中的StringBuilder之如何高效构建字符串

《Java中的StringBuilder之如何高效构建字符串》本文将深入浅出地介绍StringBuilder的使用方法、性能优势以及相关字符串处理技术,结合代码示例帮助读者更好地理解和应用,希望对大家... 目录关键点什么是 StringBuilder?为什么需要 StringBuilder?如何使用 St

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Java并发编程之如何优雅关闭钩子Shutdown Hook

《Java并发编程之如何优雅关闭钩子ShutdownHook》这篇文章主要为大家详细介绍了Java如何实现优雅关闭钩子ShutdownHook,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 目录关闭钩子简介关闭钩子应用场景数据库连接实战演示使用关闭钩子的注意事项开源框架中的关闭钩子机制1.

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B