写在前面

在之前的文章中我们有介绍过SpringAI这个项目。SpringAI 是Spring 官方社区项目,旨在简化 Java AI 应用程序开发,

让 Java 开发者想使用 Spring 开发普通应用一样开发 AI 应用。

SpringAI 主要面向的是国外的各种大模型接入,对于国内开发者可能不太友好。

于是乎,Spring Cloud Alibaba AI 便问世了,Spring Cloud Alibaba AI 以 Spring AI 为基础,并在此基础上提供阿里云同义系列大模型全面适配,

让用户在 5 分钟内开发基于同义大模型的 Java AI 应用。

一、Spring AI 简介

可能有些小伙伴已经忘记了SpringAI 是啥?我们这儿再来简单回顾一下。

Spring AI是一个面向AI工程的应用框架。其目标是将可移植性和模块化设计等设计原则应用于AI领域的Spring生态系统,

并将POJO作为应用程序的构建块推广到AI领域。

转换为人话来说就是:Spring出了一个AI框架,帮助我们快速调用AI,从而实现各种功能场景。

二、Spring Cloud Alibaba AI 简介

Spring Cloud Alibaba AISpring AI 为基础,并在此基础上,基于 Spring AI 0.8.1 版本 API 完成同义系列大模型的接入

实现阿里云同义系列大模型全面适配。

在当前最新版本中,Spring Cloud Alibaba AI 主要完成了几种常见生成式模型的适配,包括对话、文生图、文生语音等,

开发者可以使用 Spring Cloud Alibaba AI 开发基于同义的聊天、图片或语音生成 AI 应用,

框架还提供 OutParserPrompt TemplateStuff 等实用能力。

三、第一个Spring AI应用开发

① 新建maven 项目

注: 在创建项目的时候,jdk版本必须选择17+

② 添加依赖

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2023.0.1.0</version>
<type>pom</type>
<scope>import</scope>
</dependency> <dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-ai</artifactId>
<version>2023.0.1.0</version>
</dependency>

注: 这里我们需要配置镜像源,否则是没法下载依赖的。会报如下错误

spring-ai: 0.8.1 dependency not found

<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

③ 在 application.yml 配置文件中添加api-key

spring:
cloud:
ai:
tongyi:
api-key: 你自己申请的api-key

小伙伴如果不知道在哪申请,我把申请链接也放这儿了

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

操作步骤:https://help.aliyun.com/zh/dashscope/developer-reference/activate-dashscope-and-create-an-api-key

④ 新建TongYiController 类,代码如下

@RestController
@RequestMapping("/ai")
@CrossOrigin
@Slf4j
public class TongYiController { @Autowired
@Qualifier("tongYiSimpleServiceImpl")
private TongYiService tongYiSimpleService; @GetMapping("/example")
public String completion(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) { return tongYiSimpleService.completion(message);
} }

⑤ 新建TongYiService 接口,代码如下

public interface TongYiService {
String completion(String message); }

⑥ 新建TongYiSimpleServiceImpl 实现类,代码如下

@Service
@Slf4j
public class TongYiSimpleServiceImpl implements TongYiService { private final ChatClient chatClient; @Autowired
public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {
this.chatClient = chatClient;
} @Override
public String completion(String message) {
Prompt prompt = new Prompt(new UserMessage(message)); return chatClient.call(prompt).getResult().getOutput().getContent();
} }

到这儿我们一个简单的AI应用已经开发完成了,最终项目结构如下

四、运行AI应用

启动服务,我们只需要在浏览器中输入:http://localhost:8080/ai/example 即可与AI交互。

① 不带message参数,则message=Tell me a joke,应用随机返回一个笑话

② 我们在浏览器中输入:http://localhost:8080/ai/example?message=对话内容

五、前端页面对话模式

我们只更加在resources/static 路径下添加一个index.html前端页面,即可拥有根据美观的交互体验。

index.html代码官方github仓库中已给出样例,由于代码比较长,这里就不贴代码了

https://github.com/alibaba/spring-cloud-alibaba/blob/2023.x/spring-cloud-alibaba-examples/ai-example/spring-cloud-ai-example/src/main/resources/static/index.html

添加完静态页面之后,我们浏览器中输入:http://localhost:8080/index.html 就可以得到一个美观的交互界面

接下来,我们来实际体验一下

六、其他模型

上面章节中我们只简单体验了对话模型,阿里还有很多其他模型。由于篇幅原因这里就不一一带大家一起体验了。

应用场景:

各个模型概述:

七、怎么样快速接入大模型

各种应用场景阿里官方GitHub都给出了接入例子

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

感兴趣的小伙伴可以自己到上面github 仓库看代码研究

本期内容到这儿就结束了,★,°:.☆( ̄▽ ̄)/$:.°★ 。 希望对您有所帮助

