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

下一步学习

参考资料

相关推荐
Hello.Reader2 小时前
Flink ML 迭代机制详解:有界迭代 vs 无界迭代、IterationBody、Epoch 与 API 实战
人工智能·机器学习·flink
超自然祈祷2 小时前
从数据挖掘到人工智能的脉络地图
人工智能·机器学习·数据挖掘·数据分析
元智启2 小时前
企业AI智能体:智能体经济崛起,重构产业价值坐标系——从单点赋能到生态重构的产业革命
大数据·人工智能·重构
tap.AI2 小时前
(五)Stable Diffusion 3.5-LoRA 适配、ControlNet 与模型微调
人工智能·stable diffusion
攻城狮7号2 小时前
清华&生数开源TurboDiffusion,AI视频生成2秒出片?
人工智能·ai视频·turbodiffusion·清华及生数·生成加速框架
尋找記憶的魚2 小时前
pytorch——神经网络框架的搭建以及网络的训练
人工智能·pytorch·神经网络
想你依然心痛2 小时前
AI镜像开发实战:Stable Diffusion 3.5 FP8文生图技术深度解析与应用探索
人工智能·stable diffusion
水如烟2 小时前
孤能子视角:数字时代的“众“与“独“,“三观“––守护自身“本真性“
人工智能
wjykp2 小时前
part4 反向传播算法(BP算法)
人工智能·算法·机器学习