当前位置:   article > 正文

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

spring 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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

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

  cloud:
    ai:
      tongyi:
          api-key: 你的api-key
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

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

public interface TongYiService {
    /**
     *文本模型调用
     * @param message 问题.
     * @return AI answer.
     */
    String completion(String message);
...
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

(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();
	}
}	
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

(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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/1012751
推荐阅读
相关标签
  

闽ICP备14008679号