当前位置: 首页 > news >正文

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;}}

相关文章:

  • 微生物实验室建设公司独家分享:从平面布局到高效设备的全流程设计技巧
  • YOLOV5总结
  • C++基础编程100题-009 OpenJudge-1.3-07 计算多项式的值
  • 协程-在单个线程内部执行
  • 为什么要分析电商用户数据?详解两大用户数据分析维度
  • 华为云DDoS攻击下的应对策略
  • Spring Cloud Gateway详解
  • BIO NIO AIO 的区别!!!
  • 【Oracle生产运维】表空间利用率不足处理
  • RabbitMQ-工作模式(Topics模式RPC模式Publisher Confirms模式)
  • docker使用auth登录
  • LeetCode | 26.删除有序数组中的重复项
  • 【深度学习】深度学习之巅:在 CentOS 7 上打造完美Python 3.10 与 PyTorch 2.3.0 环境
  • 【问题解决】HttpURLConnection如何以POST的方式发送请求,传递form表单格式的数据到外部接口
  • AIGC之MetaHuman:HeyGen(基于AI驱动的视频生成平台+数字人)的简介、安装和使用方法、案例应用之详细攻略
  • C# 免费离线人脸识别 2.0 Demo
  • download使用浅析
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java Agent 学习笔记
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Spark RDD学习: aggregate函数
  • vue-loader 源码解析系列之 selector
  • 构建二叉树进行数值数组的去重及优化
  • 通过几道题目学习二叉搜索树
  • 无服务器化是企业 IT 架构的未来吗?
  • const的用法,特别是用在函数前面与后面的区别
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (3)nginx 配置(nginx.conf)
  • (二)pulsar安装在独立的docker中,python测试
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (一)Neo4j下载安装以及初次使用
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (杂交版)植物大战僵尸
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)jdk与jre的区别
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • ./configure,make,make install的作用(转)
  • .net 流——流的类型体系简单介绍
  • .Net多线程总结
  • .NET值类型变量“活”在哪?
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @vueup/vue-quill使用quill-better-table报moduleClass is not a constructor
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [ 蓝桥杯Web真题 ]-布局切换
  • [2]十道算法题【Java实现】
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [ai笔记4] 将AI工具场景化,应用于生活和工作