阿里智能AI框架Playground,即学即用

Spring AI Alibaba Playground 是 Spring AI Alibaba 社区以 Spring AI Alibaba 和 Spring AI 为框架搭建的 AI 应用。包含完善的前端 UI + 后端实现,具备对话,图片生成,工具调用,RAG,MCP 等众多 AI 相关功能。在 playground 的基础之上,您可以快速复刻出一个属于自己的 AI 应用。其中工具调用,MCP 集成,聊天模型切换等功能亦可为您搭建自己的 AI 应用提供参考。

Playground 代码地址:https://github.com/springaialibaba/spring-ai-alibaba-examples/tree/main/spring-ai-alibaba-playground

项目首页预览:

image-20250607164742879

本篇文章中,内容较多。涉及运行,项目介绍,配置介绍等。分为三个部分介绍 Spring AI Alibaba Playground,您可以根据自己的需要跳转到不同章节浏览。

目录
本地运行
配置介绍
项目介绍
1. 本地运行
本章节中,将主要介绍如何在本地启动 Playground 项目。

1. 1 下载源码
Playground 代码地址:https://github.com/springaialibaba/spring-ai-alibaba-examples/tree/main/spring-ai-alibaba-playground

playground 项目位于 spring-ai-alibaba-example 仓库下,被设计为一个独立的项目,不依赖于 spring-ai-alibaba-example pom 管理。这意味着您需要使用 IDEA 单独打开 playground 项目目录。而不是在 example 根目录下直接启动。

PS: 如果直接启动需要配置 IDEA 的运行工作目录,请参考 README 描述:https://github.com/springaialibaba/spring-ai-alibaba-examples/blob/main/spring-ai-alibaba-playground/README.md

1.2 配置变更
1.2.1 MCP 配置变更
因为 playground 项目引入了 mcp stdio 的方式来演示 Spring AI 如何接入 MCP 服务。因此当您的启动环境为 windows 时,需要安装并配置启动 MCP Server 需要的环境。

以下面的 MCP Server json 配置文件为例:

{
    "mcpServers": {
        "github": {
            "command": "npx",
            "args": [
                "/c",
                "npx",
                "-y",
                "@modelcontextprotocol/server-github"
            ],
            "env": {
                "GITHUB_PERSONAL_ACCESS_TOKEN": "your_github_token"
            }
        }
    }
}

您需要安装 NPX 工具,如果在 Windows 系统启动,需要变更 command 为 npx.cmd。否则会启动失败。

1.2.2 数据库文件变更
Playground 使用 SQLite 作为 Chat Memory 的存储数据库。在项目启动时,会自动在 src/main/resources 目录下创建 saa.db 的数据库文件,如果启动时没有自动创建,出现启动失败错误时。您需要手动创建此文件。

1.2.3 前端打包
playground 前端项目采用打包编译到 jar 包中一起启动方式运行,因此在启动后端时,需要运行 mvn clean package。确保前端项目正确打包编译,您可以在 target/classes/static 路径下看到前端资源文件。

1.2.4 可观测集成
Playground 项目中集成了 Spring AI 的可观测功能,如果您不想观察 AI 应用运行中的一些指标数据,您可以忽略此步骤。

PS: 因为 AI 大模型应用的观测数据中包含用户的输入等信息,在生产部署时,请确保敏感信息选项关闭。

在 spring-ai-alibaba-example 仓库 docker-compose 目录准备了 AI 应用常用的工具 docker-compose 启动文件,您可以参考启动 zipkin。

可观测实现参考:https://java2ai.com/blog/spring-ai-alibaba-observability-arms/?spm=5176.29160081.0.0.2856aa5cenvkmu

1.2.5 apiKey 配置
Playground 项目集成了 RAG,向量数据库和 Function Call 等功能,因此在启动之初您应该配置对应的 ak。

PS: playgrond 中所有的 key 都通过 env 的方式注入,如果配置了 env 之后,项目仍然获取不到 ak,请重启 IDEA

DashScope 大模型 ak:AI 应用使用
阿里云 IQS 信息检索服务 ak:模块化 RAG 示例,web search 使用
阿里云 Analytic 项目数据库 ak:RAG 使用;
百度翻译和百度地图 ak:Function Call 调用使用;
Github 个人 secret:MCP Server 演示使用。
关于 AK 的获取方式自行搜索,这里不在过多赘述。

1.3 启动并访问
如果上面的配置步骤全部完成,在 playground 项目启动之后,在浏览器输入 http://localhost:8080 您将会看到文章开始时的首页页面。

image-20250607171739807

PS: 如果体验对应的 Function Call 或者 MCP 功能时,请确保配置了对应的服务 AK 且 AK 有效。

