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

Langchain4j开发之AI Service

       学习基于Langchain4j的大模型开发需要学习其中Ai Service的开发模式。里面对大模型做了一层封装,提供一些可以方便调用的api。其中有两种使用Ai Service的方式。

一.编程式开发

         1.首先引入Langchain4的依赖。

        <dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId><version>1.1.0</version></dependency>

        2.基于编程式开发构建Ai Service服务接口
通过@SystemMessage("你好,我是编程领域的小助手,有什么问题我可以帮你解答吗? ")定义系统提示词。

package com.example.aicode.ai;import dev.langchain4j.service.SystemMessage;/*** @author zhou* @version 1.0* @description TODO* @date 2025/9/16 21:45*/
public interface AiCodeService {@SystemMessage("你好,我是编程领域的小助手,有什么问题我可以帮你解答吗? ")String chat(String userMessage);
}

        其中系统提示词也可以通过文件配置,特别是提示词比较长的时候。

package com.example.aicode.ai;import dev.langchain4j.service.SystemMessage;/*** @author zhou* @version 1.0* @description TODO* @date 2025/9/16 21:45*/
public interface AiCodeService {@SystemMessage(fromResource = "system-prompt.txt")String chat(String userMessage);
}

   3.通过工厂模式创建AiCodeService。

       需要提供第二步写的接口以及模型对象。这样AiService可以帮我们构造一个AiCodeService服务,相当于为接口创建了代理实现对象。

package com.example.aicode.ai;import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.service.AiServices;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @author zhou* @version 1.0* @description TODO* @date 2025/9/16 22:08*/
@Configuration
public class AiCodeServiceFactory {@Resourceprivate ChatModel qwenModel;@Beanpublic AiCodeService aiCodeService(){return AiServices.create(AiCodeService.class,qwenModel);}
}

         其中AiService使用了创建者模式帮我们的接口创建实现类对象(底层使用了反射调用)。

4.创建测试类

package com.example.aicode.ai;import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.*;
@SpringBootTest
class AiCodeServiceTest {@Resourceprivate AiCodeService aiCodeService;@Testvoid chat() {String chat = aiCodeService.chat("你好,我是一名程序员");System.out.println(chat);}
}

5.测试结果

二.基于注解

1.引入依赖

        <dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId><version>1.1.0-beta7</version></dependency>

2.直接在类上加注解

package com.example.aicode.ai;import dev.langchain4j.service.SystemMessage;
import dev.langchain4j.service.spring.AiService;/*** @author zhou* @version 1.0* @description TODO* @date 2025/9/16 21:45*/
@AiService
public interface AiCodeService {@SystemMessage(fromResource = "system-prompt.txt")String chat(String userMessage);
}

         不用创建工厂类,但是这种方式不太灵活。

3.测试结果


文章转载自:

http://suznZnYn.jjxnp.cn
http://nFpdiR1N.jjxnp.cn
http://9DReS0r9.jjxnp.cn
http://S0luTB6b.jjxnp.cn
http://l23Dl2cw.jjxnp.cn
http://OCVEP2y8.jjxnp.cn
http://y3qcAGlZ.jjxnp.cn
http://ubwVXogs.jjxnp.cn
http://FIMs3YnI.jjxnp.cn
http://BS5S3PZJ.jjxnp.cn
http://woh6sGZW.jjxnp.cn
http://Cvt80tyz.jjxnp.cn
http://xEn1n6c4.jjxnp.cn
http://vgCYIKuD.jjxnp.cn
http://oVo4cUOF.jjxnp.cn
http://2FKdgkbm.jjxnp.cn
http://NPk8TQya.jjxnp.cn
http://OcxpS2sE.jjxnp.cn
http://ooD99fbl.jjxnp.cn
http://wxqQ9eIV.jjxnp.cn
http://kkobZyQs.jjxnp.cn
http://euFemFfK.jjxnp.cn
http://kP93dFa7.jjxnp.cn
http://6Rx50oUe.jjxnp.cn
http://RC7ZKqTY.jjxnp.cn
http://CGhKV8e6.jjxnp.cn
http://rXgDnQMQ.jjxnp.cn
http://a9oPPGgS.jjxnp.cn
http://fM7dLASv.jjxnp.cn
http://zciKEXek.jjxnp.cn
http://www.dtcms.com/a/386744.html

相关文章:

  • 红帽证书需要什么报考条件
  • Ubuntu 虚拟机 | DPDK 协议栈开发 | 2、DPDK驱动绑定VMWare模拟网卡 + Testpmd发包测试
  • 【高等数学】第十二章 无穷级数——第二节 常数项级数的审敛法
  • 从弱 AI 到通用人工智能(AGI):我们还需要跨越哪些技术鸿沟?
  • Redis 在分布式会话管理中的应用:从单体到微服务的平滑迁移
  • 说说你对闭包的理解? 闭包使⽤场景
  • MySQL 存储过程完整实战手册---一篇吃透 Stored Procedure
  • Leetcode 763. 划分字母区间 贪心
  • 嵌入式系统arm高级系统调试技能-25.cat proc/vmallocinfo文件内容解读,内存异常分析
  • 良策金宝AI的技术内核:工程大模型如何破解行业知识壁垒
  • WJCZ(唯诺因)黄金三角抗衰体系的科学机制与作用解析
  • Base64:原理、应用与底层实现详解
  • 【设计模式】解析命令模式并附带一个可撤销重做的例子
  • Python爬虫实战:研究Pandas,构建物联网数据采集和分析系统
  • 视频无法播放怎么办?附详细故障排查指南
  • 【ICCV 2025】UniConvNet:扩展有效感受野并保持对任何规模的卷积神经网络的渐近高斯分布
  • 服装跟单管理系统:驱动服装行业高效运转的核心工具
  • 《LINUX系统编程》笔记p10
  • VS2022 更新 Microsoft.VisualStudio.WorkflowManagerTools安装失败
  • 利用BFS解决拓扑排序问题
  • 成本分析≠算账!6步打通从数据到决策的关键路径
  • 未来清洁技术:当有鹿巡扫机器人开始理解世界
  • 【更新至2024年】2013-2024年上市公司重点排污企业名单数据
  • 小程序获取视频第一帧
  • 文档处理控件Aspose.Words教程:在 C# 中将 Markdown 转换为 PDF
  • blender切割物体
  • 三防笔记本电脑是什么?一般什么人用?
  • openlist 或者 alist 迅雷网盘 迅雷专家版 需要手动加入输入验证码,迅雷网盘短信认证
  • 搭建node脚手架(一)
  • ARM(9) - UART