使用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助手!......"
}
相关推荐
电商API_180079052479 分钟前
企业ERP进销存场景|京东商品详情接口自动同步方案|凭证鉴权批量调用技术实操
大数据·运维·人工智能·爬虫·数据挖掘·网络爬虫
qizayaoshuap10 分钟前
# ❌ 井字棋 — 鸿蒙ArkTS Minimax AI算法与博弈系统设计
人工智能·算法·华为·harmonyos
雪隐14 分钟前
个人电脑玩AI-13让5060 Ti给你打工——我用 0.9B 小模型终结了"谁来记会议纪要"这个世纪难题
前端·人工智能·后端
-XWB-18 分钟前
【 LLM】Agent Planning 完全指南:8 种纯 LLM 范式 + 8 种混合规划模式详解(一)
人工智能·aigc·学习方法·ai编程
半个落月24 分钟前
用 LangChain JS 做可控写作实验:理解温度参数、提示词与异步调用
javascript·人工智能·后端
Anova.YJ37 分钟前
AI通用能力(二)
人工智能
m沐沐42 分钟前
【深度学习】卷积神经网络 数据增强、保存最优模型实现,详细解读
人工智能·python·深度学习·机器学习·cnn·数据增强
rain_sxr44 分钟前
把多步串起来:Agent 前端编排的状态机与进度可视化
人工智能
硅谷秋水1 小时前
PhyGround:生成式世界模型中的物理推理基准测试
人工智能·深度学习·机器学习·计算机视觉·语言模型
深海鱼肝油ya1 小时前
基于FastAPI的AI智能体Web系统构建(二)
人工智能·fastapi·python开发·异步框架·agent开发