一、LangChain4j 简介

LangChain4j 是 Java 生态中的 LangChain 实现,是一个用于构建大语言模型(LLM)应用程序的框架。它提供了与各种LLM服务集成的能力,并简化了构建复杂AI应用的过程。

LangChain4j官方文档:Integrations | LangChain4j

1、核心特性

  1. 多模型支持:支持OpenAI、Azure OpenAI、HuggingFace、DeepSeek等多种LLM提供商
  2. 模块化设计:包含多个功能模块,可根据需要单独使用
  3. 简化集成:提供简洁的API与LLM交互
  4. Java原生:专为Java开发者设计,无需学习Python生态

2、主要组件

    1. 模型交互 (Chat Models)
    2. 提示模板 (Prompt Templates)
    3. 记忆管理 (Memory)
    4. 链式调用 (Chains)
    5. 工具集成 (Tools)

3、典型使用场景

  1. 聊天机器人:构建具有记忆功能的对话系统
  2. 文本处理:摘要、翻译、改写等
  3. 问答系统:基于文档的智能问答
  4. 数据提取:从非结构化文本中提取结构化信息
  5. 代码生成:辅助编程和代码解释

注意:本文使用的是jdk17

二、Langchai4j的使用

1、创建一个maven工程,引入Langchai4j依赖

<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><langchain4j.version>1.0.0-beta1</langchain4j.version>
</properties><dependencies><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j</artifactId><version>1.0.0-beta1</version></dependency><!--openai/deepseek大模型依赖--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId><version>${langchain4j.version}</version></dependency><!--阿里千问大模型依赖--><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-dashscope</artifactId><version>${langchain4j.version}</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.11.4</version></dependency>
</dependencies>

2、 创建一个单元测试类,使用各个大模型提示提问:

