快速体验 Spring Cloud Alibaba AI

快速体验 Spring Cloud Alibaba AI

Spring AI 旨在简化包含人工智能相关功能的应用程序的开发,避免不必要的复杂性。

Spring AI 的核心是提供抽象,作为开发 AI 应用程序的基础。这些抽象有多种实现方式,只需极少的代码改动即可轻松实现各个大模型之间的切换。

Spring AI 提供以下功能:

  • 支持所有主要模型提供商,例如 OpenAI、Microsoft、Amazon、Google 和 Huggingface。
  • 支持的模型类型包括“聊天”和“文本到图像”,还有更多模型类型正在开发中。
  • 跨 AI 提供商的可移植 API,用于聊天和嵌入模型。支持同步和流 API 选项。还支持下拉访问模型特定功能。
  • AI 模型输出到 POJO 的映射。
  • 支持所有主要矢量数据库提供商,例如 Azure 矢量搜索、Chroma、Milvus、Neo4j、PostgreSQL/PGVector、PineCone、Qdrant、Redis 和 Weaviate
  • 跨 Vector Store 提供商的可移植 API,包括同样可移植的新颖的类似 SQL 的元数据过滤器 API。
  • 函数调用
  • AI 模型和向量存储的 Spring Boot 自动配置和启动器。
  • 数据工程的 ETL 框架

Spring Cloud Alibaba AI

Spring Cloud Alibaba AI (以下简称 SCA AI)基于 Spring AI 0.8.1 版本完成通义系列大模型的接入。

DashScope灵积模型服务建立在 模型即服务(Model-as-a-Service,MaaS)的理念基础之上,围绕AI各领域模型,通过标准化的API提供包括模型推理、模型微调训练在内的多种模型服务。。

SCA AI 目前支持的模型主要有:对话、文生图、文生语音,更多功能特性正在适配中。

快速体验

创建 SCA AI 应用

在 pom.xml 中引入如下依赖配置:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-ai</artifactId>
</dependency><dependencyManagement><dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring.cloud.alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement><!-- 因为 Spring AI 还没有正式发布到 maven 仓库,所以需要添加此配置项 目前 maven 仓库为假的。
issue:https://github.com/spring-projects/spring-ai/issues/537
-->
<repositories><repository><id>spring-milestones</id><name>Spring Milestones</name><url>https://repo.spring.io/milestone</url><snapshots><enabled>false</enabled></snapshots></repository><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository>
</repositories>
api-key 配置

在正式开始体验之前,需要申请到模型的 api-key。申请地址:https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key

您可以通过 DashScope 提供的方式配置 api-key,SCA AI 完全兼容 DashScope 环境变量配置 key 的方式:https://help.aliyun.com/zh/dashscope/developer-reference/api-key-settings

当然也可以通过 SCA AI 中提供的如下配置项配置:

spring:cloud:ai:tongyi:# api-key setting:api-key: sk-xxxxxxxxxxxxxxxxxxx
聊天对话体验

官方 Example:https://github.com/alibaba/spring-cloud-alibaba/tree/2023.x/spring-cloud-alibaba-examples/spring-cloud-ai-example

