LangChain4j(1):初识LangChain4j

1 什么是LangChain和LangChain4j

LangChain是一个大模型的开发框架,使用LangChain框架,程序员可以更好的利用大模型的能力,大大提高编程效率。如果你是一个lava程序员,那么对LangChain最简单直观的理解就是,LangChain是大模型领域的Spring。LangChain不光提供了一整套快速接入各种开放大模型的工具,更重要的是,他集成了当今程序员使用大模型能力最好的方案。

LangChain是一个基于Python开发的框架,而Langchain4j则是Langchain的]ava版本。将大模型的强大能力和Java编程语言相结合,这就是LangChain4i所做的。实际上,LangChain4i不光包含了LangChain的功能,同时还加入了很多自己的创新。在目前阶段,LangChain4j也是与大模型结合最好最成熟的框架。

要注意的是,大模型本身在快速发展过程中,而如何使用好大模型,这件事,也是在快速发展过程中。学习LangChain4i,不光要学习如何使用框架,更需要从LangChain4i中学习如何使用好各种各样的大模型。

LangChain是最好的框架,但并不是唯一的框架。例如Spring社区也推出了Spring AI框架,也是用来对接大模型的。基于Spring在]ava领域的多年技术积累,Spring AI框架也是非常令人期待的。在LangChain4j之后楼兰也会跟大家详细分享Spring Al框架。

官网地址:LangChain4j | LangChain4j

LangChain4j的目标是简化与 Java 应用程序 集成大模型。

特性:

统- API:LLM提供程序(如 OpenAl 或 阿里百炼)和嵌入(向量)存储(如 redis 或 ES) 使用专有 APl。LangChain4j提供了一个统一的 API,以避免为每个 API 学习和实现特定的 API。要试验不同的LLMs存储或嵌入的存储,您可以在它们之间轻松切换,而无需重新编写代码。LangChain4i日前支持 15+ 热门LLM 和 20+ 嵌入模型。

langchain4jVS springAl

|-------|---------------------|-------------|
| 维度 | Spring Al | LangChain4j |
| 技术栈绑定 | 强依赖 Spring 生态 | 无框架依赖,可独立使用 |
| 适用场景 | SpringBoot应用快速接入单模型 | 多模型(动态模型)平台 |

2 openAI代码实现

引入了langchain4j的核心依赖、langchain4j集成OpenAi各个模型的依赖。

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<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>org.example</groupId>
    <artifactId>langChain4Jpro</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <langchin4j.version>1.0.0-beta1</langchin4j.version>
    </properties>

    <dependencies>
        <!--langchain核心-->
        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j</artifactId>
            <version>${langchin4j.version}</version>
        </dependency>
        <!--open ai-->
        <dependency>
            <groupId>dev.langchain4j</groupId>
            <artifactId>langchain4j-open-ai</artifactId>
            <version>${langchin4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.11.4</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

代码如下:

复制代码
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.junit.jupiter.api.Test;

public class langchain4jDemoApplicatonTest {
    @Test
    void test01(){
        ChatLanguageModel model = OpenAiChatModel
                .builder()
                .apiKey("demo")
                .modelName("gpt-4o-mini")
                .build();

        String answer = model.chat("你好,你是谁?");
        System.out.println(answer);
    }

}

运行结果如下:

以上代码可以看出LangChain4j对于初次接入大模型的开发者来说十分友好,不需要指定模型,不需要指定apikey即可对接大模型进行对话,对ApiKey为"demo底层,如下图:

在底层在构造OpenAiChatModel时,会判断传入的ApiKey是否等于""demo",如果等于会将OpenAi的原始API地址"https://api.openai.com/v1"改为"http://langchain4j.dev/demo/openai/v1",这个地址是langchain4j专门为我们准备的一个体验地址,实际上这个地址相当于是"https://api.openai.com/1"的代理,我们请求代理时,代理会去调用真正的OpenAi接口,只不过代理会将自己的ApiKey传过去,从而拿到结果返回给我们。

所以,真正开发时,需要大家设置自己的apiKey或baseUrl,可以这么设置:

复制代码
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import org.junit.jupiter.api.Test;

public class langchain4jDemoApplicatonTest {
    @Test
    void test01(){
        ChatLanguageModel model = OpenAiChatModel
                .builder()
                .baseUrl("http://langchain4j.dev/demo/openai/v1")
                .apiKey("demo")
                .modelName("gpt-4o-mini")
                .build();
        String answer = model.chat("你好,你是谁?");
        System.out.println(answer);
    }

}

3 接入deepseek

代码实现如下:

复制代码
    @Test
    void test02(){
        ChatLanguageModel model = OpenAiChatModel
                .builder()
                .baseUrl("https://api.deepseek.com")
                .apiKey("sk-c78ed36820f14c438bb5be30ade5c1be")
                .modelName("deepseek-chat")
                .build();
        String answer = model.chat("你好,你是谁?");
                System.out.println(answer);
    }

结果如下:

4 文生图

5 文生语音

相关推荐
开心的AI频道14 分钟前
GPT-4o 图像生成与八个示例指南
人工智能
%d%d237 分钟前
RuntimeError: CUDA error: __global__ function call is not configured
人工智能·深度学习·机器学习
阿维的博客日记1 小时前
ϵ-prediction和z0-prediction是什么意思
人工智能·深度学习·机器学习
学术交流1 小时前
2025年软件工程与数据挖掘国际会议(SEDM 2025)
论文阅读·人工智能·数据挖掘·软件工程·论文笔记
生信漫谈1 小时前
Rice Science∣武汉大学水稻研究团队发现水稻壁相关激酶OsWAKg16和OsWAKg52同时调控水稻抗病性和产量
人工智能·学习方法
TO ENFJ2 小时前
day 10 机器学习建模与评估
人工智能·机器学习
高效匠人2 小时前
文章五《卷积神经网络(CNN)与图像处理》
图像处理·人工智能·python·cnn
tangjunjun-owen2 小时前
第三章:langchain加载word文档构建RAG检索教程(基于FAISS库为例)
langchain·llm·word·faiss·rag
卧式纯绿2 小时前
卷积神经网络基础(五)
人工智能·深度学习·神经网络·目标检测·机器学习·计算机视觉·cnn
乌恩大侠2 小时前
【东枫科技】代理销售 NVIDIA DGX Spark 您的桌上有一台 Grace Blackwell AI 超级计算机。
大数据·人工智能·科技·spark·nvidia