我们下期再见 ヾ(•ω•`)o (●'◡'●)

阿里也出手了!Spring CloudAlibaba AI问世了的更多相关文章

  1. 在阿里云上搭建Spring Initializr服务器。

    参考的博客有: https://blog.csdn.net/chszs/article/details/51713174 https://segmentfault.com/a/119000001137 ...

  2. Spring框架学习笔记(6)——阿里云服务器部署Spring Boot项目(jar包)

    最近接外包,需要部署服务器,便是参考了网上的几篇博文,成功在阿里云服务器成功部署了Spring Boot项目,特记下本篇笔记 Spring Boot项目打包 这里说一下部署的一些问题 1.mysql驱 ...

  3. 揭秘阿里云WAF背后神秘的AI智能防御体系

    背景 应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入.跨站等攻击仍然占据着较前的位置.WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在,也正是这些针对W ...

  4. 阿里云出手SaaS生态,中国SaaS市场小而不强有望破解

    企业服务SaaS市场还有很大的增长空间.SaaS的鼻祖Salesforces今年5月迈上了千亿美元市值的门槛,再一次为ToB市场注入了兴奋剂.单单一个SaaS CRM,目前全球的市场规模就超过400亿 ...

  5. 阿里云视频云 Retina 多媒体 AI 体验馆开张啦!

    带你体验视频更多可能 海量视频管理难度大?翻库检索特定人物费时费力?视频内容剪辑效率低?您的得力助手"Retina多媒体AI"体验馆已上线.带你感受视频AI黑科技,开启极致智能体验 ...

  6. EventBridge助力阿里云视觉智能开放平台AI智能存储实践

    本文作者:李建,阿里巴巴达摩院技术专家. 01 视觉智能开放平台(VIAPI)业务场景介绍 阿里云视觉智能开放平台(简称 VIAPI),是基于之前很多技术实践经验积累的 AI 能力的沉淀平台.目前整个 ...

  7. 2019阿里P7最新总结Spring Boot面试问题

        Spring Boot一直是Spring生态系统的关键参与者.该项目通过其自动配置功能使我们的生活更加轻松.在本教程中,我们将介绍在求职面试中可能出现的一些与Spring Boot相关的最常见 ...

  8. 【建议收藏】阿里P7总结的Spring注解笔记,把组件注册讲的明明白白

    环境搭建 注解的方式是通过配置类的方式来注入组件,注解注入要比XML注入的方式简单,注解注入也需要在前者的基础上,添加一个spring-context的包,也是实际开发中常用的方式. 准备所需Jar包 ...

  9. 阿里云镜像创建Spring Boot工厂

    参考博客:https://blog.csdn.net/qq_40052237/article/details/115794368 http://start.aliyun.com

  10. 在阿里云容器服务上开发基于Docker的Spring Cloud微服务应用

    本文为阿里云容器服务Spring Cloud应用开发系列文章的第一篇. 一.在阿里云容器服务上开发Spring Cloud微服务应用(本文) 二.部署Spring Cloud应用示例 三.服务发现 四 ...

随机推荐

  1. 实时数仓Hologres首次走进阿里淘特双11

    ​简介:这是淘特在阿里巴巴参与的第二个双11大促,大促期间累计超过上千万消费者在此买到心仪的商品,数百万家商家因为淘特而变得不同,未来,淘特也将会继续更好的服务于下沉市场,让惠民走近千万家. 2021 ...

  2. 【ClickHouse 技术系列】- ClickHouse 中的嵌套数据结构

    ​简介:本文翻译自 Altinity 针对 ClickHouse 的系列技术文章.面向联机分析处理(OLAP)的开源分析引擎 ClickHouse,因其优良的查询性能,PB级的数据规模,简单的架构,被 ...

  3. [FAQ] mogodb Robo3T 客户端全屏后 怎么退出全屏

    mongodb 的 Robo3T 客户端: 如果是不小心全屏了,不用担心,按 F11 恢复. 如果想要全屏,也是按 F11. Link:https://www.cnblogs.com/farwish/ ...

  4. dotnet C# 如何正确获取藏文的字数

    在咱国内有很多有趣的文字,其中藏文属于有趣的文字里面特别有趣的一项,特别是对于做文本库的同学,大概都知道什么叫合写字吧.合写字的含义就是多个字符一起组成一个字.但是多个字符在内存中,本身就是多个字符对 ...

  5. 2018-2-13-win10-uwp-从StorageFile获取文件大小

    title author date CreateTime categories win10 uwp 从StorageFile获取文件大小 lindexi 2018-2-13 17:23:3 +0800 ...

  6. CF633H (线段树维护矩乘 + 莫队)

    Fibonacci-ish II 题意:给定一个长度最大为 \(30000\) 的序列,和最多 \(30000\) 个询问,每个询问问某区间 \([L,R]\) 里的数,去掉重复然后排序之后,依次乘上 ...

  7. ansible系列(23)--ansible的when控制语句

    目录 1 when控制语句 1.1 根据不同操作系统安装相同的软件 1.2 为不同centos版本安装httpd软件 1.3 为特定的主机添加Nginx仓库 1.4 判断服务是否正常运行 1 when ...

  8. 26ObjectStream

    ObjectStream ObjectOutputStream 用于将属性和内容保存到文件中,保存数据类型和值,即序列化,该流为处理流 static和transient修饰的属性无法序列化,切被序列化 ...

  9. 已经调试成功的Protues工程用了一段时间后不能用的问题

    已经调试成功的Protues工程,经过一段时间后不能用的问题 主要现象:(1)可以打开,运行时没有效果:(2)可以打开,运行时闪退 解决办法:(1)删除原ARM芯片:(2)重新找到ARM芯片,重新加载 ...

  10. angular自定义属性指令

    在angular中有三种类型的指令: 组件–拥有模板的指令: 结构性指令–通过添加和移除DOM元素改变DOM布局的指令; 属性型指令–改变元素.组件或其他指令的外观和行为的指令: 组件是这三种指令中最 ...