使用 LangChain4j 打造 Java 智能应用:完整入门教程(含示例代码)
·
一、什么是 LangChain4j?
LangChain4j 是一个 Java 框架,用于构建基于大语言模型的应用程序。它的目标类似于 Python 世界的 LangChain:抽象模型接口、对话上下文(Memory)、提示模板、文档检索(RAG)等,帮助你快速搭建智能体(Agent)。
二、环境准备
1. 创建 Maven 项目
添加基本依赖(以 OpenAI 为例):
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>0.25.0</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-openai</artifactId>
<version>0.25.0</version>
</dependency>
</dependencies>
2. 设置 OpenAI API Key
String apiKey = System.getenv("OPENAI_API_KEY");
三、构建你的第一个智能问答程序
import dev.langchain4j.model.openai.OpenAiChatModel;
public class SimpleChatApp {
public static void main(String[] args) {
OpenAiChatModel model = OpenAiChatModel.builder()
.apiKey("sk-你的key")
.modelName("gpt-3.5-turbo")
.build();
String answer = model.generate("用一句话介绍Java是什么");
System.out.println(answer);
}
}
输出示例:
Java 是一种面向对象、跨平台的编程语言,广泛应用于企业和移动应用开发。
import dev.langchain4j.Memory;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.chat.MemoryChatModel;
public class MemoryChatExample {
public static void main(String[] args) {
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey("sk-你的key")
.build();
Memory memory = Memory.builder().build();
MemoryChatModel chatModel = new MemoryChatModel(model, memory);
System.out.println(chatModel.send("我叫张三"));
System.out.println(chatModel.send("我是谁?"));
}
}
四、使用 Memory 进行多轮对话
LangChain4j 支持上下文记忆(类似 ChatGPT 会话状态):
import dev.langchain4j.Memory;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.chat.MemoryChatModel;
public class MemoryChatExample {
public static void main(String[] args) {
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey("sk-你的key")
.build();
Memory memory = Memory.builder().build();
MemoryChatModel chatModel = new MemoryChatModel(model, memory);
System.out.println(chatModel.send("我叫张三"));
System.out.println(chatModel.send("我是谁?"));
}
}
输出
你好,张三!
你是张三,我们刚刚聊过 :)
五、使用 @AiService 创建智能代理(Agent)
你可以用注解方式构建“智能服务接口”,极其方便!
import dev.langchain4j.service.AiService;
import dev.langchain4j.service.SystemMessage;
@AiService
interface QaService {
@SystemMessage("你是一个精通Java的助理,请用中文回答。")
String answer(String question);
}
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.ServiceFactory;
public class AgentDemo {
public static void main(String[] args) {
QaService qa = ServiceFactory.create(
QaService.class,
OpenAiChatModel.withApiKey("sk-你的key")
);
String result = qa.answer("什么是Java泛型?");
System.out.println(result);
}
}
六、使用提示模板(Prompt Templates)
LangChain4j 支持模板化提示:
@AiService
interface Translator {
@SystemMessage("你是一位翻译助手。")
@dev.langchain4j.service.UserMessage("请将以下句子翻译成英文:{input}")
String translate(String input);
}
调用:
Translator translator = ServiceFactory.create(Translator.class, OpenAiChatModel.withApiKey("sk-你的key"));
System.out.println(translator.translate("我喜欢编程"));
七、集成 Tools(自定义工具函数)
你可以把 Java 函数作为工具暴露给模型使用:
import dev.langchain4j.agent.tool.Tool;
public class MathTools {
@Tool
public int 加法(int a, int b) {
return a + b;
}
@Tool
public int 乘法(int a, int b) {
return a * b;
}
}
将工具接入 Agent:
Agent agent = Agent.builder()
.tools(new MathTools())
.chatLanguageModel(OpenAiChatModel.withApiKey("sk-xxx"))
.build();
String response = agent.chat("2加2是多少?");
System.out.println(response);
八、与文档对接(RAG)
LangChain4j 支持加载 PDF/文本并进行语义搜索(基于 Embedding + 向量数据库,如 Milvus、Weaviate、Chroma):
TextSplitter splitter = new DocumentSplitters().recursive(200, 20);
List<Document> docs = splitter.split("Java 是一种编程语言......");
EmbeddingStore<TextSegment> store = new InMemoryEmbeddingStore<>();
EmbeddingModel embeddingModel = OpenAiEmbeddingModel.withApiKey("sk-xxx");
for (TextSegment segment : docs) {
store.add(embeddingModel.embed(segment), segment);
}
然后你可以基于相似片段构建 RAG 应答。
九、集成 Spring Boot(可选)
LangChain4j 提供 langchain4j-spring 模块,让你在 Spring 应用中使用依赖注入方式构建智能服务:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-spring</artifactId>
<version>0.25.0</version>
</dependency>
配置 API Key:
langchain4j:
openai:
chat-model:
api-key: sk-xxx
自动注入:
@Autowired
MyAiService aiService;
更多推荐
所有评论(0)