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

LangChain4j +DeepSeek大模型应用开发——3 人工智能服务 AIService

1. 什么是AIService

AIService使用面向接口和动态代理的方式完成程序的编写,更灵活的实现高级功能。

在LangChain4j中我们使用AIService完成复杂操作。底层组件将由AIService进行组装。

  • 为大语言模型格式化输入内容

  • 解析大语言模型的输出结果

它们还支持更高级的功能:

  • 聊天记忆 Chat memory

  • 工具 Tools

  • 检索增强生成 RAG

2.创建AIService

引入依赖
<!--langchain4j高级功能 AI Service-->
<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-spring-boot-starter</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId>
</dependency>
创建接口
package com.zr.javaailangchain4j.assistant;public interface Assistant {String chat(String userMessage);
}
测试用例
@SpringBootTest
public class AIServiceTest {@Autowiredprivate QwenChatModel qwenChatModel;@Testpublic void testChat() {//创建AIServiceAssistant assistant = AiServices.create(Assistant.class, qwenChatModel);//调用service的接口String answer = assistant.chat("Hello");System.out.println(answer);}
}
@AiService

也可以在Assistant接口上添加@AiService注解

package com.zr.javaailangchain4j.assistant;//因为我们在配置文件中同时配置了多个大语言模型,所以需要在这里明确指定(EXPLICIT)模型的beanName(qwenChatModel)
@AiService(wiringMode = EXPLICIT, chatModel = "qwenChatModel")
public interface Assistant {String chat(String userMessage);
}

测试用例中,我们可以直接注入Assistant对象

@Autowired
private Assistant assistant;@Test
public void testAssistant() {String answer = assistant.chat("Hello");System.out.println(answer);
}

工作原理

AiServices会组装Assistant接口以及其他组件,并使用反射机制创建一个实现Assistant接口的代理对象。这个代理对象会处理输入和输出的所有转换工作。在这个例子中,chat方法的输入是一个字符串,但是大模型需要一个UserMessage对象。所以,代理对象将这个字符串转换为UserMessage,并调用聊天语言模型。chat方法的输出类型也是字符串,但是大模型返回的是 AiMessage 对象,代理对象会将其转换为字符串。

简单理解就是:代理对象的作用是输入转换和输出转换

相关文章:

  • 制药领域的技术革命:Profinet转CanOpen网关大放异彩
  • alibaba的EasyExcel导出合并单元格,超简单
  • 深度相机(一)——深度相机模型及用途介绍
  • 天梯——算式拆分
  • 在g2o图优化框架中,顶点(Vertex)和边(Edge)的定义与功能的区别
  • SAP-ABAP:ABAP内存:SAP开发中的数据暂存利器解析
  • V Rising 夜族崛起 [DLC 解锁] [Steam] [Windows SteamOS]
  • C语言学习路线
  • TypeScript中的函数类型定义与类型约束
  • web服务与Nginx
  • MySQL 主从复制
  • 二叉树的所有路径(回溯算法基础)
  • 蓝牙耳机开发--TWS蓝牙耳机双向通信充电盒设计
  • 滑动窗口模板
  • 《系统分析师-第三阶段—总结(六)》
  • Android Studio学习记录1
  • 软件测试全流程与主流测试方法详解:从理论到实战
  • Rabbitmq下载和安装(Windows系统,百度网盘)
  • 云服务器被黑客攻击应急响应与加固指南(上)
  • Swiper 在 Vue 中的使用指南
  • 外交部官方公众号发布视频:不跪!
  • 对谈|李钧鹏、周忆粟:安德鲁·阿伯特过程社会学的魅力
  • 论法的精神︱张玉敏:知识产权保护要为社会经济文化发展服务
  • 五一假期上海铁路预计发送446万人次,同比增长8.4%
  • 人社部:对个人加大就业补贴支持,对企业加大扩岗支持
  • 李勇已任内蒙古乌兰察布市委副书记,曾在中央编办任职