news 2026/7/4 3:22:29

5.AiServices工具类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5.AiServices工具类

目录

一.为什么要学习这个工具类?

二.使用步骤

1.引入依赖

2.声明接口

3.使用AiServices为接口创建代理对象

方式①:编写配置类

方式②:使用注解

4.在Controller中注入并使用

三.运行项目,测试效果

四.解释一下上面的ConsultantService接口


一.为什么要学习这个工具类?

我们之前学过下图所示的方式,实现在java项目中调用大模型。

但是这种方法有很大缺点,不能实现后续的高阶内容(比如会话记忆等等)。

因此要学习AiServices工具类,才能实现后面的高阶内容。

二.使用步骤

1.引入依赖

<!--AiServices相关的依赖--> <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-spring-boot-starter</artifactId> <version>1.0.1-beta6</version> </dependency>

2.声明接口

//思考:为什么这个接口叫ConsultantService? //答案:翻译成“咨询顾问接口”,说白了这个接口是负责回答用户提问的问题的 public interface ConsultantService { //用于聊天的方法 public String chat(String message); }

3.使用AiServices为接口创建代理对象

方式①:编写配置类

先新建一个配置类

写代码

@Configuration public class CommonConfig { @Autowired private OpenAiChatModel model; @Bean public ConsultantService consultantService(){ ConsultantService consultantService = AiServices.builder(ConsultantService.class) .chatModel(model) .build(); return consultantService; } }

方式②:使用注解

由于目前处于学习阶段,所以我们推荐使用手动装配,这样能更清晰自己做了什么。

4.在Controller中注入并使用

@RestController @RequestMapping("/api/chat") public class ChatController { //注入刚才创建的咨询接口 @Autowired private ConsultantService consultantService; @GetMapping("/chat") public String chat(String message){ String result = consultantService.chat(message); return result; } }

三.运行项目,测试效果

可见此时运行成功!

四.解释一下上面的ConsultantService接口

@AiService( wiringMode = AiServiceWiringMode.EXPLICIT,//手动装配 chatModel = "openAiChatModel"//指定模型 ) //@AiService //自动装配 public interface ConsultantService { //用于聊天的方法 public String chat(String message); }

解释上面的代码:

@AiService 注解:把Java接口变成AI服务

作用:标记接口为AI服务,自动实现AI调用

两个关键参数

  1. wiringMode = EXPLICIT- 手动配置依赖(避免自动装配混乱)

  2. chatModel = "openAiChatModel"- 指定使用OpenAI模型

效果:接口中的每个方法都变成AI功能调用点

使用示例

java

@AiService(wiringMode=EXPLICIT, chatModel="openAiChatModel") public interface ConsultantService { String chat(String message); // 直接调用AI聊天 }

本质:让调用AI像调用普通Java方法一样简单

以上就是本篇文章的全部内容,喜欢的话可以留个免费的关注呦~~~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/3 16:37:16

(模型量化学习)基础准备

1.FLOPS&#xff08;大写&#xff09;和TOPSFLOPS指的是一秒钟可以处理的浮动小数点运算次数,而TOPS是一秒钟可以处理了的整形运算次数的能力&#xff0c;衡量计算机硬件性能&#xff0c;计算能力的一个单位。注意FLOPS与FLOPs不同&#xff0c;FLOPs是衡量模型大小的一个指标。…

作者头像 李华
网站建设 2026/6/26 13:15:50

巴菲特的市场周期理解

巴菲特的市场周期理解 关键词:巴菲特、市场周期、价值投资、市场波动、长期投资、风险评估、投资策略 摘要:本文深入探讨了巴菲特对市场周期的理解。从背景介绍入手,阐述研究目的、预期读者、文档结构及相关术语。接着剖析核心概念,揭示市场周期与巴菲特投资理念的联系,并…

作者头像 李华
网站建设 2026/7/4 2:16:48

astmd4169振动测试

对于astmd4169标准中的振动测试&#xff0c;最关键的一步是根据你的实际运输方式来确定对应的测试谱和测试时间。标准也提供了多种预设的运输场景方案。astmd4169部分运输振动谱卡车运输谱常见测试时间1小时空运谱常见测试时间2小时铁路运输谱测试时间标准根据流通周期DC确定松…

作者头像 李华
网站建设 2026/7/1 1:14:20

AI与PLUS-InVEST模型的土地利用多情景优化及生态系统服务智能模拟研究

工业革命以来&#xff0c;全球城市化与工业化进程加速&#xff0c;土地资源的高强度开发引发人地关系失衡&#xff0c;水土流失、生物多样性锐减、气候调节功能退化等生态危机频发。传统土地利用规划依赖经验驱动或单一模型模拟&#xff0c;难以精准捕捉人类活动与生态系统的复…

作者头像 李华
网站建设 2026/6/29 1:33:21

PHP 异步与多线程 从 TrueAsync 展望未来

RFC TrueAsync 1.7 讨论中有个问题&#xff1a;这个提议会如何与 PHP 核心未来的变化互动&#xff1f;要设计好语言的长期演进&#xff0c;至少得对 PHP 的发展方向有基本判断。本文试图回答这个问题。 TrueAsync 项目不仅是 PHP 核心的 async 改动&#xff0c;还包括回答以下…

作者头像 李华
网站建设 2026/7/1 0:59:35

必看!2026年EOR名义雇主服务TOP5,助力企业高效解决用工问题

在2026年&#xff0c;EOR名义雇主服务在全球市场中扮演着越来越重要的角色。这些服务为企业提供了灵活的用工方案&#xff0c;确保所有操作符合当地法律法规。通过EOR名义雇主服务&#xff0c;企业能够轻松管理全球员工的薪资、税务和合同事务&#xff0c;同时降低用工风险。这…

作者头像 李华