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

AI 时代,Java 程序员不可不知的两个开发框架

AI 时代,Java 程序员也需要与时俱进,这两个框架你不能不知道。

第一个是 Spring AI,第二个是 Spring Cloud Alibaba AI。

Spring AI

Spring AI 是一个用于 AI 工程的应用框架。它的目标是将 Spring 生态系统设计原则(如可移植性和模块化设计)应用于 AI 领域,并促进将 pojo 作为 AI 领域应用程序的构建块。

可移植 API 支持跨 AI 提供商的聊天、文本到图像和嵌入模型。同时支持同步和流 API 选项。

Spring AI 的核心是提供抽象,作为开发 Java AI 应用程序的基础,提供以下功能:

  • 提供多种大模型服务对接能力,包括业界大多数主流大模型服务等;
  • 支持灵活的 Prompt Template 和模型输出解析 Output Parsing 能力;
  • 0支持多模态的生成式 AI 能力,如对话,文生图、文生语音等;
  • 提供通用的可移植的 API 以访问各类模型服务和 Embedding 服务,支持同步和流式调用,同时也支持传递特定模型的定制参数;
  • 支持 RAG 能力的基础组件,包括 DocumentLoader、TextSpillter、EmobeddingClient、VectorStore 等;
  • 支持 AI Spring Boot Starter 实现配置自动装配;

它支持以下模型:

文本模型:OpenAI、Anthropic Claud、Azure Open AI、Google Vertex AI、Moonshot AI 等。

文生图模型:OpenAI with DALL_E,StabilityAI

语音转文字模型:OpenAI。

Embedding 模型:Amazon Bedrock

另外,它还支持「向量数据库」如:Azure AI Service、Apache Cassandra、Elasticsearch、MongoDB Atlas、Neo4j、Redis 等。

Spring Cloud Alibaba AI

Spring AI 是 Spring 官方社区项目,旨在简化 Java AI 应用程序开发,让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用。
Spring Cloud Alibaba AI 以 Spring AI 为基础,并在此基础上提供阿里云通义系列大模型全面适配,让用户在 5 分钟内开发基于通义大模型的 Java AI 应用。

原生的 Spring AI 首先是不支持国内的大部分常见模型的,比如文心一言、通义千问等。

如果我们没有或者不允许使用魔法的情况下,一个国内能使用的 Spring AI 就是刚需了。

那么,如何在自己的项目中使用 Spring Cloud Alibaba AI 呢?

我们一步一步来

1、在 pom.xml 中引用依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2023.0.1.2</version>
</dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-ai</artifactId><version>2023.0.1.2</version><exclusions><exclusion><artifactId>slf4j-simple</artifactId><groupId>org.slf4j</groupId></exclusion></exclusions>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.0.0-M4</version>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><version>3.2.4</version>
</dependency>

2、在applicatoin.properteis文件中加入大模型配置

在官方申请 API-KEY,如何申请?官网地址如下:

https://help.aliyun.com/zh/dashscope/developer-reference/acquisition-and-configuration-of-api-key?spm=5176.29160081.0.0.1f467a3ctbrdEJ

已经有 API-KEY 的可以直接在控制台查看,控制台地址:

https://dashscope.console.aliyun.com/apiKey

applicatoin.yml文件中加入配置

#spring.cloud.ai.tongyi.connection.api-key
spring:cloud:ai:tongyi:connection:api-key: {YOUR API-KEY}

这个地方需要注意,官方文档说的地址没有用,我这里也是通过看源码解决的。

可以通过查看源码TongYiConnectionProperties确认当前版本的 yml 配置前缀具体是什么。

官网的application.yml文件配置为

spring:cloud:ai:tongyi:chat:options:# Replace the following key with a valid API-KEY.api-key: sk-a3d73b1709bf4a178c28ed7c8b3b5axx

这个配置,我试了之后是不行的,找不到 API-KEY。会报错找不到 api-key

Caused by: com.alibaba.cloud.ai.tongyi.common.exception.TongYiException: Can not find api-key

创建测试类

