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

最低0.47元/天 解锁文章
4175

被折叠的 条评论
为什么被折叠?