import dev.langchain4j.community.model.dashscope.QwenChatModel;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.junit.jupiter.api.Test;/*** @author: * @Desc:大模型接入测试* @create: 2025-07-12 14:14**/
public class Langchain4jDemo {//chatgpt大模型@Testvoid test() {ChatLanguageModel model = OpenAiChatModel.builder().apiKey("demo").modelName("gpt-4o-mini").build();String answer = model.chat("你好,你是谁?");System.out.println(answer);}//deepseek大模型@Testvoid testDeepSeek(){ChatLanguageModel model = OpenAiChatModel.builder().baseUrl("https://api.deepseek.com").apiKey("your key").modelName("deepseek-reasoner").build();String answer = model.chat("你好,你是谁?");System.out.println(answer);}//阿里千问大模型@Testvoid testQwenAi(){ChatLanguageModel model = QwenChatModel.builder()//.baseUrl("https://dashscope.aliyuncs.com").apiKey("your key").modelName("qwen-max").build();String answer = model.chat("你好,你是谁?");System.out.println(answer);}}

3、注意事项:

1.本文使用的Langchai4j的1.0.0-beta1版本,该版本为了降低Langchai4j的门槛,提供一个demo的apiKey,如果key为demo,请求将发送到http://langchain4j.dev/demo/openai/v1进行访问openai,后面的版本去掉这一处理,国内无法直接访问openai; 

2.deepseek跟openai使用同一接口规范,因此如果引入了langchain4j-open-ai的依赖

使用deepseek不用再单独引入deepseek的依赖。构建的方式也跟openai一样,使用

ChatLanguageModel model = OpenAiChatModel.builder()

来进行构建,使用deepseek需要到官网DeepSeek | 深度求索首页右上角的API开放平台创建apikey并进行充值才可以使用;

3.使用阿里千问,需引入专门的依赖:

<dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-community-dashscope</artifactId><version>${langchain4j.version}</version>
</dependency>

在使用前需要到阿里云百炼:大模型服务平台百炼控制台 注册账号创建apikey,有免费额度,

拿到key后进行编码开发,构建方式需要使用千问的类进行:

ChatLanguageModel model = QwenChatModel.builder()

运行后分别输出:

1、openai

你好!我是一个人工智能助手,旨在回答问题和提供信息。有任何你想了解的内容吗?

2、deepseek,deepseek响应较慢,等待时间较长

你好呀!👋我是 **DeepSeek-R1**,是由中国的 **深度求索公司(DeepSeek)** 开发的一款智能助手。你可以把我当作一个知识丰富、乐于助人的AI伙伴~无论是学习、工作、写作、编程,还是生活琐事、情感倾诉,我都可以尽力帮上忙!

✨我的特点包括:
- **免费使用**(目前完全免费,没有收费计划)
- **超长记忆上下文**(最多可处理128K字符)
- **文件阅读能力**(支持上传PDF、Word、Excel、PPT等文件)
- **联网搜索**(部分平台支持联网获取最新信息)
- **逻辑推理强**,尤其擅长数学、编程、写作类任务

如果你愿意的话,可以把我当作一个24小时在线的朋友~  
😊那今天有什么我可以帮你的吗?

3、阿里千问:

你好!我是Qwen,这是我的英文名,你也可以叫我通义千问。我是阿里云自主研发的超大规模语言模型,能够回答问题、创作文字,还能表达观点、撰写代码。如果您有任何问题或需要帮助,请随时告诉我,我会尽力提供支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/88835.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/88835.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/88835.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux —— A / 基础指令

建议学习路径&#xff1a;Linux系统与系统编程 ⇒ Linux网络和网络编程 ⇒ MySQL一、初识shell命令 1.1、关于 Linux 桌面很多同学的 Linux 启动进⼊图形化的桌⾯. 这个东西⼤家以后就可以忘记了。以后的工作中没有机会使用图形界面。思考: 为什么不使用图形界面? 1.2、下…

[论文阅读] 人工智能 + 软件工程 | 用大语言模型+排名机制,让代码评论自动更新更靠谱

LLMCup&#xff1a;用大语言模型排名机制&#xff0c;让代码评论自动更新更靠谱 LLMCup: Ranking-Enhanced Comment Updating with LLMsarXiv:2507.08671 LLMCup: Ranking-Enhanced Comment Updating with LLMs Hua Ge, Juan Zhai, Minxue Pan, Fusen He, Ziyue Tan Comments: …

悲观锁 乐观锁

悲观锁 乐观锁 在没有加锁的秒杀场景下 每秒打进来的请求是巨大的 高并发场景下 我们发现不仅异常率高的可怕 库存竟然还变成了负数 这产生的结果肯定是很大损失的 那为什么会出现超卖问题呢 我们假设有下面两个线程线程1查询库存&#xff0c;发现库存充足&#xff0c;创建订单…

如何使用Cisco DevNet提供的免费ACI学习实验室(Learning Labs)?(Grok3 回答)

Cisco DevNet 提供的免费 ACI&#xff08;Application Centric Infrastructure&#xff09;学习实验室&#xff08;Learning Labs&#xff09;是帮助用户学习和实践 Cisco ACI 技术&#xff08;包括 APIC 控制器&#xff09;的优秀资源&#xff0c;适合网络工程师、开发者和准备…

Combine的介绍与使用

目录一、Combine 框架介绍二、核心概念三、基础使用示例3.1、创建 Publisher & 订阅3.2、操作符链式调用3.3、Subject 使用&#xff08;手动发送值&#xff09;3.4、网络请求处理3.5、组合多个 Publisher3.6、错误处理四、核心操作符速查表 Operator五、UIKit 绑定示例六、…

【Java笔记】七大排序

目录1. 直接插入排序2. 希尔排序3. 选择排序4. 堆排序(重要)5. 冒泡排序6. 快速排序&#xff08;重要&#xff09;6.1 Hoare 法6.1.1 Hoare 法优化6.2 挖坑法&#xff08;重点&#xff09;6.3 快速排序的非递归写法7. 归并排序海量数据的排序问题8. 总结1. 直接插入排序 时间复…

H.264编解码(NAL)

在我们的日常生活中&#xff0c;比如有缓存电影或者是发送视频的需求。如果没有视频压缩&#xff0c;一部手机只能存几分钟视频&#xff0c;1TB 硬盘也装不下几部电影&#xff0c;用 4G 网络发一段 1 分钟视频&#xff0c;可能需要几十分钟&#xff08;甚至传不完&#xff09;&…

新手向:Python自动化办公批量重命名与整理文件系统

本文将详细介绍如何使用Python实现一个强大的文件批量重命名与整理工具&#xff0c;帮助开发者自动化这一繁琐过程。本教程面向Python初学者&#xff0c;通过一个完整的项目案例&#xff0c;讲解文件系统操作的核心技术。我们将构建的工具将具备以下功能&#xff1a;基于正则表…

C++ 左值右值、左值引用右值引用、integral_constant、integral_constant的元模板使用案例

C 左值右值、左值引用右值引用、integral_constant、integral_constant的元模板使用案例一、左值右值1.左值2.右值二、左值引用右值引用1.左值引用2.右值引用总结三、integral_constant四、integral_constant的元模板使用案例1.求最大整数2.内存对齐alignof关键字元模板计算内存…

c++算法一

1.双指针总结&#xff1a;1.复写0这道题&#xff0c;告诉我们要正难其反&#xff0c;我们从后向前进行重写&#xff0c;删除某些数字的时候&#xff0c;我们可以从前向后遍历&#xff0c;但是增加一些数字的时候会对后面的数据进行覆盖&#xff0c;所以要从后向前进行2.快乐数涉…

LeetCode-283. 移动零(Java)

283. 移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2: 输入: n…

【数据库】慢SQL优化 - MYSQL

一、数据库故障的关键点 引起数据库故障的因素有操作系统层面、存储层面&#xff0c;还有断电断网的基础环境层面&#xff08;以下称为外部因素&#xff09;&#xff0c;以及应用程序操作数据库和人为操作数据库这两个层面&#xff08;以下称内部因素&#xff09;。这些故障中外…

桶排序算法深度剖析

&#x1f50d; 桶排序算法深度剖析 &#x1f3af; 核心原理图解⚙️ 完整算法流程 #mermaid-svg-LyB6SpaZ132X4Wtn {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-LyB6SpaZ132X4Wtn .error-icon{fill:#552222;}#mer…

对S32K144做的BMS安装快速开发Simulink库及BMS例程介绍

前言 本章介绍BMS硬件功能及SimuLink库为主&#xff0c;捎带介绍一些例程内容 注意&#xff1a;例程所用的协议均是自定义的 自做的SimuLink库也会不定期更新 BMS例程的内容不定期维护添加 当前的BMS没有主动均衡功能&#xff0c;这个有考虑后期加上&#xff0c;当前还处于…

urlencode、html实体编码、unicode

目录 urlencode html实体编码 Unicode编码 urlencode URL编码也称为百分号编码&#xff0c;用于将URL中的特殊字符转换为安全传输的格式。英文数字一般不编码 特点&#xff1a; 使用%后跟两个十六进制数字表示字符 空格编码为或%20 保留字符&#xff08;; / ? : & …

【HarmonyOS】元服务概念详解

【HarmonyOS】元服务概念详解 最近几年&#xff0c;我们手里的设备越来越多——手机、平板、手表、车机……光是管理这些设备上的APP就够头疼了&#xff1a;下载要流量、安装占内存、换个设备又得重新弄一遍。有没有更简单的方式&#xff1f;HarmonyOS推出的“元服务”&#xf…

vscode/cursor怎么自定义文字、行高、颜色

JetBrains Mono: A free and open source typeface for developers | JetBrains: Developer Tools for Professionals and Teams 首先下载上面的文字&#xff0c;然后右键全选&#xff0c;安装 然后重启cursor 下载插件Apc Customize UI 点击设置 把下面的代码复制进去&…

JavaScript 与 C语言基础知识差别

一&#xff0c; 变量声明对比 C语言&#xff1a; int age 20; // 必须指定类型 float price 9.99; char grade A; const double PI 3.14; // 常量JavaScript&#xff1a; let age 20; // 数字 var price 9.99; // 现在不用&#xff0c;有缺点 co…

无缝矩阵支持音频分离带画面分割功能的全面解析

一、技术原理与实现方式1. 音频分离技术核心功能&#xff1a;HDMI无缝矩阵通过硬件或软件实现音频加嵌与分离功能&#xff0c;支持多设备音频的独立处理与增强。实现方式&#xff1a;音频加嵌&#xff1a;将外部音频信号&#xff08;如麦克风、调音台&#xff09;嵌入HDMI信号中…

AI创作系列第18篇:海狸IM移动端UI统一大升级 - 从混乱到规范的技术重构之路

AI创作系列第18篇&#xff1a;海狸IM移动端UI统一大升级 - 从混乱到规范的技术重构之路本文是海狸IM AI创作系列的第18篇文章&#xff0c;记录7月11日-13日周末期间对移动端的UI统一升级工作。这次重构不是功能性的&#xff0c;而是架构性的 - 我们重新设计了整个UI架构&#x…