Spring AI教程(二十):依赖管理与Spring AI BOM

在前面的文章中,我们介绍了如何使用Spring CLI和Spring Initializr创建和管理Spring AI项目。本篇文章将进一步探讨如何使用Spring AI的依赖管理功能,以及如何利用Spring AI Bill of Materials(BOM)来简化项目的依赖管理。

依赖管理

依赖管理是确保项目使用正确版本的库和依赖的关键步骤。Spring AI提供了一种简化依赖管理的方法,即通过使用Spring AI BOM。

什么是BOM?

BOM(Bill of Materials)声明了给定Spring AI版本使用的所有依赖项的推荐版本。通过在项目中使用BOM,可以避免手动指定和维护依赖项版本。BOM版本决定了项目中使用的依赖项版本,并确保默认情况下使用支持和测试过的依赖项版本,除非你选择覆盖它们。

使用Maven进行依赖管理

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

然后,你可以添加版本号由BOM管理的具体依赖项:

<dependencies>
    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-openai</artifactId>
    </dependency>
    <!-- 添加其他依赖项 -->
</dependencies>
使用Gradle进行依赖管理

对于Gradle用户,可以利用Gradle(5.0+)对声明依赖约束的Maven BOM的原生支持。在Gradle构建脚本的dependencies部分中添加platform依赖处理方法:

dependencies {
  implementation platform("org.springframework.ai:spring-ai-bom:1.0.0-SNAPSHOT")
  // 使用BOM管理的具体模块的Starter依赖项
  implementation "com.example:spring-ai-openai"
  // 添加其他依赖项
}
添加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,你可以简化项目的依赖管理,确保使用正确版本的依赖项。无论是Maven还是Gradle,Spring AI都提供了便捷的方法来管理依赖项版本,从而提高开发效率和项目的稳定性。

希望这篇文章能帮助你在实际项目中应用这些技术,并激发你更多的创意。下一篇文章中,我们将继续探讨更多实际应用场景和高级功能,帮助你进一步掌握这一强大的工具。

Spring AI教程(二十一):添加特定组件的依赖与模型支持

在前面的文章中,我们介绍了如何使用Spring CLI和Spring Initializr创建和管理Spring AI项目,并讨论了Spring AI的依赖管理方法。这篇文章将详细介绍如何为特定组件添加依赖,以及如何使用Spring AI支持的各种模型。

添加特定组件的依赖

根据你的需求,Spring AI文档提供了不同组件的依赖项,你可以将它们添加到项目的构建系统中。

嵌入模型依赖

以下是一些常见的嵌入模型及其依赖项:

  • OpenAI Embeddings

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-openai-embeddings</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  • Azure OpenAI Embeddings

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-azure-openai-embeddings</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  • Ollama Embeddings

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-ollama-embeddings</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  • ONNX Embeddings

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-onnx-embeddings</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  • PostgresML Embeddings

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-postgresml-embeddings</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  • Bedrock Cohere Embeddings

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-bedrock-cohere-embeddings</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  • Bedrock Titan Embeddings

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-bedrock-titan-embeddings</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  • VertexAI Embeddings

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-vertexai-embeddings</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  • MistralAI Embeddings

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-mistralai-embeddings</artifactId>
        <version>1.0.0</version>
    </dependency>
    
聊天模型依赖

以下是一些常见的聊天模型及其依赖项:

  • OpenAI Chat Completion

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-openai-chat</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  • Microsoft Azure Open AI Chat Completion

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-azure-openai-chat</artifactId>
        <version>1.0.0</version>
    </dependency>
    
  • Ollama Chat Completion

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>spring-ai-ollama-chat</artifactId>
        <version>1.0.0</version>
    </dependency>
    

使用Spring AI支持的模型

Spring AI支持多种嵌入模型和聊天模型,下面是一些使用示例:

嵌入模型使用示例

以下是一个使用OpenAI嵌入模型的示例:

  1. 创建服务类

    import org.springframework.stereotype.Service;
    import com.example.springai.OpenAiEmbeddingService;
    
    @Service
    public class EmbeddingService {
    
        private final OpenAiEmbeddingService embeddingService;
    
        public EmbeddingService(OpenAiEmbeddingService embeddingService) {
            this.embeddingService = embeddingService;
        }
    
        public List<Float> generateEmbedding(String text) {
            return embeddingService.embed(text);
        }
    }
    
  2. 创建控制器

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class EmbeddingController {
    
        @Autowired
        private EmbeddingService embeddingService;
    
        @GetMapping("/generate-embedding")
        public List<Float> generateEmbedding(@RequestParam String text) {
            return embeddingService.generateEmbedding(text);
        }
    }
    
聊天模型使用示例

以下是一个使用OpenAI聊天模型的示例:

  1. 创建服务类

    import org.springframework.stereotype.Service;
    import com.example.springai.OpenAiChatService;
    
    @Service
    public class ChatService {
    
        private final OpenAiChatService chatService;
    
        public ChatService(OpenAiChatService chatService) {
            this.chatService = chatService;
        }
    
        public String chat(String prompt) {
            return chatService.chat(prompt);
        }
    }
    
  2. 创建控制器

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class ChatController {
    
        @Autowired
        private ChatService chatService;
    
        @GetMapping("/chat")
        public String chat(@RequestParam String prompt) {
            return chatService.chat(prompt);
        }
    }
    

结论

通过为特定组件添加依赖,你可以充分利用Spring AI支持的各种嵌入模型和聊天模型。这些示例展示了如何在实际项目中使用这些模型,提高应用程序的智能化水平。希望这篇文章能帮助你在实际项目中应用这些技术,并激发你更多的创意。

下一篇文章中,我们将继续探讨更多实际应用场景和高级功能,帮助你进一步掌握这一强大的工具。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