开发者

在springboot 中使用 AIService的方法

目录
  • 1.实现原理
    • 1.1 event.AiServiceRegisteredEvent
    • 1.2 @AiService
    • 1.3 AiServiceFactory
    • 1.4 ClassPathAiServiceScanner
    • 1.5 AiServiceScannerProcessor
    • 1.6 AiServicesAutoConfig
  • 2.AiService的简单实现
    • 2.1 配置文件
    • 2.2 定义接口
  • 3. 使用AiService
    • 4. 测试一下
      • 5. 在项目中使用多个模型
        • 5.1 pom.XML
        • 5.2 配置文件
        • 5.3 定义接口
        • 5.4 使用
      • 6.测试多个AIService

        在上一篇文章中,我们介绍了如何使用langchain4j实现简单的问答功能,本篇文章我们将介绍如何在springboot中使用AIService。

        1.实现原理

        先看下@AiService注解所在的依赖langchain4j-spring-boot-starter中包含什么内容:

        在springboot 中使用 AIService的方法

        1.1 event.AiServiceRegisteredEvent

        这个类实现了ApplicationEvent,它的作用是当一个AiService被注册时触发的事件。

        在springboot 中使用 AIService的方法

        1.2 @AiService

        本篇主要需使用的注解,作用是将一个接口标记为AiService,通过这个注解可以将一个接口转换为一个AiServ编程客栈ice对象,这个对象可以用于调用langchain4j提供的各种功能。

        在springboot 中使用 AIService的方法

        1.3 AiServiceFactory

        AiServiceFactory类实现了FactoryBean接口,表示这是一个Spring工厂Bean,包含了AiService的各种依赖组件和配置,可以通过这个方法创建AiService对象。

        在springboot 中使用 AIService的方法

        1.4 ClassPathAiServiceScanner

        这个类的主要功能是扫描类路径中的Bean定义,并筛选出带有AiService注解的接口

        在springboot 中使用 AIService的方法

        1.5 AiServiceScannerProcessor

        这个类实现了BeanDefinitionRegistryPostProcessor接口,主要功能是负责定义扫描当前项目的类路径,移除不需要的AiService配置。

        在springboot 中使用 AIService的方法

        1.6 AiServicesAutoConfig

        这个类主要功能是将上下文中的所有组件用于配置和注册AiService的Bean,并在完成后发布相关注册的事件。

        在springboot 中使用 AIService的方法

        2.AiService的简单实现

        2.1 配置文件

        langchain4j:
          open-ai:
            chat-modejsl:
                api-key: ${API_KEY}
                base-url: https://api.deepseek.com/v1
                model-name: deepsandroideek-chat
                log-requests: true
                log-responses: true
                temperature: 0.5
                max-tokens: 4096

        2.2 定义接口

        写一个简单的接口,使用@AiService注解标注

        @AiService
        public interface Assistant {
            @SystemMessage("你是一位编程专家,你的名字叫小小明")
            String chat(String userMessage);
        }

        3. 使用AiService

        @RestController
        public class ChatController {
            @Resource
            ChatLanguageModel chatLanguageModel;
            @Resource
            Assistant assistant;
            @GetMapping("/chat")
            public String model(@RequestParam(value = "message") String message) {
                return chatLanguageModel.chat(message);
            }
            @GetMapping("/chatWithService")
            public String service(@RequestParam(value = "message") String message) {
                return assistant.chandroidat(message);
            }
        }

        4. 测试一下

        启动项目,用postman调用接口进行测试:

        在springboot 中使用 AIService的方法

        5. 在项目中使用多个模型

        5.1 pom.xml

        langchain4j支持使用多个模型,我们更新一下pom.xml文件,添加dashscope的依赖。

        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
            <version>${langchain4j.version}</version>
        </dependency>

        5.2 配置文件

        这里我们配置了两个模型,一个是deepseek-chat,一个是qwen-plus。

        langchain4j:
          open-ai:
            chat-model:
              api-key: ${API_KEY}
              base-url: https://api.deepseek.com/v1
              model-name: deepseek-chat
              log-requests: true
              log-responses: true
              temperature: 0.5
              max-tokens: 4096
          community:
            dashscope:
              chat-model:
                api-key: ${API_KEY}
                model-name: qwen-plus
                temperature: 0.5
                max-tokens: 4096
        logging.level.dev.langchain4j: DEBUG

        5.3 定义接口

        然后我们定义两个接口,一个是dashscope的,一个是openai的。

        @AiService(wiringMode = EXPLICIT, chatModel = "qwenChatModel")
        public interface DashscopeAssistant {
            @SystemMessage("你是一位编程专家,名字是kitwww.devze.comty")
            String chat(String userMessage);
        }
        @AiService(wiringMode = EXPLICIT, chatModel = "openAiChatModel")
        public interface DeepseekAssistant {
            @SystemMessage("你是一位画家,名字是tom")
            String chat(String userMessage);
        }

        5.4 使用

        最后我们在controller中注入这两个接口,分别调用。

        @RestController
        public class ChatController {
            @Resource
            DashscopeAssistant dashscopeAssistant;
            @Resource
            DeepseekAssistant deepseekAssistant;
            @GetMapping("/chatWithQwen")
            public String qwen(@RequestParam(value = "message") String message) {
                return dashscopeAssistant.chat(message);
            }
            @GetMapping("/chatWithDeepseek")
            public String deepseek(@RequestParam(value = "message") String message) {
                return deepseekAssistant.chat(message);
            }
        }

        6.测试多个AIService

        在springboot 中使用 AIService的方法

        在springboot 中使用 AIService的方法

        到此这篇关于在springboot 中使用 AIService的文章就介绍到这了,更多相关springboot 使用 AIService内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新开发

        开发排行榜