10分钟接入AI大模型—Spring Cloud Alibaba

一、前言

1.1 AI大模型

近几年,AI大模型的发展迅速,成为全球科技竞争的新高地,具有极大的发展潜力和广泛的应用前景。中国在AI大模型领域的发展尤为显著,不仅在算力规模上与美国差距不大,而且在中文语料和文化理解方面具有天然优势。中国企业在大模型开发方面起步较晚,但发展迅速,涌现出如百度的ERNIE、阿里巴巴的M6等代表性的大模型产品。

AI大模型的应用场景广泛,包括但不限于自然语言处理、图像识别、语音识别、推荐系统、自动驾驶、游戏、科学研究等。随着技术的进步,AI大模型正在不断推动人工智能技术的边界,为各行各业带来革命性的变化。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.2 Spring AI

Spring AI 是 Spring 官方社区项目,旨在简化 Java AI 应用程序开发,让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Spring AI项目从最初专注于处理语言输入和生成语言输出的模型开始,逐渐发展成为一个提供多种AI功能集成的框架。它提供了跨AI提供商的可移植API支持,包括聊天、文本到图像、嵌入模型等,并支持同步和流式API选项。

主要功能特点:

  • 多模型支持:Spring AI支持多种聊天模型,包括Amazon Bedrock、Anthropic Claud、Azure Open AI等。
  • 矢量数据库集成:支持多种矢量数据库,如Apache Cassandra、Elasticsearch、Milvus等。
  • Spring Boot集成:提供Spring Boot自动配置和启动器,简化了AI模型和矢量存储的集成。
  • ETL框架:提供了数据工程的ETL框架,便于将文档传输到模型提供商,并存储在矢量数据库中。
  • 函数调用:允许声明java.util.Function​实现,以供OpenAI模型在其提示响应中使用。

1.3 Spring Cloud Alibaba AI

Spring Cloud Alibaba AI 以 Spring AI 为基础,并在此基础上提供阿里云通义系列大模型全面适配,让用户能快速开发基于通义大模型的 Java AI 应用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Spring Cloud Alibaba AI 目前基于 Spring AI 0.8.1 版本 API 完成通义系列大模型的接入。通义接入是基于阿里云 灵积模型服务,灵积模型服务建立在“模型即服务”(Model-as-a-Service,MaaS)的理念基础之上,围绕 AI 各领域模型,通过标准化的API提供包括模型推理、模型微调训练在内的多种模型服务。

在当前最新版本中,Spring Cloud Alibaba AI 主要完成了几种常见生成式模型的适配,包括对话、文生图、文生语音等,开发者可以使用 Spring Cloud Alibaba AI 开发基于通义的聊天、图片或语音生成 AI 应用,框架还提供 OutParser、Prompt Template、Stuff 等实用能力。

二、项目环境准备

开发工具:IDEA

Java环境:JDK17

构建工具:Maven

通义模型key

获取通义api key步骤:

1.阿里云官网开通服务

模型服务灵积 DashScope - 阿里云

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.创建key

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

三、项目开发

3.1 创建工程及配置

3.1.1创建maven工程

idea创建maven工程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

初始化

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传​​​

3.1.2添加依赖

<dependencyManagement>
    <dependencies>
        <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>
    </dependencies>
</dependencyManagement>
 
<dependencies>
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-ai</artifactId>
    </dependency>
</dependencies>

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

备注:

添加依赖,出现报错:Cannot resolve org.springframework.ai:spring-ai-core:0.8.1

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

添加额外的Repository:在pom.xml文件中,添加如下仓库配置段落,这会指引Maven去查找Spring的里程碑和快照仓库,这些仓库可能包含了spring-ai-core或其他sca相关的依赖。

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

添加后,reload导入

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.1.3 application.yml配置

新建文件夹

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

新建application.yml文件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

内容如下:

server:
  port: 8080
​
spring:
  application:
    name: alibaba-spring-ai-demo
​
  cloud:
    ai:
      tongyi:
          api-key: 你的api-key
​

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.1.4 新建SpringBoot启动类

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.2 实现代码

3.2.1 新建包

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.2.2 TongYiController

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

@RestController
@RequestMapping("/api")
public class TongYiController {
​
    @Resource
    private TongYiService tongYiService;
​
    @GetMapping("/simple")
    public String completion(@RequestParam(value = "message",defaultValue = "AI时代下Java开发者该何去何从?")  String message){
        return tongYiService.completion(message);
    }
​
​
    @GetMapping("/stream_completion")
    public Map<String, String> streamCompletion(@RequestParam(value = "message",defaultValue = "AI时代下Java开发者该何去何从?")  String message){
        return tongYiService.streamCompletion(message);
    }
​
​
    @GetMapping("/image")
    public ImageResponse getImage(@RequestParam(value = "imgPrompt",defaultValue = "画一只狗") String imgPrompt){
        return tongYiService.getImage(imgPrompt);
    }
​
}

3.2.3 TongYiService

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

public interface TongYiService {
​
    /**
     * 基本问答
     *
     * @param message
     * @return
     */
    String completion(String message);
​
    /**
     * Stream call
     *
     * @param message
     * @return
     */
    Map<String, String> streamCompletion(String message);
​
    /**
     * 文生图
     *
     * @param imgPrompt
     * @return
     */
    ImageResponse getImage(String imgPrompt);
}

3.2.4 TongYiSimpleServiceImpl​​

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

@Service
@Slf4j
public class TongYiServiceImpl implements TongYiService {
​
    @Resource
    private ChatClient chatClient;
​
    @Resource
    private ImageClient imageClient;
​
    @Resource
    private StreamingChatClient streamingChatClient;
​
    @Override
    public String completion(String message) {
        Prompt prompt = new Prompt(new UserMessage(message));
        return chatClient.call(prompt).getResult().getOutput().getContent();
    }
​
    @Override
    public 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();
​
        log.info("fullContent:{}",fullContent);
​
        return Map.of(message,fullContent.toString());
    }
​
​
    @Override
    public ImageResponse getImage(String imgPrompt) {
        ImagePrompt imagePrompt = new ImagePrompt(imgPrompt);
        return imageClient.call(imagePrompt);
    }
​
}

3.3 测试

3.3.1 启动服务

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.3.2 基本对话

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.3.3 文生图

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这里插入图片描述


如何学习AI大模型?

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值