public class ChatService {// 聊天客户端private final ChatClient chatClient;// stream 流式客户端private final StreamingChatClient streamingChatClient;@Autowiredpublic ChatService(ChatClient chatClient, StreamingChatClient streamingChatClient) {this.chatClient = chatClient;this.streamingChatClient = streamingChatClient;}@Overridepublic String normalCompletion(String message) {Prompt prompt = new Prompt(new UserMessage(message));return chatClient.call(prompt).getResult().getOutput().getContent();}@Overridepublic Map<String, String> streamCompletion(String message) {StringBuilder fullContent = new StringBuilder();streamingChatClient.stream(new Prompt(message)).flatMap(chatResponse -> Flux.fromIterable(chatResponse.getResults())).map(content -> content.getOutput().getContent()).doOnNext(fullContent::append).last().map(lastContent -> Map.of(message, fullContent.toString())).block();return Map.of(message, fullContent.toString());}}

之后,创建 controller 接口调用 service 服务:

@Autowired
private ChatService chatService;@GetMapping("/example")
public String completion(@RequestParam(value = "message", defaultValue = "Tell me a joke")String message
) {return chatService.completion(message);
}@GetMapping("/stream")
public Map<String, String> streamCompletion(@RequestParam(value = "message", defaultValue = "请告诉我西红柿炖牛腩怎么做?")String message
) {return chatService.streamCompletion(message);
}

下面进行接口测试:

$ curl --get  --data-urlencode 'message=Tell me a joke about a cow.' http://localhost:8080/ai/example# 获得的响应如下:
Here's a classic cow joke for you:Why did the farmer separate the chicken and the sheep from the cows?Because he wanted to have eggs-clusive relationships with his hens!
文生图体验
public class ImagesService {// 图像生成客户端private final ImageClient imageClient;@Autowiredpublic ImagesService(ImageClient client) {this.imageClient = client;}@Overridepublic ImageResponse genImg(String imgPrompt) {var prompt = new ImagePrompt(imgPrompt);return imageClient.call(prompt);}}

文生图对应的 controller 接口如下:

@Autowired
private ImagesService imagesService;@GetMapping("/img")
public ImageResponse genImg(@RequestParam(value = "prompt", defaultValue = "Painting a picture of blue water and blue sky.") String imgPrompt
) {return imagesService.genImg(imgPrompt);
}

接口调用体验:

$ curl http://localhost:8080/img?prompt="美女"# 响应数据为 base64 编码图片和图片网址,注意:图片 url 地址是有有效期的。

点击地址我们可以看到如下生成的美女图片:

在这里插入图片描述

文生语音体验
public class AudioService {private final SpeechClient speechClient;@Autowiredpublic AudioService(SpeechClient client) {this.speechClient = client;}@Overridepublic String genAudio(String text) {var resWAV = speechClient.call(text);return save(resWAV, SpeechSynthesisAudioFormat.WAV.getValue());}// 辅助方法,用于将模型的响应保存到本地.private String save(ByteBuffer audio, String type) {String currentPath = System.getProperty("user.dir");LocalDateTime now = LocalDateTime.now();DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-HH-mm-ss");String fileName = currentPath + File.separator + now.format(formatter) + "." + type;File file = new File(fileName);try (FileOutputStream fos = new FileOutputStream(file)) {fos.write(audio.array());}catch (Exception e) {throw new RuntimeException(e);}return fileName;}}

controller 接口代码如下:

