LangChain4j 快速入门与 Hello World

概述
LangChain4j 是一个用于构建 AI 驱动应用程序的 Java 库。本教程将带你快速入门,了解如何创建你的第一个 LangChain4j 应用。
环境要求
- Java 版本: Java 17 或更高版本(推荐 Java 21+)
- 构建工具: Maven 或 Gradle
- API 密钥: OpenAI API Key(或其他支持的 LLM 提供商)
Maven 依赖配置
在你的 pom.xml 中添加以下依赖:
xml
<dependencies>
<!-- LangChain4j OpenAI 集成 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>1.9.1</version>
</dependency>
<!-- LangChain4j 核心库 -->
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>1.9.1</version>
</dependency>
</dependencies>
第一个 Hello World 示例
示例 1: 最简单的对话
这是最基础的示例,直接使用 ChatModel 发送消息并获取响应。
代码示例 (参考:tutorials/src/main/java/_00_HelloWorld.java)
java
package dev.langchain4j.example;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;
public class HelloWorldExample {
public static void main(String[] args) {
// 1. 创建 ChatLanguageModel 实例
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY")) // 从环境变量获取 API Key
.modelName(GPT_4_O_MINI) // 指定模型
.build();
// 2. 发送消息并获取响应
String answer = model.generate("Say 'Hello World'");
// 3. 输出结果
System.out.println(answer); // 输出: Hello World
}
}
运行方式:
bash
# 设置环境变量
export OPENAI_API_KEY="your-api-key-here"
# 编译并运行
cd tutorials
mvn compile
mvn exec:java -Dexec.mainClass="dev.langchain4j.example.HelloWorldExample"
关键概念解析
- ChatLanguageModel: 这是 LangChain4j 中的核心接口,代表一个聊天语言模型
- Builder 模式 : 使用
.builder()创建模型实例,提供灵活的配置选项 - API Key 管理: 从环境变量读取 API Key,避免硬编码敏感信息
- 模型名称 :
GPT_4_O_MINI是一个预定义常量,代表gpt-4o-mini模型
示例 2: 使用 AI Service 接口
LangChain4j 提供了更优雅的 AI Service 模式,通过定义接口来与 LLM 交互。
代码示例 (参考:tutorials/src/main/java/_08_AIServiceExamples.java)
java
package dev.langchain4j.example;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;
public class AiServiceHelloWorldExample {
// 1. 定义 AI Service 接口
interface Assistant {
String chat(String message);
}
public static void main(String[] args) {
// 2. 创建 ChatModel
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName(GPT_4_O_MINI)
.build();
// 3. 使用 AiServices 创建 Assistant 实例
Assistant assistant = AiServices.create(Assistant.class, model);
// 4. 像调用普通方法一样与 AI 对话
String answer = assistant.chat("你好,世界!");
System.out.println(answer);
}
}
AI Service 的优势
- 类型安全: 使用接口定义,编译时检查
- 简洁优雅: 像调用普通方法一样使用 AI
- 易于扩展: 后续可以轻松添加系统提示、工具、记忆等功能
示例 3: 添加系统提示
通过 @SystemMessage 注解,你可以为 AI 设置角色和行为规范。
代码示例
java
package dev.langchain4j.example;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.service.AiServices;
import dev.langchain4j.service.SystemMessage;
import static dev.langchain4j.model.openai.OpenAiChatModelName.GPT_4_O_MINI;
public class SystemMessageExample {
// 定义一个专业厨师 AI
interface Chef {
@SystemMessage("你是一位专业的中餐厨师,拥有 20 年烹饪经验。请用专业且友好的语气回答问题。")
String answer(String question);
}
public static void main(String[] args) {
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey(System.getenv("OPENAI_API_KEY"))
.modelName(GPT_4_O_MINI)
.build();
Chef chef = AiServices.create(Chef.class, model);
String answer = chef.answer("如何做红烧肉?");
System.out.println(answer);
}
}
示例 4: 使用其他 LLM 提供商
LangChain4j 支持多种 LLM 提供商,切换非常简单。
使用 Anthropic Claude
java
import dev.langchain4j.model.anthropic.AnthropicChatModel;
ChatLanguageModel model = AnthropicChatModel.builder()
.apiKey(System.getenv("ANTHROPIC_API_KEY"))
.modelName("claude-3-5-sonnet-20241022")
.build();
使用本地 Ollama
java
import dev.langchain4j.model.ollama.OllamaChatModel;
ChatLanguageModel model = OllamaChatModel.builder()
.baseUrl("http://localhost:11434")
.modelName("llama3.2")
.build();
使用 Azure OpenAI
java
import dev.langchain4j.model.azure.AzureOpenAiChatModel;
ChatLanguageModel model = AzureOpenAiChatModel.builder()
.apiKey(System.getenv("AZURE_OPENAI_KEY"))
.endpoint(System.getenv("AZURE_OPENAI_ENDPOINT"))
.deploymentName("gpt-4o-mini")
.build();
API Key 管理最佳实践
在实际项目中,建议创建一个 ApiKeys 工具类:
java
package dev.langchain4j.example;
public class ApiKeys {
public static String OPENAI_API_KEY = getApiKey("OPENAI_API_KEY");
private static String getApiKey(String envVarName) {
String apiKey = System.getenv(envVarName);
if (apiKey == null || apiKey.isEmpty()) {
throw new IllegalStateException(
"请设置环境变量: " + envVarName
);
}
return apiKey;
}
}
使用方式:
java
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey(ApiKeys.OPENAI_API_KEY)
.modelName(GPT_4_O_MINI)
.build();
运行示例项目
bash
# 克隆示例仓库
git clone https://github.com/langchain4j/langchain4j-examples.git
cd langchain4j-examples
# 编译所有模块
mvn -B -U -T8C compile
# 运行 Hello World 示例
cd tutorials
export OPENAI_API_KEY="your-key-here"
mvn exec:java -Dexec.mainClass="_00_HelloWorld"
常见问题
Q1: 如何处理 API Key 安全问题?
A:
- 使用环境变量存储 API Key
- 不要将 API Key 提交到版本控制系统
- 在生产环境使用密钥管理服务(如 AWS Secrets Manager、Azure Key Vault)
Q2: 支持哪些 LLM 提供商?
A: LangChain4j 支持 15+ 提供商,包括:
- OpenAI(GPT-4, GPT-3.5)
- Anthropic(Claude)
- Google(Gemini)
- Azure OpenAI
- AWS Bedrock
- Ollama(本地模型)
- Mistral AI
- Hugging Face
- 等等...
Q3: 如何选择模型?
A: 建议:
- 开发/测试 : 使用
gpt-4o-mini(成本低、速度快) - 生产环境 : 使用
gpt-4o或gpt-4-turbo(质量高) - 本地开发 : 使用 Ollama +
llama3.2(完全免费)
下一步学习
- 02-模型参数配置与调优 - 学习如何配置温度、超时、日志等
- 03-提示词与模板 - 掌握提示词工程技巧
- 04-AI服务核心模式 - 深入理解 AI Services 模式
参考资料
- 官方文档: https://docs.langchain4j.dev/
- 示例代码:
tutorials/src/main/java/_00_HelloWorld.java - GitHub: https://github.com/langchain4j/langchain4j