LangChain4j:Java开发者的大模型集成之路

m
marvis

Java 生态的 LLM 困局

Python 在 AI 领域的统治地位让 Java 开发者面临尴尬:公司后端基础设施全是 Java,但大模型集成的最佳实践和工具链都集中在 Python 生态。LangChain4j 的出现改变了这一局面,它为 Java 开发者提供了与 LangChain 同等强大的 LLM 应用开发框架。

LangChain4j 不是 LangChain 的简单移植,而是为 Java 生态从头设计的 LLM 编排框架,充分利用了 Java 的类型安全、并发模型和企业级特性。

快速开始

Maven 依赖

<dependency>
  <groupId>dev.langchain4j</groupId>
  <artifactId>langchain4j</artifactId>
  <version>0.36.2</version>
</dependency>
<dependency>
  <groupId>dev.langchain4j</groupId>
  <artifactId>langchain4j-open-ai</artifactId>
  <version>0.36.2</version>
</dependency>

第一个 LLM 调用

OpenAiChatModel model = OpenAiChatModel.builder()
    .apiKey(System.getenv("OPENAI_API_KEY"))
    .modelName("gpt-4o")
    .build();

String answer = model.generate(
    "用一句话解释 Java 虚拟线程"
);
System.out.println(answer);

构建 RAG 应用

文档加载与分割

LangChain4j 提供了丰富的文档加载器:

// 加载 PDF 文档
Document pdf = FileSystemDocumentLoader.loadDocument(
    Path.of("docs/product-manual.pdf"),
    new PdfDocumentParser()
);

// 分割为语义块
DocumentSplitter splitter = DocumentSplitters.recursive(800, 100);
List<TextSegment> segments = splitter.split(pdf);

向量存储与检索

// 嵌入模型
EmbeddingModel embeddingModel = OpenAiEmbeddingModel.builder()
    .apiKey(System.getenv("OPENAI_API_KEY"))
    .build();

// 向量存储(内存模式,生产应使用 Milvus/PgVector)
EmbeddingStore<TextSegment> store = 
    new InMemoryEmbeddingStore<>();

// 构建检索器
EmbeddingStoreIngestor ingestor = EmbeddingStoreIngestor.builder()
    .embeddingModel(embeddingModel)
    .embeddingStore(store)
    .build();
ingestor.ingest(segments);

构建 AI Agent

LangChain4j 支持通过 @Tool 注解定义工具,让 LLM 能够调用 Java 方法:

class Calculator {
    @Tool("计算两个数的和")
    public double add(double a, double b) {
        return a + b;
    }

    @Tool("查询用户余额")
    public double getBalance(@P("用户ID") String userId) {
        return accountService.getBalance(userId);
    }
}

AiServices<Assistant> aiService = AiServices.builder(Assistant.class)
    .chatLanguageModel(model)
    .tools(new Calculator())
    .build();

企业级集成要点

  1. 多模型切换:LangChain4j 支持 OpenAI、Azure OpenAI、Ollama、HuggingFace 等 20+ 模型提供商,统一 API 下随意切换。
  2. 流式输出:通过 StreamingChatLanguageModel 实现 SSE 流式响应,提升用户体验。
  3. 对话记忆:内置 ChatMemory 接口,支持 MessageWindowChatMemory(滑动窗口)和 TokenWindowChatMemory(Token 计数窗口)。
  4. 可观测性:集成 Micrometer 和 OpenTelemetry,提供 LLM 调用的全链路追踪。

总结

LangChain4j 让 Java 开发者在熟悉的生态中快速构建 LLM 应用,无需学习 Python。对于已有 Java 后端基础设施的团队,这是性价比最高的 AI 集成路径。