0


阿里AI-Spring Cloud Alibaba AI:快速搭建自己的通义千问

本文基于官方文档。

Spring AI

官方文档:Spring AI :: Spring AI Reference

中文文档:Spring AI 简介 - spring 中文网 (springdoc.cn)

Spring AI 是 Spring 官方社区项目,旨在简化 Java AI 应用程序开发,让 Java 开发者像使用 Spring 开发普通应用一样开发 AI 应用。Spring 框架通过 Spring AI 项目正式发布了对生成式 AI 应用开发的支持。

核心概念

AiClient(接口)

Spring AI 最初专注于处理语言输入和生成语言输出的模型。该项目的理念是为开发人员提供一个抽象接口,为将生成式 AI 作为独立组件纳入应用奠定基础。接口 AiClient 就是这样一个抽象,它有两个基本实现:OpenAI 和 Azure OpenAI。

public interface AiClient {
    default String generate(String message);
    AiResponse generate(Prompt prompt);
}

Prompt(提示)

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

public class Prompt {
    private final List<Message> messages;
    // 构造函数和其他方法
}

public interface Message {
    String getContent();
    Map<String, Object> getProperties();
    MessageType getMessageType();
}

AiResponse(响应)

AiResponse 由 Generation(生成)对象列表组成,每个对象都包含来自相应 Prompt(提示)的输出。此外,Generation 对象还提供 AI 响应的元数据信息。

public class AiResponse {
    private final List<Generation> generations;
    // Get 和 Set
}

public class Generation {
    private final String text;
    private Map<String, Object> info;
}

Spring Cloud Alibaba 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 等实用能力。

下面将通过一个示例来演示以下如何使用。

申请API-KEY

查看官方文档,按照提示去申请:

如何开通DashScope并创建API-KEY_模型服务灵积(DashScope)-阿里云帮助中心 (aliyun.com)

创建项目

引入依赖

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

仓库配置

仓库配置则是针对项目中特定的依赖或插件需求,明确指定了获取的来源,包括各种类型的Spring框架版本(里程碑或快照)。

    <!-- 官方文档并没有提到要引入下面 配置Maven项目中的两个仓库
    如果不引入,无法下载 spring-ai-core:0.8.1 -->
    <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>

镜像配置

把本地的setting.xml中的镜像部分修改一下。

镜像配置决定了整体项目依赖项和插件的获取策略,指定了主要的镜像地址和排除的特定仓库。

    <mirror>
      <id>alimaven</id>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <mirrorOf>central,!spring-milestones,!spring-snapshots</mirrorOf>        
    </mirror>

!spring-milestones 和 !spring-snapshots 表示排除 Spring 框架的里程碑版本和快照版本仓库。

配置文件

server:
  port: 10010
spring:
  application:
    name: spring-cloud-alibaba-ai

  cloud:
    ai:
      tongyi:
          api-key: 刚才申请的api-key

代码部分

把官方的代码拉取即可。这里我们用的是一个项目来使用Spring Cloud Alibaba AI,官方是用的子项目,所以需要注意以下pom文件的内容。

https://github.com/alibaba/spring-cloud-alibaba/tree/26d483d7220cdfc23c33e40c6204fdf3f5561ef9/spring-cloud-alibaba-examples/spring-cloud-ai-example

启动测试

测试一下画图

测试一下聊天


本文转载自: https://blog.csdn.net/p_fly/article/details/139981476
版权归原作者 p_fly 所有, 如有侵权,请联系我们删除。

“阿里AI-Spring Cloud Alibaba AI:快速搭建自己的通义千问”的评论:

还没有评论