1. 环境准备与项目搭建
1.1 克隆官方示例项目
作为Java开发者,我们首先需要获取LangChain4j的官方示例代码库。这个仓库包含了各种集成示例,是我们快速上手的绝佳起点。执行以下命令克隆仓库:
bash复制git clone https://github.com/langchain4j/langchain4j-examples.git
克隆完成后,你会看到如下目录结构:
code复制langchain4j-examples/
├── examples/ # 基础核心示例
├── spring-boot-example/ # Spring Boot集成方案
├── quarkus-example/ # Quarkus框架适配
└── README.md # 项目说明文档
提示:建议使用Git Bash或Linux/macOS终端执行这些命令,Windows用户如果遇到权限问题,可以尝试在命令前加上
sudo
1.2 选择并进入基础示例项目
对于初次接触LangChain4j的开发者,建议从基础示例开始:
bash复制cd langchain4j-examples/examples
ls -la
基础示例项目采用Maven构建,结构清晰:
code复制src/
├── main/
│ ├── java/ # 示例代码主目录
│ └── resources/ # 配置文件
pom.xml # 项目依赖配置
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 依赖配置与DeepSeek接入
2.1 添加必要的Maven依赖
在pom.xml中添加LangChain4j核心库和OpenAI适配器(DeepSeek兼容OpenAI API):
xml复制<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.2 配置DeepSeek API密钥
DeepSeek提供了与OpenAI兼容的API端点,我们需要设置环境变量:
bash复制export DEEPSEEK_API_KEY=your_api_key_here
或者在Java代码中直接配置:
java复制String apiKey = System.getenv("DEEPSEEK_API_KEY");
OpenAiChatModel model = OpenAiChatModel.builder()
.apiKey(apiKey)
.modelName("deepseek-chat")
.baseUrl("https://api.deepseek.com/v1")
.build();
3. 核心功能实现
3.1 基础对话功能实现
创建一个简单的对话服务:
java复制public class BasicChatExample {
public static void main(String[] args) {
OpenAiChatModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("DEEPSEEK_API_KEY"))
.modelName("deepseek-chat")
.temperature(0.3)
.build();
String answer = model.generate("Java中如何实现单例模式?");
System.out.println(answer);
}
}
3.2 流式响应处理
对于需要实时响应的场景,可以使用流式API:
java复制model.generate("请用Java写一个快速排序实现", new StreamingResponseHandler() {
@Override
public void onNext(String token) {
System.out.print(token);
}
@Override
public void onComplete() {
System.out.println("\n[对话完成]");
}
@Override
public void onError(Throwable error) {
error.printStackTrace();
}
});
4. Spring Boot集成方案
4.1 创建Spring Boot配置类
java复制@Configuration
public class AiConfig {
@Value("${deepseek.api.key}")
private String apiKey;
@Bean
public OpenAiChatModel chatModel() {
return OpenAiChatModel.builder()
.apiKey(apiKey)
.modelName("deepseek-chat")
.baseUrl("https://api.deepseek.com/v1")
.temperature(0.7)
.build();
}
}
4.2 实现REST API端点
java复制@RestController
@RequestMapping("/api/ai")
public class AiController {
private final OpenAiChatModel chatModel;
public AiController(OpenAiChatModel chatModel) {
this.chatModel = chatModel;
}
@PostMapping("/chat")
public String chat(@RequestBody String prompt) {
return chatModel.generate(prompt);
}
}
5. 高级功能实现
5.1 记忆上下文管理
java复制ConversationMemory memory = MessageWindowConversationMemory.withMaxMessages(10);
Assistant assistant = AiServices.builder(Assistant.class)
.chatLanguageModel(chatModel)
.conversationMemory(memory)
.build();
String answer1 = assistant.chat("Java中的Stream有什么特点?");
String answer2 = assistant.chat("那在什么场景下使用比较好?"); // 会记住上文
5.2 工具调用集成
java复制interface Calculator {
@Tool("计算两个数字的和")
double add(double a, double b);
}
Assistant assistant = AiServices.builder(Assistant.class)
.chatLanguageModel(chatModel)
.tools(new CalculatorImpl())
.build();
String result = assistant.chat("请计算3.14加2.71等于多少?");
6. 性能优化与最佳实践
6.1 超时与重试配置
java复制OpenAiChatModel model = OpenAiChatModel.builder()
.apiKey(apiKey)
.modelName("deepseek-chat")
.timeout(Duration.ofSeconds(30))
.maxRetries(3)
.logRequests(true)
.logResponses(true)
.build();
6.2 批处理请求
对于需要处理大量相似请求的场景:
java复制List<String> prompts = Arrays.asList(
"解释Java中的多态",
"说明Spring框架的核心特性",
"比较ArrayList和LinkedList"
);
List<String> responses = model.generate(prompts);
7. 常见问题排查
7.1 认证失败问题
如果遇到401错误,检查:
- API密钥是否正确
- 是否设置了正确的baseUrl
- 密钥是否已过期
7.2 响应缓慢问题
可能的解决方案:
- 增加超时时间
- 检查网络连接
- 降低temperature值减少响应长度
7.3 内存溢出问题
处理大模型响应时:
- 使用流式处理替代完整响应
- 限制maxTokens参数
- 增加JVM堆内存
8. 实际应用案例
8.1 智能文档处理
java复制String document = Files.readString(Path.of("legal_doc.txt"));
String summary = model.generate("请用200字总结以下文档内容:\n" + document);
8.2 代码审查助手
java复制String code = Files.readString(Path.of("UserService.java"));
String review = model.generate("请分析以下Java代码的质量:\n" + code);
8.3 知识问答系统
java复制EmbeddingModel embeddingModel = new AllMiniLmL6V2EmbeddingModel();
EmbeddingStore<TextSegment> store = new InMemoryEmbeddingStore<>();
// 知识库嵌入
store.add(embeddingModel.embed("LangChain4j支持Java17+"), TextSegment.from("兼容性说明"));
store.add(embeddingModel.embed("DeepSeek提供免费API"), TextSegment.from("定价信息"));
// 检索增强生成
Retriever<TextSegment> retriever = store.asRetriever();
String answer = model.generate("LangChain4j需要什么Java版本?", retriever);
