springCloudalibabaAI孵化(一)

目录

1、what

1、简介

2、核心概念

[3、高级特性 Prompt 和 AiResponse](#3、高级特性 Prompt 和 AiResponse)

4、功能

2、How

1、前言

[2、在项目 pom.xml 中加入 2023.0.1.0 版本 Spring Cloud Alibaba 依赖:](#2、在项目 pom.xml 中加入 2023.0.1.0 版本 Spring Cloud Alibaba 依赖:)

[3、在 配置文件中加入以下配置:application.yml](#3、在 配置文件中加入以下配置:application.yml)

[4、编写聊天服务实现类,由 Spring AI 自动注入 、 屏蔽底层通义大模型交互细节。ChatClientStreamingChatClientChatClient](#4、编写聊天服务实现类,由 Spring AI 自动注入 、 屏蔽底层通义大模型交互细节。ChatClientStreamingChatClientChatClient)

5、提供具体聊天逻辑实现

[6、编写 Spring 入口类并启动应用](#6、编写 Spring 入口类并启动应用)

7、验证

4、发展


1、what

1、简介

  1. Spring AI 与通义千问集成,使用 Spring AI 开发 Java AI 应用。
  2. Spring Cloud Alibaba AI 目前基于 Spring AI 0.8.1 版本 API 完成通义系列大模型的接入。通义接入是基于阿里云 灵积模型服务,灵积模型服务建立在"模型即服务"(Model-as-a-Service,MaaS)的理念基础之上,围绕 AI 各领域模型,通过标准化的API提供包括模型推理、模型微调训练在内的多种模型服务。
  3. 在当前最新版本中,Spring Cloud Alibaba AI 主要完成了几种常见生成式模型的适配,包括对话、文生图、文生语音等,开发者可以使用 Spring Cloud Alibaba AI 开发基于通义的聊天、图片或语音生成 AI 应用,框架还提供 OutParser、Prompt Template、Stuff 等实用能力。

2、核心概念

在开始之前,我们先回顾一下一些关键领域术语和概念。 Spring AI 最初专注于设计用于处理语言输入和生成语言输出的模型。该项目背后的想法是为开发人员提供一个抽象接口,这是将生成式 AI API 作为独立组件添加到应用程序中的基础。 其中一种抽象是接口 AiClient,它有两个基本实现 - OpenAI 和 Azure OpenAI。而 Spring Cloud Alibaba AI 提供了对通义系列的全面支持。

java 复制代码
public interface AiClient { default String generate(String message); AiResponse generate(Prompt prompt); }

AiClient为生成功能提供了两种选择。简化的 -generate(String message) -使用 String 作为输入和输出,它可以用来避免 Promt 和 AiResponse 类的额外复杂性。 现在,让我们仔细看看它们的区别。

3、高级特性 Prompt 和 AiResponse

1、在AI领域,提示是指提供给AI的短信。它由上下文和问题组成,该模型用于生成答案。 从 Spring AI 项目的角度来看,Prompt 是参数化_Message_s 的列表。

java 复制代码
 public class Prompt { private final List messages; // constructors and utility methods }

public interface Message { String getContent(); Map getProperties(); MessageType getMessageType(); }

2、提示使开发人员能够更好地控制文本输入。一个很好的例子是提示模板,它由预定义的文本和一组占位符构成。然后,我们可以使用传递给 Message 构造函数的 Map 值来填充它们。

告诉我一个关于{content}的{形容词}笑话。

3、消息接口还保存有关 AI 模型可以处理的消息类别的高级信息。例如,OpenAI 实现区分对话角色,并通过 MessageType 有效映射。对于其他模型,它可以反映消息格式或一些其他自定义属性。更多详情请参考官方文档。

java 复制代码
public class AiResponse { private final List generations; // getters and setters }

public class Generation { private final String text; private Map info; } 

AiResponse 由 Generation 对象列表组成,每个对象都保存相应提示的输出。此外,Generation对象提供AI响应的元数据信息。

4、功能

2、How

Getting Started :: Spring AI Reference

1、前言

  1. 本项目演示如何使用 完成一个在线聊天 AI 应用,底层使用通义千问提供的模型服务。可在此查看 完整示例源码。spring-cloud-starter-alibaba-ai

  2. 为使示例能够正常接入通义大模型,需要在阿里云开通 DashScope 灵积模型服务,申请有效的 API-KEY 并更新到应用配置文件。具体操作步骤可参见如下文档:如何开通DashScope并创建API-KEY_模型服务灵积(DashScope)-阿里云帮助中心

2、在项目 pom.xml 中加入 2023.0.1.0 版本 Spring Cloud Alibaba 依赖:

java 复制代码
<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>

3、在 配置文件中加入以下配置:application.yml

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

4、编写聊天服务实现类,由 Spring AI 自动注入 、 屏蔽底层通义大模型交互细节。ChatClientStreamingChatClientChatClient

java 复制代码
@Service
public class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl {

	private final ChatClient chatClient;

	private final StreamingChatClient streamingChatClient;

	@Autowired
	public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {
		this.chatClient = chatClient;
		this.streamingChatClient = streamingChatClient;
	}
}

5、提供具体聊天逻辑实现

java 复制代码
@Service
public class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl {

	// ......

	@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.toString());

		return Map.of(message, fullContent.toString());
	}

}

6、编写 Spring 入口类并启动应用

java 复制代码
@SpringBootApplication
public class TongYiApplication {
	public static void main(String[] args) {
		SpringApplication.run(TongYiApplication.class);
	}
}

7、验证

1、方式一

浏览器地址栏输入:http://localhost:8080/ai/example

返回如下响应:

{ "Tell me a joke": "Sure, here's a classic one for you:\n\nWhy was the math book sad?\n\nBecause it had too many problems.\n\nI hope that made you smile! If you're looking for more, just let me know." }

2、方式二

进入 目录下,使用浏览器打开 index.html 文件,输入问题,即可获得输出响应(确保 API-key 有效):resources/static

4、发展

当前版本 Spring Cloud Alibaba AI 主要完成了几种常见生成式模型适配,包括对话、文生图、文生语音等。接下来的版本中,我们将继续完成 VectorStore、Embedding、ETL Pipeline 等更多适配,简化 RAG 等更多 AI 应用开发场景。

springcloudalibaba ai官网:快速开始 | https://sca.aliyun.com

相关推荐
feng995201 小时前
技术伦理双轨认证如何重构AI工程师能力评估体系——基于AAIA框架的技术解析与行业实证研究
人工智能·aaif·aaia·iaaai
2301_776681651 小时前
【用「概率思维」重新理解生活】
开发语言·人工智能·自然语言处理
{{uname}}1 小时前
利用WebSocket实现实时通知
网络·spring boot·websocket·网络协议
蜡笔小新..1 小时前
从零开始:用PyTorch构建CIFAR-10图像分类模型达到接近1的准确率
人工智能·pytorch·机器学习·分类·cifar-10
富唯智能2 小时前
转运机器人可以绕障吗?
人工智能·智能机器人·转运机器人
视觉语言导航2 小时前
湖南大学3D场景问答最新综述!3D-SQA:3D场景问答助力具身智能场景理解
人工智能·深度学习·具身智能
AidLux2 小时前
端侧智能重构智能监控新路径 | 2025 高通边缘智能创新应用大赛第三场公开课来袭!
大数据·人工智能
引量AI3 小时前
TikTok矩阵运营干货:从0到1打造爆款矩阵
人工智能·矩阵·自动化·tiktok矩阵·海外社媒
goTsHgo3 小时前
Spring Boot 自动装配原理详解
java·spring boot
Hi-Dison3 小时前
神经网络极简入门技术分享
人工智能·深度学习·神经网络