此项目仅作为演示使用,一些功能初具形状,尚不完善。欢迎贡献代码并完善项目!🚀

2. 配置介绍
playground 项目作为一个较完善的 AI 应用项目,涉及较多的配置文件,在此章节中将一一说明。

2.1 resources 配置
resource 目录配置文件如下:

resources
├── application-dev.yml
├── application-prod.yml
├── application.yml
├── banner.txt
├── db
├── logback-spring.xml
├── mcp-config.yml
├── mcp-libs
├── models.yaml
└── rag

db 为 saa.db 目录,主要为 playground 的 chat memory 提供存储支持;
mcp-libs:MCP Stdio 的服务 jar 目录;
rag:RAG 功能的知识库文档目录,在项目启动时,将自动向量化文档并存入向量数据库;
mcp-config.yaml:palyground 项目增强的 mcp-server 配置;
application-*.yml:项目启动配置。
2.1.1 MCP Config 增强
解决的问题:在 playground 中使用 MCP Stdio 的方式来集成和演示 MCP 功能,在涉及到本地服务时,例如以下配置:

{
    "mcpServers": {
        "weather": {
            "command": "java",
            "args": [
                "-Dspring.ai.mcp.server.stdio=true",
                "-Dspring.main.web-application-type=none",
                "-Dlogging.pattern.console=",
                "-jar",
                "D:\\open_sources\\spring-ai-alibaba-examples\\spring-ai-alibaba-mcp-example\\spring-ai-alibaba-mcp-build-example\\mcp-stdio-server-example\\target\\mcp-stdio-server-example-1.0.0.jar"
            ],
            "env": {}
        }
    }
}

在二进制文件配置时,必须要求使用绝对路径配置且 json 配置较难理解。因此 playground 在配置做了增强,将 json 转为了语义清晰的 yml 方式定义。细节请参考 MCP

2.2 pom.xml 配置
此章节部分将主要介绍核心依赖,其他依赖请参考:https://github.com/springaialibaba/spring-ai-alibaba-examples/blob/main/spring-ai-alibaba-playground/pom.xml

<dependencies>

    <!-- Chat Memory 功能实现时需要此依赖项 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <!-- playground 文本总结功能依赖 tika 对输入的各类文本进行解析 -->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-tika-document-reader</artifactId>
        <version>${spring-ai.version}</version>
    </dependency>

    <!-- Spring AI MCP client 相关依赖-->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-starter-mcp-client</artifactId>
        <version>${spring-ai.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-autoconfigure-mcp-client</artifactId>
        <version>${spring-ai.version}</version>
    </dependency>

  <!-- Spring AI OpenAI Starter -->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-starter-model-openai</artifactId>
        <version>${spring-ai.version}</version>
    </dependency>

    <!-- Spring AI RAG markdown 文本读入解析 -->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-markdown-document-reader</artifactId>
        <version>${spring-ai.version}</version>
    </dependency>

    <!-- Spring AI 向量数据库 Advisors -->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-advisors-vector-store</artifactId>
        <version>${spring-ai.version}</version>
    </dependency>

    <!-- Spring AI Alibaba DashScope starter -->
    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>
        <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
        <version>${spring-ai-alibaba.version}</version>
    </dependency>

    <!-- Spring AI Alibaba Memory 实现 -->
    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>
        <artifactId>spring-ai-alibaba-starter-memory</artifactId>
        <version>${spring-ai-alibaba.version}</version>
    </dependency>

    <!-- Spring AI Alibaba analyticdb 向量数据库集成 -->
    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>
        <artifactId>spring-ai-alibaba-starter-store-analyticdb</artifactId>
        <version>${spring-ai-alibaba.version}</version>
    </dependency>

    <!-- DB,为 ChatMemory 和 playground 提供存储支持 -->
    <dependency>
        <groupId>org.xerial</groupId>
        <artifactId>sqlite-jdbc</artifactId>
        <version>${sqlite-jdbc.version}</version>
    </dependency>

    <dependency>
        <groupId>org.hibernate.orm</groupId>
        <artifactId>hibernate-community-dialects</artifactId>
        <version>${hibernate.version}</version>
    </dependency>

    <!-- Playground 可观测集成 -->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing-bridge-brave</artifactId>
        <version>${micrometr.version}</version>
        <exclusions>
            <exclusion>
                <artifactId>slf4j-api</artifactId>
                <groupId>org.slf4j</groupId>
            </exclusion>
        </exclusions>
    </dependency>

</dependencies>

<!-- Spring AI 和 Spring AI Alibaba 依赖管理 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-bom</artifactId>
            <version>${spring-ai-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值