欢迎访问我的GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):github.com/zq2599/blog...
关于LangChain4j实战系列
- 《LangChain4j实战系列》是欣宸在AI应用领域的原创,作为一名传统Java后端程序员,在AI时代也应该果断的拥抱新技术,LangChain4j实战系列将带你用 100%可运行的代码走完"入门 → 进阶 → 产线"三级跳,让 AI 真正跑在你的微服务里
关于LangChain4j
-
官方定位:LangChain 的 Java 实现。
-
大白话:把"提示模板 → 模型调用 → 结果解析 → 工具链 → 记忆存储"封装成Java接口,让你像写MyBatis Mapper一样实现AI能力。
-
核心模块说明:
| 模块 | 说明 | 类比 |
|---|---|---|
| langchain4j-core | 统一 API:模型、消息、提示、输出解析器 | 规范,类似JDBC |
| langchain4j-openai / langchain4j-zhipu | 各家模型"方言"实现 | 类似mysql的mysql-driver |
| langchain4j-spring-boot-starter | 自动配置 + 配置属性 | 和spring-boot的各类starter一样的starter |
| langchain4j-easy-rag | 少量代码搞定私域文档索引 | 类似spring-data-jpa |
| langchain4j-tools | 让模型直接调用你的 @Service 方法 | 类似FeignClient |
| langchain4j-memory | 对话记忆、窗口缓存、长期存储 | 类似Spring-Session |
为什么需要LangChain4j?
- 如果您之前使用过OpenAI的SDK,应该会疑惑:官方有SDK呀,我要调用OpenAI服务那就使用官方SDK呗,为啥还要使用LangChain4j呢?
- 其实,官方 SDK 只解决"调模型",LangChain4j 解决"搭系统",首先就是多模型切换,接入和调试多个模型的SDK费时费力,但是对LangChain4j来说却只是配置的区别,其他差异都被屏蔽了
- 另外,LangChain4j内置ChatMemory,解决了多轮对话记忆问题,无需自己写代码维护
- 在私域知识问答方面,LangChain4j也提供了API支持,避免自己实现这个过程:embedding → 存向量库 → 查 TopK → 拼 prompt
- 在模型调用外部API、生产可观测(用量、延迟、异常等)这些方面,LangChain4j也有现成方案,无需自己动手实现
本篇概览
- 作为《LangChain4j实战系列》的开篇,咋们先不急着写代码,而是做好准备工作,把后面实战所需的东西都提前备好,主要有这些
- 版本,开发设计的各类软件和库的版本对齐,确保您的开发也能顺利运行
- 大模型相关信息,选好大模型
- 创建工程,整个系列的代码放在一个maven工程中,采用父子结构,本篇把父工程准备好
- 接下来开始正式的准备工作吧,先从版本开始
准备工作一:版本对齐
- 实战设计的软件和库,具体版本情况如下:
- 电脑系统:macOS Tahoe26.2
- JDK:21
- springboot:3.3.5
- LangChain4j:1.8.0
准备工作二:大模型相关信息(API Key、模型名、调用地址)
- 实战LangChain4j的过程中,需要有稳定可靠的大模型服务被调用,这里选择了通义千问3-max,主要是申请和使用都方便,您可以按自己需要来选择
- 打开阿里云百炼主页,在模型广场选择模型

- 选好模型后,就要去准备代码中用到的三样东西:API Key、模型名、调用地址
- API Key在下图红色箭头位置

- 模型名在打开模型详情页后可以看到

- 模型地址在下图红色箭头位置,点击查看API示例

- 在新的页面就会展示调用地址,如下图红色箭头所示(注意选择第一个SDK调用配置的 base_url)

准备工作三:创建maven工程
- 创建名为langchain4j-totorials的maven工程,pom.xml内容如下
xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bolingcavalry</groupId>
<artifactId>langchain4j-totorials</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<!-- Spring Boot BOM -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>3.3.5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- LangChain4j BOM (Bill of Materials) -->
<!-- BOM只负责版本管理,不会实际引入依赖 -->
<!-- 子模块需要显式声明所需的依赖,但可以省略版本号 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-bom</artifactId>
<version>1.8.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 日志依赖由Spring Boot BOM自动管理,无需在此指定版本 -->
</dependencies>
</dependencyManagement>
<!-- 子模块列表,后面的实战过程中会逐渐添加 -->
<modules>
</modules>
</project>
- 至此,LangChain4j实战系列的准备工作已经完成,接下来会用丰富的编码实战与大家一同学习和掌握LangChain4j,首先会从一次精简的helloworld开始
源码下载(觉得作者啰嗦的,直接在这里下载)
- 如果您只想快速浏览完整源码,可以在GitHub下载代码直接运行,地址和链接信息如下表所示(github.com/zq2599/blog...%25EF%25BC%259A "https://github.com/zq2599/blog_demos)%EF%BC%9A")
| 名称 | 链接 | 备注 |
|---|---|---|
| 项目主页 | github.com/zq2599/blog... | 该项目在GitHub上的主页 |
| git仓库地址(https) | github.com/zq2599/blog... | 该项目源码的仓库地址,https协议 |
| git仓库地址(ssh) | git@github.com:zq2599/blog_demos.git | 该项目源码的仓库地址,ssh协议 |
- 这个git项目中有多个文件夹,本篇的源码在langchain4j-tutorials文件夹下,如下图红色箭头所示:
