使用LangChain4j打造你的第一个AI应用

什么是LangChain4j

LangChain4j 是一个 Java 框架,简化了构建由大型语言模型(LLM)驱动的应用程序。可以把它看作是你的 Java 应用与 OpenAI 的 GPT、Claude 或开源替代品等 AI 模型之间的桥梁。LangChain4j 无需编写复杂的代码来与这些 AI 模型交互,而是提供简洁易用的 API,帮你完成所有繁重的工作。

为什么使用LangChain4j

  1. 提供了统计的API接口,可以接入多家AI提供商。
  2. 现成的AI模块构建,例如:
    提示词模板
    聊天记忆
    函数调用
    RAG
  3. 强大的社区支持

总之,它就像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助手!......"
}
相关推荐
GlobalInfo2 小时前
运动AI市场2026预测:亚太领跑、传感器国产化与5G+边缘计算新机遇
人工智能·5g·边缘计算
AI医影跨模态组学2 小时前
NPJ Digit Med(IF=15.1)河北医科大学第四医院赵群等团队:多模态数字活检用于胃癌隐匿性腹膜转移的术前预测
人工智能·机器学习·医学·医学影像
IT_陈寒2 小时前
React的useEffect把我坑惨了,这种闭包问题谁能想到
前端·人工智能·后端
zero15972 小时前
Python 8天极速入门笔记(大模型工程师专用):第八篇-Python 综合实战|完整大模型调用脚本,8 天成果落地
人工智能·python·ai编程·大模型开发
小付爱coding2 小时前
【AI核心原理30讲】-Transformer架构
人工智能·深度学习·transformer
若尘7972 小时前
【 AI 工作流】
人工智能
码农小白AI2 小时前
AI审核驱动动态预警:IACheck如何重塑环境数据一致性监测与质量管控新模式
大数据·人工智能
Warren2Lynch2 小时前
为什么选择 Flipbook 与 OpenDocs?用户体验分享
人工智能·架构·ux
iNeuOS工业互联网2 小时前
开源:iNeuOS_Doctor,一款基于人工智能在医疗领域的病情咨询及医学影像分析平台,例如CT\X光片\病理成像\诊断病历等
人工智能·开源·制造·智能制造·工业互联网·ineuos