【Langchain4j-Java AI开发】01-快速入门与HelloWorld

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"

关键概念解析

  1. ChatLanguageModel: 这是 LangChain4j 中的核心接口,代表一个聊天语言模型
  2. Builder 模式 : 使用 .builder() 创建模型实例,提供灵活的配置选项
  3. API Key 管理: 从环境变量读取 API Key,避免硬编码敏感信息
  4. 模型名称 : 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 的优势

  1. 类型安全: 使用接口定义,编译时检查
  2. 简洁优雅: 像调用普通方法一样使用 AI
  3. 易于扩展: 后续可以轻松添加系统提示、工具、记忆等功能

示例 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-4ogpt-4-turbo(质量高)
  • 本地开发 : 使用 Ollama + llama3.2(完全免费)

下一步学习

参考资料

相关推荐
Web3_Daisy23 分钟前
从流动性到执行:如何降低 MEV 对 Web3 市场
大数据·人工智能·web3·区块链
日常通勤穿搭28 分钟前
电商 AI 作图用哪个最方便?新手商家 AI 出图工具对比
大数据·人工智能
爱学堂IT分享35 分钟前
DeepSeek+SpringAI实战AI家庭医生应用(10章) 完整版
人工智能
QXWZ_IA40 分钟前
千寻位置支持哪些卫星系统?北斗GPS多星座解析
人工智能·科技·智能硬件·rtk
小淮AI1 小时前
一个国际家庭在武汉的择校笔记:两份外籍人员子女学校的课程方案比较
大数据·人工智能
deepdata_cn1 小时前
如何从0到1学习AI向量基础
人工智能·向量
随风丶飘1 小时前
[特殊字符] 告别“update“和“fix bug“——Smart Git Commit LLM 让 AI 帮你写专业的 Git 提交信息
人工智能·git·bug
H0311169852 小时前
择校参考:枫叶教育 vs 大连美国国际学校,外籍子女学校怎么选
人工智能
刘海东刘海东2 小时前
一条新的人工智能道路(刘海东)一、二、三章
人工智能
xyz_CDragon2 小时前
从 RTL 到 GDSII:人与 AI 协作,用开源 EDA 工具链完成 SHA-256 芯片的 SoC 集成与签核全流程(附完整流程+代码)
人工智能·开源·芯片设计·开源 eda·caravel