什么是LangChain和LangChain4j?
LangChain是⼀个⼤模型的开发框架,使⽤ LangChain 框架,程序员可以更好的利⽤⼤模型的能⼒,⼤⼤提⾼编程效率。如果你是⼀个 Java 程序员,那么对 LangChain 最简单直观的理解就是, LangChain 是⼤模型领域的Spring 。 LangChain 不光提供了⼀整套快速接⼊各种开放⼤模型的⼯具,更重要的是,他集成了当今程序员使⽤⼤模型能⼒最好的⽅案。LangChain是⼀个基于 Python 开发的框架,⽽ LangChain4j 则是 LangChain 的 Java 版本。将⼤模型的强⼤能⼒和Java 编程语⾔相结合,这就是 LangChain4j 所做的。实际上, LangChain4j 不光包含了 LangChain 的功能,同时还加⼊了很多⾃⼰的创新。在⽬前阶段, LangChain4j 也是与⼤模型结合最好最成熟的框架。
LangChain4j快速上⼿
快速开始与OpenAI的对话
接下来,我们快速搭建一个spring boot项目来集成LangChain4j,完成与大模型的对话
这里支持多种大模型,每种大模型的依赖都不一样,均提供普通maven和spring两个版本的。大家可以根据自己的需求来添加合适的依赖。
这里以OpenAI为例,因为 Deepseek 的 API 设计与 OpenAI 的 API 兼容,所以调用deepseek默认使用OpenAI的这一套就可以了
首先引入pom依赖
<!-- langchain4j 核心底层-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
</dependency>
<!-- 是langchain4j集成openai的依赖-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
</dependency>

@Test
void contextLoads() {
ChatLanguageModel model = OpenAiChatModel.builder().apiKey("demo")
.modelName("gpt-4o-mini").build();
String result = model.generate("你是哪个");
System.out.println(result);
}
运行结果:

那么接下来我们看看deepseek的使用方法:
如图所示代码没有多大的变化, 前面我们说因为 Deepseek 的 API 设计与 OpenAI 的 API 兼容,所以使用OpenAI的那一套就行。只不过deepseek好像没有默认的apikey,所以只能填入你自己的apikey了,具体可以去deepseek官网查看。
才发现deepseek居然可以充值了。
大模型理解上下文
好了继续我们上面的,从图中可以看出
@Test
public void test2(){
ChatLanguageModel model = OpenAiChatModel.builder().apiKey("demo")
.modelName("gpt-4o-mini").build();
UserMessage userMessage1 = UserMessage.userMessage("你好,你是谁?");
Response<AiMessage> response1 = model.generate(userMessage1);
AiMessage aiMessage1 = response1.content();
System.out.println(aiMessage1.text());
System.out.println("-------");
UserMessage userMessage2 = UserMessage.userMessage("请再重复⼀次");
Response<AiMessage> response2 = model.generate(userMessage1, aiMessage1,
userMessage2);
System.out.println(response2.content().text());
}
这样⼤模型才真正理解了"重复⼀次"的含义。
如图所示:
- UserMessage: ⽤户想要发送给⼤模型的消息。
- AiMessage:代表AI⼤模型⽣成的消息。
- SystemMessage:系统实际发送给AI⼤模型的消息。通常,作为⼀个应⽤开发者,你应该对⽤户提供的消息 进⾏⼀些包装,从⽽让⼤模型能够给出更精确的结果。例如,⽤户想要AI⼤模型帮忙写⼀篇博⽂,可以直接 提"帮我写⼀篇关于AI⼤模型的博⽂"。⽽作为应⽤开发者,通常就可以对提示词进⾏⼀些包装,例如"你是⼀ 个 有多年经验的Java架构师,帮我写⼀篇关于AI⼤模型的博⽂"。后⾯这个包装后的消息就是 SystemMessage,之前没有包装过的就是UserMessage。通常要注意不要让⽤户接触到SystemMessage。
- ToolExecutionResultMessage:⽤户发送给AI⼤模型的⼯具的执⾏结果。 关于LangChain4j中的⼯具,后续 章节会介绍。
如果只是简单的往 generate ⽅法中传⼊⼀个字符串,那么返回结果也是⼀个字符串。但是如果通过 ChatMessage传⼊,那么 generate() ⽅法将返回⼀个封装了 AiMessage 的 Response 对象。在这个对象中不光包含 了响应结果,同时还包含了其他元数据信息,例如token , AI ⼤模型通常都是按照 token 进⾏计费的。
大模型流式响应
在之前的代码中,调用大模型都是整段文字一起出来,这样如果响应慢的话用户体验很不好,
0.31.0
如果大家用不了没有任何输出的话就把版本升级到最新或者采用下方的办法手动添加相关依赖
流式处理需要额外引入http相关的依赖库。不然出不来。
- retrofit2:retrofit(HTTP 客户端)
- retrofit2:converter-jackson(JSON 转换)
- okhttp3:okhttp(网络请求)
- okhttp3:okhttp-sse(Server-Sent Events 支持)
pom文件引入相关依赖
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>converter-jackson</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.12.0</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp-sse</artifactId>
<version>4.12.0</version>
</dependency>
如果可以的话上面的依赖就不需要了,推荐用最新的版本
当前版本限制,使⽤langchain的测试接⼝,返回全是? 。如果要拿到结果,可以直接访问OpenAI。或者使用deepseek,这里我使用deepseek为大家演示。
ModerationModel温和模式

他目前的效果是直接返回了null.
ImageModel⽂⽣图模型
文生图由于我的openaiKey没有钱了这里采用阿里的万象大模型来生成。
首先引入依赖
官方这里提供了前1.0.0-alpha1和1.0.0-alpha1
以及之后的版本:
我在这里试1.0.0-alpha1之后的版本他没有
WanxImageModel模型,所以采用之前的版本来开发。
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-dashscope</artifactId>
<version>${previous version here}</version>
</dependency>
代码如下:我们来让他生成一个美女的图片
WanxImageModel wanxImageModel = WanxImageModel.builder()
.modelName("wanx2.1-t2i-plus")
.apiKey("自己的密钥")
.build();
Response<Image> response = wanxImageModel.generate("美女");
System.out.println(response.content().url());
如上图这里会生成一个网页链接,我们点击他就会下载到本地。
看这个发丝,质量还是非常的高的。
本章总结
- ChatLanguageModel:聊天模型接⼝
- ChatMessage:与AI交互的消息接⼝
- ModerationModel:温和模式交互接⼝
- WanxImageModel:图⽚模型接⼝
好了本期使用maven项目介绍了 LangChain4j的基本使用方法,下期将介绍spring集成LangChain4j。感谢大家的关注,我们下期再见!