当前位置: 首页 > news >正文

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方法一样简单

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

http://www.jsqmd.com/news/275388/

相关文章:

  • 谁需要迪士尼验厂与FAMA
  • 莫凡电视的核心优势——聚焦全国地方台全量覆盖
  • 企业微信外部群主动推送消息全攻略
  • 紫外荧光精准测硫,后处理系统开发利器:MEXA-1170SX硫黄分析装置项目实战全解
  • 企业微信API:如何合规实现外部群主动消息推送?
  • odoo-094 self.env 主要属性和方法
  • Vue3-14 watch监视对象及对象属性
  • 活字格低代码:破解企业数据孤岛难题,加速数字化转型进程
  • 深度学习计算机毕设之卷神经网络基于python-cnn深度学习识别水果是否成熟
  • 亲测好用!专科生毕业论文必备TOP8 AI论文工具
  • AI风险模型揭秘:“香港巴菲特”谢清海1/4资产投入黄金的量化验证——硬资产如何重构财富安全边界
  • 黄金价格2026:世界黄金协会多因子模型揭示四大核心驱动力的贝叶斯预测
  • 分享|大数据挖掘建模平台教学方向及科研方向
  • 初中水平的安徽农民:张祥前统一场论从哲学公设到技术应用的完整体系
  • 食品检测仪器的技术演进与应用价值深度解析
  • astmd4169振动测试
  • day6 242、349、202、1
  • 重磅回归!MX Linux 25.1 Infinity 发布,单 ISO 双 Init 并存
  • 大数据毕设选题推荐:基于Python的电影受众数据分析及可视化系统设计与实现基于python的电影受众群体特征研究【附源码、mysql、文档、调试+代码讲解+全bao等】
  • TV电视影视大全:流畅观影背后的核心技术解析
  • 微信开发api文档
  • 2026必备!继续教育TOP10 AI论文工具测评与推荐
  • 2026年深圳燃气热水器维修售后服务专业度深度评测报告 百乐满维修电话、百乐满售后电话、百乐满报修电话、百乐满官网
  • 5款AI PPT工具测评:免费又实用,这几款工具值得推荐!
  • PVC字牌定制全解析:快速、免费、精准,如何满足您的商业标识需求?
  • 什么是视频重保
  • Day24-20260120
  • ESD管老化后防护能力会断崖式下跌?
  • 【毕业设计】基于python的电影受众群体特征研究(源码+文档+远程调试,全bao定制等)
  • 招工小程序开发全解析:精准匹配+高并发支撑+合规风控