Java项目如何集成Spring AI
Spring CLI(Spring命令行工具)
Spring CLI 简化了直接从终端创建新应用程序的过程。 就像熟悉 JavaScript 生态系统的人的“create-react-app”命令一样,Spring CLI 提供了一个创建基于 Spring 的项目的命令。 Spring CLI 还提供了将外部代码库集成到当前项目中的功能,以及许多其他生产力功能。
spring boot new
重要的是要了解“Spring CLI”与“Spring Boot CLI”是一个不同的项目,每个项目都有自己的一组功能。 |
若要开始创建 Spring AI 应用程序,请按照下列步骤操作:
-
下载最新的 Spring CLI 版本并按照安装说明进行操作。
-
要创建基于 OpenAI 的简单应用程序,请使用以下命令:
spring boot new --from ai --name myai
-
有关获取 OpenAI API 密钥和运行第一个 AI 应用程序的指导,请参阅生成的文件。
README.md
目前,Spring CLI 仅支持 Maven 项目。 |
要将相同的简单 AI 应用程序添加到现有 Maven 项目,请执行:
spring boot add ai
Spring CLI 允许用户定义自己的项目目录,这些目录定义您可以创建哪些项目或将其添加到现有代码库中。 |
Spring Initializr
转到 start.spring.io,选择要在新应用程序中使用的 AI 模型和向量存储。
添加Milestone和Snapshot 存储库
如果希望手动添加依赖项,请按照以下说明进行操作。要使用 Milestone 和 Snapshot 版本,您需要在构建文件中添加对 Spring Milestone 和/或 Snapshot 存储库的引用。
对于 Maven,请根据需要添加以下存储库定义:
<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>
对于 Gradle,请根据需要添加以下存储库定义:
repositories { mavenCentral() maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } }
依赖关系管理
Spring AI的引用资源清单(BOM,Bill of Materials)声明了特定Spring AI版本所推荐使用的所有依赖项的版本。 使用应用程序生成脚本中的 BOM 可以避免您自己指定和维护依赖项版本。 相反,您使用的 BOM 版本决定了使用的依赖项版本。 它还可确保默认使用受支持和测试的依赖项版本,除非您选择替代它们。
如果您是 Maven 用户,则可以通过将以下内容添加到pom.xml文件中来使用 BOM:
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-bom</artifactId> <version>1.0.0-SNAPSHOT</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Gradle 用户可以充分利用 Gradle 5.0 及更高版本对 BOM(Bill of Materials)的原生支持,以便在项目中引用 Spring AI BOM,并使用它来声明依赖项的约束。这是通过向 Gradle 构建脚本的依赖项部分添加 "platform" 依赖项处理方法来实现的。以下是一个示例代码片段,它展示了如何配置 Spring AI BOM,以便您可以在不指定版本号的情况下声明一个或多个 Spring AI 模块(如 spring-ai-openai
)的 Starter 依赖项。
// 在 build.gradle 文件的 dependencies 部分 dependencies { // 引入 Spring AI BOM 平台依赖项 implementation(platform("org.springframework.ai:spring-ai-bom:<version>")) // 使用 BOM 中定义的依赖项,无需指定版本号 implementation("org.springframework.ai:spring-ai-openai-starter") // 如果需要,还可以添加其他 Spring AI 相关的 Starter 依赖项 // ... // 其他依赖项 // ... } // 如果你的项目是多模块的,你可能需要在 settings.gradle 文件中添加 BOM 仓库 dependencyResolutionManagement { repositories { mavenCentral() // 假设 BOM 在 Maven 中央仓库 // 或者其他仓库,如果 BOM 在其他地方 // maven { url 'https://your-repository.com/repository' } } // 如果你的 BOM 使用了特定的 Gradle 插件或元数据格式 // 你可能还需要在这里配置插件管理 // pluginManagement { // plugins { // // 配置插件 // } // } }
请注意,<version>
应替换为实际的 Spring AI BOM 版本号。此外,如果你的 BOM 存在于不同的仓库中,你需要在 dependencyResolutionManagement
下的 repositories
中添加相应的仓库地址。
通过使用 BOM 平台依赖项,Gradle 会自动解析 BOM 中定义的依赖项版本,并确保你的项目中使用的依赖项与 BOM 中指定的版本保持一致。这有助于减少版本冲突,并确保项目的稳定性和兼容性。
为特定组件添加依赖项
文档中的以下每个部分都显示了需要添加到项目生成系统中的依赖项。
嵌入模型
-
嵌入 API
-
Spring AI OpenAI 嵌入
-
Spring AI Azure OpenAI 嵌入
-
Spring AI Ollama 嵌入
-
Spring AI Transformers (ONNX) 嵌入
-
Spring AI PostgresML 嵌入
-
Spring AI Bedrock Cohere 嵌入
-
Spring AI Bedrock Titan Embeddings
-
Spring AI VertexAI 嵌入
-
Spring AI MistralAI 嵌入
-
聊天模型
-
Chat Completion API
-
OpenAI Chat Completion (流和函数调用支持)
-
Microsoft Azure Open AI Chat Completion (流和函数调用支持)
-
Ollama Chat Completion
-
HuggingFace Chat Completion (不支持流)
-
Google Vertex AI PaLM2 Chat Completion (不支持流)
-
Google Vertex AI Gemini Chat Completion (流,多模态和函数调用支持)
-
Amazon Bedrock
-
Cohere Chat Completion
-
Llama Chat Completion
-
Titan Chat Completion
-
Anthropic Chat Completion
-
Jurassic2 Chat Completion
-
-
MistralAI Chat Completion (流和函数调用支持)
-
图像生成模型
-
图像模型 API
-
OpenAI 图像生成
-
StabilityAI图像生成
-
音频模型
-
转录模型
-
OpenAI 转录
-
-
文本转语音 (TTS) 模型
-
OpenAI 文本转语音
-
矢量数据库
-
矢量数据库 API
-
Azure 矢量搜索 - Azure 矢量存储。
-
ChromaVectorStore - 色度矢量存储。
-
MilvusVectorStore - Milvus 向量库。
-
Neo4jVectorStore - Neo4j 向量存储.
-
PgVectorStore - PostgreSQL/PGVector 向量存储。
-
PineconeVectorStore - PineCone 矢量存储.
-
QdrantVectorStore - Qdrant 矢量存储.
-
RedisVectorStore - Redis 矢量存储。
-
WeaviateVectorStore - Weaviate 向量存储。
-
SimpleVectorStore - 持久性矢量存储的简单(内存中)实现,适用于教育目的.
-
示例项目
您可以在 GitHub 上克隆这些项目以开始使用。