【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(完全免费)

下一步学习

参考资料

相关推荐
Data_Journal1 分钟前
如何使用 Python 解析 JSON 数据
大数据·开发语言·前端·数据库·人工智能·php
陈天伟教授2 分钟前
人工智能应用- 语言理解:09.大语言模型
人工智能·语言模型·自然语言处理
ASS-ASH4 分钟前
AI时代之向量数据库概览
数据库·人工智能·python·llm·embedding·向量数据库·vlm
老百姓懂点AI7 分钟前
[微服务] Istio流量治理:智能体来了(西南总部)AI调度官的熔断策略与AI agent指挥官的混沌工程
人工智能·微服务·istio
芝士爱知识a18 分钟前
2026年教资备考数字化生存指南:主流App深度测评与AI技术应用分析
人工智能·教资·ai教育·教育技术·教资面试·app测评·2026教资
AIArchivist19 分钟前
攻坚肝胆疑难病例,AI成为诊疗决策的“智慧大脑”
人工智能
jake don24 分钟前
GPU服务器搭建大模型指南
服务器·人工智能
JicasdC123asd39 分钟前
【深度学习实战】基于Mask-RCNN和HRNetV2P的腰果智能分级系统_1
人工智能·深度学习
星爷AG I1 小时前
9-28 视觉工作记忆(AGI基础理论)
人工智能·计算机视觉·agi
陈天伟教授1 小时前
人工智能应用- 语言理解:07.大语言模型
人工智能·深度学习·语言模型