ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Java 版本的 LangChain 核心功能示例

2026/9/24 1:29:35 拓冰建站 浏览量
Java 版本的 LangChain 核心功能示例

以下是 Java 版本的 LangChain 核心功能示例(基于 Spring Boot + LangChain4j 库):


1. LangChain4j 简介

LangChain4j 是 LangChain 的 Java 实现,提供类似的模块化 AI 应用开发能力。

依赖配置(Maven)

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

2. 核心功能示例

(1) 基础 LLM 调用

import dev.langchain4j.model.openai.OpenAiChatModel;public class BasicLlmExample {public static void main(String[] args) {OpenAiChatModel model = OpenAiChatModel.builder().apiKey("your-openai-key").modelName("gpt-3.5-turbo").build();String answer = model.generate("用中文解释LangChain");System.out.println(answer);}
}

输出

LangChain 是一个用于构建大语言模型(LLM)应用的框架...

(2) Prompt 模板

import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.input.Prompt;
import dev.langchain4j.model.input.PromptTemplate;public class PromptExample {public static void main(String[] args) {OpenAiChatModel model = OpenAiChatModel.withApiKey("your-openai-key");PromptTemplate template = PromptTemplate.from("用不超过{{max_words}}个字回答:{{question}}");Prompt prompt = template.apply(Map.of("max_words", "50", "question", "什么是人工智能?"));String answer = model.generate(prompt.text());System.out.println(answer);}
}

输出

人工智能是模拟人类智能的计算机系统,能学习、推理和解决问题。

(3) 对话记忆(Memory)

import dev.langchain4j.memory.ChatMemory;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;public class MemoryExample {interface Assistant {String chat(String message);}public static void main(String[] args) {ChatMemory memory = MessageWindowChatMemory.withMaxMessages(10);Assistant assistant = AiServices.builder(Assistant.class).chatLanguageModel(OpenAiChatModel.withApiKey("your-openai-key")).chatMemory(memory).build();System.out.println(assistant.chat("你好!")); // 输出:你好!有什么可以帮您?System.out.println(assistant.chat("我是张三")); // 能记住上下文}
}

(4) 数据增强(RAG 流程)

import dev.langchain4j.data.document.Document;
import dev.langchain4j.data.document.loader.FileSystemDocumentLoader;
import dev.langchain4j.data.document.splitter.DocumentSplitters;
import dev.langchain4j.model.embedding.AllMiniLmL6V2EmbeddingModel;
import dev.langchain4j.store.embedding.EmbeddingStore;
import dev.langchain4j.store.embedding.inmemory.InMemoryEmbeddingStore;public class RagExample {public static void main(String[] args) {// 1. 加载文档Document document = FileSystemDocumentLoader.loadDocument("path/to/file.txt");// 2. 分割文本List<TextSegment> segments = DocumentSplitters.recursive(300, 0).split(document);// 3. 向量化存储EmbeddingModel embeddingModel = new AllMiniLmL6V2EmbeddingModel();EmbeddingStore<TextSegment> embeddingStore = new InMemoryEmbeddingStore<>();embeddingStore.addAll(embeddingModel.embedAll(segments));// 4. 检索增强问答String question = "文档的主要内容是什么?";List<EmbeddingMatch<TextSegment>> relevantSegments = embeddingStore.findRelevant(embeddingModel.embed(question), 3);}
}

(5) 工具调用(Agent)

import dev.langchain4j.service.UserMessage;
import dev.langchain4j.service.AiServices;
import dev.langchain4j.service.Tool;public class AgentExample {interface Calculator {@Tool("计算两个数的和")double add(double a, double b);}interface Assistant {String ask(String question);}public static void main(String[] args) {Calculator calculator = new Calculator() {@Overridepublic double add(double a, double b) {return a + b;}};Assistant assistant = AiServices.builder(Assistant.class).chatLanguageModel(OpenAiChatModel.withApiKey("your-key")).tools(calculator).build();String answer = assistant.ask("计算 123 加 456 等于多少?");System.out.println(answer); // 输出:123 + 456 = 579}
}

3. 关键组件对比(Python vs Java)

功能Python (LangChain)Java (LangChain4j)
LLM 调用OpenAI()OpenAiChatModel
Prompt 模板PromptTemplatePromptTemplate
对话记忆ConversationBufferMemoryMessageWindowChatMemory
向量存储FAISS.from_documents()InMemoryEmbeddingStore
Agentinitialize_agent()AiServices.builder()

4. 适用场景

  • 企业级应用:适合需要集成到 Spring Boot 服务的场景
  • 高并发系统:Java 的线程模型更适合高负载
  • 已有 Java 技术栈:无需切换 Python 生态

如果需要更复杂的示例(如 Spring Boot 集成),可以进一步扩展!