	@Autowiredprivate AudioService audioService;@GetMapping("/audio")public String genAudio(@RequestParam(value = "prompt",defaultValue = "你好,Spring Cloud Alibaba AI 框架!") String prompt) {return audioService.genAudio(prompt);}

调用接口体验:

$ curl http://localhost:8080/ai/audio?prompt="你好,人工智能!"# 响应值为保存的音频路径。
D:\open_sources\sca-ai\spring-ai\04-29-22-44-22.wav

在这里插入图片描述

至此,Spring Cloud Alibaba AI 提供的三种基本功能已经体验完成,后续您还可以通过设置一些个性化的参数来使大模型生成各种各样的图片和音频等。

更多配置项可以参考:https://help.aliyun.com/zh/dashscope/developer-reference/api-details。社区相关的文档正在完善,更多功能正在开发中!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/660251.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【QT学习】11.TCP协议

一。【window为例】TCP协议的解释&#xff08;记忆方法&#xff09; 物理结构&#xff08;自己理解&#xff09; 1.服务器端 服务器端&#xff1a; 首先使用套接字函数创建 套接字 &#xff08;Socket&#xff09;&#xff0c;并使用 绑定 函数绑定到本地地址&#xf…

MobileNetV4 论文学习

论文地址&#xff1a;https://arxiv.org/abs/2404.10518 代码地址&#xff1a;https://github.com/tensorflow/models/blob/master/official/vision/modeling/backbones/mobilenet.py 解决了什么问题&#xff1f; 边端设备的高效神经网络不仅能带来实时交互的体验&#xff0c…

STL复习

vector STL详解及常见面试题_stl常见面试题-CSDN博客 C vector中resize()和reserve()区别_c vector resize和reserve区别-CSDN博客 释放vectro内存&#xff1a; map释放内存 deque&#xff1a; C STL deque 容器底层实现原理&#xff08;深度剖析&#xff09; - 知乎 (zhihu.…

python项目入门新手攻略

最近工作需要接手了代码量比较大的python开发的项目&#xff0c;平时写python不多&#xff0c;记录一下如何熟悉项目。 分析调用流程-pycallgraph 因为代码量比较大&#xff0c;所以希望通过工具生成代码调用流程&#xff0c;因此用到了pycallgraph。 pycallgraph&#xff0…

绿色低碳深入业务全生命周期 顺丰同城发布2023ESG报告

近年来&#xff0c;作为一种国际公认的可持续发展理念&#xff0c;强调生态环境保护、履行社会责任、提高治理水平的ESG成为衡量长期投资价值的重要维度之一。今年恰逢联合国契约组织提出ESG概念20周年&#xff0c;“ESG”从首次进入公众视野至今&#xff0c;现在已成为各国商业…

基于SpringBoot的“在线BLOG网”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“在线BLOG网”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 在线BLOG网结构功能图 管理员登录功能界面 用户信息…

SQL提升

1. SQL TOP 子句 TOP 子句用于规定要返回的记录的数目。 对于拥有数千条记录的大型表来说&#xff0c;TOP 子句是非常有用的。 **注释&#xff1a;**并非所有的数据库系统都支持 TOP 子句。 1.1 SQL TOP 语法 SQL Server 的语法&#xff1a; SELECT TOP number|percent c…

springboot 集成 flowable

随着企业对于业务流程管理需求的增加&#xff0c;流程引擎在企业信息化建设中的作用越来越重要。Flowable是一个开源的轻量级业务流程管理&#xff08;BPM&#xff09;和工作流引擎&#xff0c;它支持BPMN 2.0标准。 Flowable的一些特点&#xff1a; 安装集成&#xff1a;Flow…

OpenHarmony 实战开发——自测试执行框架

OpenHarmony为开发者提供了一套全面的开发自测试框架OHA-developer_test&#xff0c;开发者可根据测试需求开发相关测试用例&#xff0c;开发阶段提前发现缺陷&#xff0c;大幅提高代码质量。 本文从基础环境构建&#xff0c;用例开发&#xff0c;编译以及执行等方面介绍OpenH…

22 重构系统升级-实现不停服的数据迁移和用户切量

专栏的前 21 讲&#xff0c;从读、写以及扣减的角度介绍了三种特点各异的微服务的构建技巧&#xff0c;最后从微服务的共性问题出发&#xff0c;介绍了这些共性问题的应对技巧。 在实际工作中&#xff0c;你就可以参考本专栏介绍的技巧构建新的微服务&#xff0c;架构一个具备…

AI大模型日报#0430:疑似GPT4.5模型刷屏、上交实现「蛋白质功能定向进化」、微软紧急撤回WizardLM-2

导读&#xff1a; 欢迎阅读《AI大模型日报》&#xff0c;内容基于Python爬虫和LLM自动生成。目前采用“文心一言”生成了今日要点以及每条资讯的摘要。 《AI大模型日报》今日要点&#xff1a; 在AI大模型领域&#xff0c;多项研究进展和行业应用动态引发关注。一夜之间&#x…

敏捷之Scrum开发

目录 一、什么是 Scrum 1.1 Scrum 的定义 二、Scrum 迭代开发过程 2.1 迭代开发过程说明 2.1.1 开发方法 2.1.1.1 增量模型 2.1.1.1.1 定义 2.1.1.1.2 模型方法说明 2.1.1.2 迭代模型 2.1.1.2.1 定义 2.1.1.2.2 模型方法说明 2.1.2 迭代过程 2.1.2.1 产品需求Produ…