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

下一步学习

参考资料

相关推荐
数科云7 小时前
AI提示词(Prompt)入门:什么是Prompt?为什么要写好Prompt?
人工智能·aigc·ai写作·ai工具集·最新ai资讯
Devlive 开源社区7 小时前
技术日报|Claude Code超级能力库superpowers登顶日增1538星,自主AI循环ralph爆火登榜第二
人工智能
软件供应链安全指南8 小时前
灵脉 IAST 5.4 升级:双轮驱动 AI 漏洞治理与业务逻辑漏洞精准检测
人工智能·安全
lanmengyiyu8 小时前
单塔和双塔的区别和共同点
人工智能·双塔模型·网络结构·单塔模型
微光闪现8 小时前
AI识别宠物焦虑、紧张和晕车行为,是否已经具备实际可行性?
大数据·人工智能·宠物
技术小黑屋_8 小时前
用好Few-shot Prompting,AI 准确率提升100%
人工智能
中草药z8 小时前
【嵌入模型】概念、应用与两大 AI 开源社区(Hugging Face / 魔塔)
人工智能·算法·机器学习·数据集·向量·嵌入模型
知乎的哥廷根数学学派9 小时前
基于数据驱动的自适应正交小波基优化算法(Python)
开发语言·网络·人工智能·pytorch·python·深度学习·算法
DisonTangor9 小时前
GLM-Image:面向密集知识与高保真图像生成的自回归模型
人工智能·ai作画·数据挖掘·回归·aigc
努力学习的小洋9 小时前
Python训练打卡Day5离散特征的处理-独热编码
人工智能·python·机器学习