前言
在人工智能技术迅猛发展的今天,大型语言模型(LLM)已成为推动技术创新的核心引擎。从ChatGPT到Gemini,从Claude到文心一言,这些强大的AI模型正在重塑我们与计算机交互的方式,也为开发者提供了前所未有的机遇。然而,如何将这些前沿技术真正落地到实际应用中,构建出真正智能、实用的AI代理(Agent),仍是许多开发者面临的挑战。
Java作为企业级应用开发的主流语言,在全球拥有庞大的开发者生态和丰富的应用场景。LangChain4j正是连接Java世界与AI大模型的桥梁,它让Java开发者能够以熟悉的编程范式,轻松集成各种AI能力到现有系统中。无论是构建智能客服、文档分析工具,还是开发复杂的决策支持系统,LangChain4j都提供了简洁而强大的解决方案。
本文将从实战角度出发,系统介绍如何利用LangChain4j框架对接主流AI大模型,开发具备自主决策能力的智能体。我们将摒弃晦涩的理论说教,专注于可立即应用的实践知识,通过清晰的代码示例和架构设计,带您快速掌握AI智能体开发的核心要领。无论您是Java资深开发者,还是刚接触AI应用编程的新手,都能从本文中获得可直接复用的技术干货
为什么要开发智能体
AI 智能体(AI Agent)是一种能自主感知环境、制定决策并执行任务的智能系统。它基于大语言模型(LLM)构建,具备以下核心能力:
-
自主性:无需人工干预,可独立完成目标(如自动处理邮件、分析数据)。
-
记忆与学习:通过对话历史或外部存储(如向量数据库)积累知识,优化决策。
-
工具调用(Tool Use):能调用 API、运行代码或操作外部系统(如搜索网页、发送消息)。
-
多步推理:拆解复杂任务,规划执行路径(如“订机票→查天气→推荐行程”)。
典型应用包括:
-
个人助手(如自动安排会议、整理文档)
-
企业自动化(如客服机器人、数据分析代理)
-
AI 协同系统(多个智能体分工合作,完成复杂流程)
智能体能 24/7 处理重复性任务(如客服问答、报表生成),比人工响应更快且成本更低。AI 智能体代表了 AI 应用的下一代范式,从“被动响应”转向“主动服务”。开发智能体不仅能解决现实问题,更是企业和开发者拥抱 AI 浪潮的必要选择。借助 Langchain4j 等工具,开发者可以高效构建适应不同场景的智能体,释放 AI 的真正潜力。
SpringAI和Langchain4j
随着大模型(LLM)应用开发的兴起,Java 生态中出现了多个集成 AI 能力的框架,其中 Spring AI 和 Langchain4j 是两个主要选择。两者都致力于简化 AI 集成,但在设计理念、灵活性和适用场景上存在显著差异
Spring AI 是 Spring 官方推出的 AI 集成框架,依托 Spring 生态,提供标准化的 API 来对接 OpenAI、Azure AI、Hugging Face 等大模型。它的主要特点包括:
- 深度集成 Spring:天然支持依赖注入、自动配置,适合 Spring Boot 项目。
- 标准化接口:提供统一的 ChatClient、EmbeddingClient 等抽象,便于切换不同模型供应商。
- 企业友好:与 Spring Security、Spring Data 等组件无缝协作,适合传统企业应用。
但 Spring AI 也存在一些局限性:
- 灵活性较低:高度封装,定制复杂 AI 流程(如 Agent、RAG)较困难。
- Java 专属:无法直接利用 Python 生态的 LangChain 工具链。
- 较新且依赖 Spring:非 Spring 项目集成成本较高。
Langchain4j 是 Java 版的 LangChain,旨在提供与 Python 生态对等的 AI 开发体验。相较于 Spring AI,它的优势包括:
-
更接近 Python LangChain,生态兼容性强,直接借鉴 LangChain 的核心概念(如 Chains、Agents、Tools),方便开发者跨语言复用知识。支持 RAG(检索增强生成)、智能体(Agent)、记忆管理等高级功能,适合复杂 AI 应用。
-
轻量级,不依赖 Spring可作为独立库集成到任何 Java/Kotlin 项目,适用于非 Spring 环境(如 Quarkus、Micronaut)。模块化设计,可按需引入组件,减少依赖膨胀。
-
更灵活的 AI 工作流控制,提供 ConversationMemory、ToolExecutor 等底层 API,方便定制复杂 AI 行为。支持本地模型(如 Ollama)和多种云模型(OpenAI、Gemini、Claude),切换成本低。
-
更活跃的社区和扩展性
由于 LangChain 在 AI 领域的广泛采用,Langchain4j 能更快跟进新功能(如多模态、Agent 编排)。支持自定义工具(Tools)和检索器(Retrievers),适合构建自主 AI 代理
选 Spring AI:适合 Spring 生态的简单 AI 集成(如聊天接口、文本嵌入)。选 Langchain4j:需要复杂 AI 代理(Agent)、RAG 或非 Spring 项目,或希望复用 Python LangChain 经验。总体而言,Langchain4j 在灵活性、功能丰富性和跨平台支持上更具优势,尤其适合需要深度定制 AI 能力的开发者。
Java集成LangChain4j
LangChain4j 官方文档 : https://docs.langchain4j.dev/intro
1.搭建项目
搭建java工厂,导入LangChain4j的基础依赖,其中包括:langchain,SpringBoot,以及基础工具包
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.0</version>
</parent>
<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>5.11.4</junit.version>
<langchain.version>1.0.0-beta1</langchain.version>
<hutool.version>5.8.34</hutool.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-bom</artifactId>
<version>${langchain.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- 常用工具类 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>-->
<!-- langchain4j 基础依赖 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>${langchain.version}</version>
</dependency>
<!--通义千问-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-community-dashscope-spring-boot-starter</artifactId>
</dependency>
<!--Ollama本地大模型-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-ollama-spring-boot-starter</artifactId>
<version>${langchain.version}</version>
</dependency>
<!--互联网搜索API-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-web-search-engine-searchapi</artifactId>
<version>${langchain.version}</version>
</dependency>
<!--RAG知识库-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-easy-rag</artifactId>
<version>${langchain.version}</version>
</dependency>
<!--pgvector向量数据库-->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-pgvector</artifactId>
<version>${langchain.version}</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>Central Repository</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
</repositories>
下面对这些依赖做一些解释
- langchain4j :langchain4j的基础依赖
- langchain4j-community-dashscope-spring-boot-starter :用来对接阿里的灵积平台的依赖,主要是为了使用千问大模型
- langchain4j-ollama-spring-boot-starter :用来对接本地大模型基础依赖
- langchain4j-web-search-engine-searchapi :用来做互联网搜索的基础依赖
- langchain4j-easy-rag :搭建RAG知识库的依赖
- langchain4j-pgvector :向量数据库处理,用来搭建RAG知识库
2.配置大模型
在项目的 application.yaml 文件中配置大模型。我这里使用阿里的 千问 大模型,配置如下
langchain4j:
community:
dashscope: #通义千问
chat-model:
api-key: sk-你的key
#https://bailian.console.aliyun.com/?apiKey=1#/api-key
model-name: qwen-max-latest #模型名字
- api-key : 你需要去阿里百练云平台配置一个秘钥 地址:https://bailian.console.aliyun.com/?apiKey=1#/api-key
- model-name :去百练平台找自己想要的模型名字
3.开发对话智能体
当我们引入 langchain4j-community-dashscope , 并在yml做了相关配置后,自动就会创建:QwenChatModel 模型对象,通过Spring的自动注入即可使用
/**
* @author admin 2025/3/27 9:02
*/
@RestController
@RequestMapping("/chat")
//构造器注入
@RequiredArgsConstructor
public class ChatController {
//注入千问大模型
private final QwenChatModel qwenChatModel;
/**
* 简单对话
*/
@RequestMapping("/low")
public String chat1(@RequestParam String message) {
return qwenChatModel.chat(message);
}
}
测试效果如下:
LangChain4j 对接Ollama本地模型
1.安装本地模型
首先需要在本地安装好Ollama,进入Ollama官网 : https://www.ollama.com/ 找到 download ,根据自己的系统环境下载对应的Ollama安装包,我这里下载的是windows版本
下载好之后双击安装,安装好之后进入到ollama安装目录,使用命令提示符窗口运行命令下载模型比如:deepseek-v1:7b,根据硬件情况选择合适的模型,模型的版本可以在ollama官网查看:https://www.ollama.com/library/deepseek-r1
2.对接本地模型
通过ollama安装好本地模型后,接着需要在yml中配置ollama模型,配置如下
langchain4j:
ollama:
chat-model:
base-url: http://127.0.0.1:11434
model-name: qwen2:7b
- 11434 : 是本地模型的端口
- model-name: qwen2:7b ,这里使用的7b参数的模型
3.创建智能体
当我们引入了:langchain4j-ollama 依赖以及在yml配置了ollama后,默认就会创建OllamaChatModel 模型,直接注入使用即可,如下
@RestController
@RequestMapping("/chat")
@RequiredArgsConstructor
public class ChatController {
private final OllamaChatModel ollamaChatModel;
/**
* 本地模型
*/
@RequestMapping("/ollama")
public String ollama(@RequestParam String message) {
return ollamaChatModel.chat(message);
}
LangChain4j 高级API
LangChain4j 提供了2中编码方式,一种是偏向于更底层的低级API编码方式,这种方式编码会稍显复杂,另外一种是高级API编码方式,它的出现是为了简化大模型的使用,下面我们来试玩一下。
1.创建智能体接口
创建一个 interface ,提供一个对话方法,如下
public interface ChatAssistant {
/**
* 对话方法
* @param userMessage :用户消息
* @return :结果
*/
String chat(String userMessage);
2.创建Controller
然后通过AiServices工具来构建智能体,代码如下
private final QwenChatModel qwenChatModel;
/**
* 通过 AiService
*/
@RequestMapping("/hig")
public String chat2(@RequestParam String message) {
return AiServices.builder(ChatAssistant.class).chatLanguageModel(qwenChatModel).build().chat(message);
}
当然:你现在觉得通过 AiServices构建智能体稍显复杂,但是随着智能体的功能越来越多,通过高级API的编码方式确实会简单不少。如果将 langchain4j和SpringBoot集成将会更加简单。
为了让代码更加规范,我们可以把 AiServices.builder 构建智能体的代码封装到Config中如下
/**
* @author admin 2025/3/28 9:14
*/
@RequiredArgsConstructor
@Configuration
public class AssistantConfig {
/**
* 创建智能体
* @param qwenChatModel :大模型
*/
@Bean
public ChatAssistant chatAssistant(QwenChatModel qwenChatModel){
return AiServices.builder(ChatAssistant.class)
.chatLanguageModel(qwenChatModel)
.build();
}
}
然后在Controller中注入 ChatAssistant chatAssistant 智能体调用 chat 方法即可。
总结
文章先写到这里,本篇文章介绍了 Langchain4j 和其重要性,然后通过Java程序集成Langchain4j实现大模型对接,分别对接了千问模型以及Ollama本地模型。以及Langchain4j 高级API的用法。当然Langchain4j 还有很多很多功能,我们期待下一章。喜欢的话请给个好评,你的鼓励是我最大的动力,点赞破10000,我就是头发掉光,也出下章。