Spring AI之后,阿里推出Spring Cloud Alibaba AI,接入体验篇——Java也能方便用 AI

部署运行你感兴趣的模型镜像

阿里推出Spring Cloud Alibaba AI,接入体验篇——Java也能方便用 AI

1.Spring AI

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

        Spring AI 的灵感来自著名的 Python 项目,如 LangChain 和 LlamaIndex,但 Spring AI 并不是这些项目的直接移植复制。Spring AI 的思想是:下一波 Generative AI 生成式应用程序将不仅面向 Python 开发人员,而且将在许多编程语言中无处不在

Spring AI提供四大方向:

  • 提供抽象能力
  • 简化AI应用的开发
  • 模型与向量支持
  • AI集成与自动配置

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

  • 提供多种大模型服务对接能力,包括业界大多数主流大模型服务等,如OpenAI,Microsoft,Amazon,Google和Huggingface;

  • 将 AI 模型输出映射到 POJO,支持灵活的 Prompt Template 和模型输出解析 Output Parsing 能力;

  • 支持多模态的生成式 AI 能力,如对话,文生图、文生语音等;

  • 提供跨AI提供商通用的可移植的 API 以访问各类模型服务和 Embedding 服务,支持同步和流式调用,同时也支持传递特定模型的定制参数;

  • 支持 RAG 能力的基础组件,包括 DocumentLoader、TextSpillter、EmobeddingClient、VectorStore 等;

  • 支持AI 模型和矢量存储的 AI Spring Boot Starter 实现配置自动装配;

  • 跨 Vector Store 提供程序的可移植 API,包括新颖的类似 SQL 的元数据过滤器 API,该 API 也是可移植的。

  • 用于数据工程的 ETL 框架

2.Spring Cloud Alibaba AI

        Spring Cloud Alibaba AI 以 Spring AI 为基础,并在此基础上提供阿里云通义系列大模型全面适配,让用户在 5 分钟内开发基于通义大模型的 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 等实用能力。

以下是当前官方提供的 Spring Cloud Alibaba AI 应用开发示例:

  • 聊天对话应用
  • 文生图应用
  • 文生语音应用
  • 模型输出解析OutputParser(实现从 String 到自动 POJO 映射)
  • 使用 Prompt Template
  • 让 AI 模型接入外部数据(Prompt Stuff)

3. 接入体验

基于官方文档进行接入体验!https://sca.aliyun.com/docs/2023/user-guide/ai/quick-start/

1.新建一个Maven项目,JDK选的是17版本。
Maven文件需要引入spring-cloud-alibaba-dependencies和spring-cloud-starter-alibaba-ai两个依赖。

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

2.配置阿里云通义千问的Api-Key,没有可以从官网上申请:

server:
  port: 8080
spring:
  application:
    name: spring-cloud-alibaba-ai-demo

  cloud:
    ai:
      tongyi:
          api-key: 你的api-key

3.编写聊天服务实现类(文本大模型为例)
(1)创建一个Controller类,新建/simple接口,用来测试基本的问答:

@RestController
@RequestMapping("/ai")
@CrossOrigin
public class TongYiController {

    @Autowired
    @Qualifier("tongYiSimpleServiceImpl")
    private TongYiService tongYiSimpleService;


	/**
	 * 文本生成
	 * @param message
	 * @return
	 */
    @GetMapping("/example")
    public String completion(
            @RequestParam(value = "message", defaultValue = "你是谁")
            String message
    ) {

        return tongYiSimpleService.completion(message);
    }

(2)新建一个TongYiService服务类:

public interface TongYiService {
    /**
     *文本模型调用
     * @param message 问题.
     * @return AI answer.
     */
    String completion(String message);
...
}

(4)具体的实现类如下:由 Spring AI 自动注入 ChatClient、StreamingChatClient,ChatClient 屏蔽底层通义大模型交互细节,后者用于流式调用。

对于文本模型问答而言,仅通过client.call(prompt)一行代码就可以完成对模型的调用:

@Slf4j
@Service
public class TongYiSimpleServiceImpl extends AbstractTongYiServiceImpl {

	private static final Logger logger = LoggerFactory.getLogger(TongYiService.class);

	//自动注入ChatClient屏蔽模型调用细节 
	private final ChatClient chatClient;
	//自动注入StreamingChatClient屏蔽模型调用细节,StreamingChatClient用于流式调用
	private final StreamingChatClient streamingChatClient;

	@Autowired
	public TongYiSimpleServiceImpl(ChatClient chatClient, StreamingChatClient streamingChatClient) {

		this.chatClient = chatClient;
		this.streamingChatClient = streamingChatClient;
	}

	/**
	 * 模型回答
	 * @param message 问题.
	 * @return
	 */
	@Override
	public String completion(String message) {
		// 创建提问的Prompt
		Prompt prompt = new Prompt(new UserMessage(message));
		// 调用模型
		return chatClient.call(prompt).getResult().getOutput().getContent();
	}
}	

(5)发送一个请求,prompt是"你是谁",测试结果如下:
在这里插入图片描述

验证应用效果:

方式一:使用apipost或postman来请求响应;
方式二:复制官方代码下的resources/static,进入resources/static,运行index.html,进入web进行交互。
在这里插入图片描述
申请通义API-KEY
(按量收费)
为使示例能够正常接入通义大模型,需要在阿里云开通 DashScope 灵积模型服务,申请有效的 API-KEY 并更新到应用配置文件。具体操作步骤可参见如下文档:

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

新用户会有免费额度:
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

ComfyUI

ComfyUI

AI应用
ComfyUI

ComfyUI是一款易于上手的工作流设计工具,具有以下特点:基于工作流节点设计,可视化工作流搭建,快速切换工作流,对显存占用小,速度快,支持多种插件,如ADetailer、Controlnet和AnimateDIFF等

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Itfuture03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值