import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
@Slf4j
class SpringCloudAlibabaAiTestApplicationTests {@ResourceChatModel chatModel;@Testvoid chatTest() {String message = "介绍一个动漫角色【伍六七】";String response = chatModel.call(message);log.info("response={}" + response);}
}

查看返回为:

2024-08-04T22:23:11.747+08:00  INFO 5284 --- [           main] SpringCloudAlibabaAiTestApplicationTests : response={}《伍六七》是由中国动画制作团队“小疯哦”创作的一部原创国漫,讲述了主人公伍六七在成为一位技艺高超的发型师后,意外卷入一系列奇幻冒险的故事。伍六七的形象是一个有着独特魅力的角色。**伍六七(主角)**:本名姜无极,性格乐观、善良,但也有时显得有些轻率和冲动。他拥有能够操控头发进行各种奇特攻击的能力——“断发”,以及恢复自我状态的能力——“长发”。虽然在故事开始时只是一名普通的理发师,但在一系列的事件中逐渐揭露了自己的身世之谜,并成为了对抗邪恶势力的关键人物之一。伍六七不仅有着高强的战斗技巧,还具备着一颗温暖的心,总是愿意帮助需要帮助的人。**背景设定**:故事发生在一个充满神秘元素的世界里,其中融合了东方与西方文化的特点,构建了一个既熟悉又陌生的幻想世界。在这个世界中,存在着各种各样的角色,从普通的市民到强大的反派,每个人物都有其独特的个性和背景故事,共同构成了丰富多样的故事情节。《伍六七》以其幽默风趣的剧情、鲜明的人物形象、深刻的主题探讨赢得了广大观众的喜爱,尤其受到了年轻群体的欢迎。作品通过伍六七的成长历程,探讨了勇气、友情、家庭等主题,鼓励人们面对困难时不放弃希望,勇敢地追求梦想。

这里我们使用的 ChatModel,表示是对话模型,框架还提供了其他的类,如图片模型 ImageModel、语音模型 SpeechModel、语音翻译模型 TongYiAudioTranscriptionModelEmbedding 模型 EmbeddingModel 等,非常方便大家使用。

赶快去使用吧

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 二分查找法
  • 2024年,5款高效的文献翻译工具清单。
  • C语言从头学42——预处理指令(一)
  • 【熊猫派对】
  • vim使用技巧
  • Mysql-窗口函数一
  • Animate软件动画类型简介
  • LabVIEW水下根石监测系统
  • redis面试(四)持久化
  • Vulnhub靶场DC-9练习
  • 软件开发人员如何有效提问
  • Linux系统
  • 如何判断机器学习模型的好坏之分类模型
  • 哪个电脑桌面便签好用并且无广告弹窗?
  • org.springframework.web.client.HttpClientErrorException$NotFound异常
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • CODING 缺陷管理功能正式开始公测
  • CSS中外联样式表代表的含义
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Java|序列化异常StreamCorruptedException的解决方法
  • Java知识点总结(JavaIO-打印流)
  • leetcode386. Lexicographical Numbers
  • leetcode46 Permutation 排列组合
  • php中curl和soap方式请求服务超时问题
  • Promise面试题,控制异步流程
  • spring boot下thymeleaf全局静态变量配置
  • Yii源码解读-服务定位器(Service Locator)
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 时间复杂度与空间复杂度分析
  • 学习JavaScript数据结构与算法 — 树
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 06-01 点餐小程序前台界面搭建
  • const的用法,特别是用在函数前面与后面的区别
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # AI产品经理的自我修养:既懂用户,更懂技术!
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #Datawhale X 李宏毅苹果书 AI夏令营#3.13.2局部极小值与鞍点批量和动量
  • #宝哥教你#查看jquery绑定的事件函数
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (四)鸿鹄云架构一服务注册中心
  • (算法)硬币问题
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转) Face-Resources
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Unity3DUnity3D在android下调试
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET开发不可不知、不可不用的辅助类(一)
  • .考试倒计时43天!来提分啦!
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [20150707]外部表与rowid.txt