LangChain4j Java AI 开发:快速入门与 Hello World
介绍 LangChain4j 在 Java 中的快速入门。涵盖环境要求、Maven 依赖配置、基础对话示例、AI Service 接口模式、系统提示词设置以及多 LLM 提供商(如 Anthropic、Ollama、Azure)的接入方法。同时提供了 API Key 管理最佳实践和常见问题解答,帮助开发者构建 AI 驱动应用。

介绍 LangChain4j 在 Java 中的快速入门。涵盖环境要求、Maven 依赖配置、基础对话示例、AI Service 接口模式、系统提示词设置以及多 LLM 提供商(如 Anthropic、Ollama、Azure)的接入方法。同时提供了 API Key 管理最佳实践和常见问题解答,帮助开发者构建 AI 驱动应用。


LangChain4j 是一个用于构建 AI 驱动应用程序的 Java 库。本教程将带你快速入门,了解如何创建你的第一个 LangChain4j 应用。
在你的 pom.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>
这是最基础的示例,直接使用 ChatModel 发送消息并获取响应。
代码示例(参考:tutorials/src/main/java/_00_HelloWorld.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
}
}
运行方式:
# 设置环境变量
export OPENAI_API_KEY="your-api-key-here"
# 编译并运行
cd tutorials
mvn compile
mvn exec:java -Dexec.mainClass="dev.langchain4j.example.HelloWorldExample"
.builder() 创建模型实例,提供灵活的配置选项GPT_4_O_MINI 是一个预定义常量,代表 gpt-4o-mini 模型LangChain4j 提供了更优雅的 AI Service 模式,通过定义接口来与 LLM 交互。
代码示例(参考:tutorials/src/main/java/_08_AIServiceExamples.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);
}
}
通过 @SystemMessage 注解,你可以为 AI 设置角色和行为规范。
代码示例
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);
}
}
LangChain4j 支持多种 LLM 提供商,切换非常简单。
import dev.langchain4j.model.anthropic.AnthropicChatModel;
ChatLanguageModel model = AnthropicChatModel.builder()
.apiKey(System.getenv("ANTHROPIC_API_KEY"))
.modelName("claude-3-5-sonnet-20241022")
.build();
import dev.langchain4j.model.ollama.OllamaChatModel;
ChatLanguageModel model = OllamaChatModel.builder()
.baseUrl("http://localhost:11434")
.modelName("llama3.2")
.build();
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();
在实际项目中,建议创建一个 ApiKeys 工具类:
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;
}
}
使用方式:
ChatLanguageModel model = OpenAiChatModel.builder()
.apiKey(ApiKeys.OPENAI_API_KEY)
.modelName(GPT_4_O_MINI)
.build();
# 克隆示例仓库
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"
A:
A: LangChain4j 支持 15+ 提供商,包括:
A: 建议:
gpt-4o-mini(成本低、速度快)gpt-4o 或 gpt-4-turbo(质量高)llama3.2(完全免费)tutorials/src/main/java/_00_HelloWorld.java
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online