什么是LangChain4j
LangChain4j 是一个 Java 框架,简化了构建由大型语言模型(LLM)驱动的应用程序。可以把它看作是你的 Java 应用与 OpenAI 的 GPT、Claude 或开源替代品等 AI 模型之间的桥梁。LangChain4j 无需编写复杂的代码来与这些 AI 模型交互,而是提供简洁易用的 API,帮你完成所有繁重的工作。
为什么使用LangChain4j
- 提供了统计的API接口,可以接入多家AI提供商。
- 现成的AI模块构建,例如:
提示词模板
聊天记忆
函数调用
RAG - 强大的社区支持
总之,它就像spring简化了之前的java开发一样,LangChain4j简化了我们对于AI的开发。
LanChain4j 与 LanChain
它们都是可以快速帮你构建AI应用的框架,只是他们针对的编程语言和生态不同。
LanChain是为Python、JavaScript开发者开发的框架。
LanChain4j是为了Java开发者开发的框架。
LanChain的生态系统更为强大,LanChain4j并不是移植的LanChain,它是遵循Java开发规范的、适合Java开发者构建AI应用的最佳框架。
构建第一个LanChain4j应用
项目结构
java
langchain4j-started
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── xianchaye
│ │ └── langchain4j
│ │ ├── LangChain4jStartedApplication.java #启动类
│ │ ├── controller
│ │ │ └── ChatController.java #Rest API
│ │ └── dto
│ │ ├── ChatRequest.java #用户输入
│ │ └── ChatResponse.java #LLM输出
│ └── resources
│ └── application.yml #配置
maven依赖
xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.5.9</version>
</parent>
<properties>
<java.version>17</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>3.5.9</spring-boot.version>
<langchain4j.version>1.10.0</langchain4j.version>
</properties>
<dependencies>
<!-- Spring Boot Web for REST endpoints -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- LangChain4j OpenAI Spring Boot Starter -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- LangChain4j BOM -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-bom</artifactId>
<version>${langchain4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
配置文件
yml
spring:
application:
name: langchain4j-started #服务名称
langchain4j:
open-ai:
chat-model:
base-url: https://api.deepseek.com #模型API请求地址,根据自己使用的替换
api-key: ${DEEPSEEK_API_KEY:sk-xxxxx} #模型API对应的API_KEY
model-name: deepseek-chat #模型名称
log-requests: true #模型请求日志,调试时建议开启
log-responses: true #模型响应日志,调试时建议开启
程序代码
启动类
java
@SpringBootApplication
public class LangChain4jStartedApplication {
public static void main(String[] args) {
SpringApplication.run(LangChain4jStartedApplication.class, args);
}
}
传输对象(DTO)
java
package com.xianchaye.langchain4j.dto;
//用于接收用户的输入
public record ChatRequest(String message) {
}
java
package com.xianchaye.langchain4j.dto;
//用于LLM输出
public record ChatResponse(String message) {
}
REST API
java
@RestController
@RequestMapping("/api/v1")
public class ChatController {
private final ChatModel chatModel;
public ChatController(ChatModel chatModel) {
this.chatModel = chatModel;
}
@PostMapping("/chat")
public ChatResponse chat(@RequestBody ChatRequest request) {
String aiResponse = chatModel.chat(request.message());
return new ChatResponse(aiResponse);
}
}
测试
启动程序,通过postman或者curl进行调用:
curl
curl --location --request POST 'http://localhost:8080/api/v1/chat' \ --header 'Content-Type: application/json' \ --data-raw '{ "message":"你好,你是谁?" }'
输出:
json
{
"message": "你好!我是DeepSeek,由深度求索公司创造的AI助手!......"
}