在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中包含什么内容:
1.1 event.AiServiceRegisteredEvent
这个类实现了ApplicationEvent,它的作用是当一个AiService被注册时触发的事件。
1.2 @AiService
本篇主要需使用的注解,作用是将一个接口标记为AiService,通过这个注解可以将一个接口转换为一个AiServ编程客栈ice对象,这个对象可以用于调用langchain4j提供的各种功能。
1.3 AiServiceFactory
AiServiceFactory类实现了FactoryBean接口,表示这是一个Spring工厂Bean,包含了AiService的各种依赖组件和配置,可以通过这个方法创建AiService对象。
1.4 ClassPathAiServiceScanner
这个类的主要功能是扫描类路径中的Bean定义,并筛选出带有AiService注解的接口
1.5 AiServiceScannerProcessor
这个类实现了BeanDefinitionRegistryPostProcessor接口,主要功能是负责定义扫描当前项目的类路径,移除不需要的AiService配置。
1.6 AiServicesAutoConfig
这个类主要功能是将上下文中的所有组件用于配置和注册AiService的Bean,并在完成后发布相关注册的事件。
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调用接口进行测试:
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内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论