主题
Payara Micro 集成
LangChain4j 可无缝集成到 Payara Micro 应用中,借助 Jakarta EE 与 MicroProfile 的标准特性实现依赖注入与配置。
本指南演示如何创建直接实例化并使用 LangChain4j 模型的 JAX-RS 资源,配置由 MicroProfile Config 管理。
Maven 依赖
首先,将核心 langchain4j 依赖以及你所需要的具体模型集成模块添加到 pom.xml 文件:
xml
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>21</maven.compiler.release>
<jakartaee-api.version>10.0.0</jakartaee-api.version>
<payara.version>6.2025.5</payara.version>
<version.langchain4j>1.22.0</version.langchain4j>
</properties>
<dependencies>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>${version.langchain4j}</version>
</dependency>
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-google-ai-gemini</artifactId>
<version>${version.langchain4j}</version>
</dependency>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-api</artifactId>
<version>${jakartaee-api.version}</version>
<scope>provided</scope>
</dependency>
</dependencies>配置多个模型
你可以在 MicroProfile 配置文件(位于 src/main/resources/META-INF/microprofile-config.properties)中按如下方式提供各模型的属性,从而配置多个 AI 模型:
openai.api.key=${OPENAI_API_KEY}
openai.chat.model=gpt-4o-mini
google-ai-gemini.chat-model.api-key=${GEMINI_KEY}
google-ai-gemini.chat-model.model-name=gemini-2.0-flash-lite
deepseek.api.key=${DEEPSEEK_API_KEY}
deepseek.chat.model=deepseek-reasoner实现聊天资源
在这种方式中,每个 JAX-RS 资源负责自己的 AI 模型实例。该模式对每个提供者重复一次。
RestConfiguration 类继承 jakarta.ws.rs.core.Application,并为所有 REST 端点定义基础路径 /api:
java
import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application;
@ApplicationPath("api")
public class RestConfiguration extends Application {
}对于每个模型,我们有一个 JAX-RS Resource 类,它:
- 使用
@Inject和@ConfigProperty注入配置属性。 - 使用带
@PostConstruct注解的方法,在属性注入完成后构建模型实例。 - 创建一个
@GET端点与模型交互。
java
@Path("openai")
public class OpenAiChatModelResource {
@Inject
@ConfigProperty(name = "openai.api.key")
private String openAiApiKey;
@Inject
@ConfigProperty(name = "openai.chat.model")
private String modelName;
private OpenAiChatModel chatModel;
@PostConstruct
public void init() {
chatModel = OpenAiChatModel.builder()
.apiKey(openAiApiKey)
.modelName(modelName)
.build();
}
@GET
@Path("chat")
@Produces(MediaType.TEXT_PLAIN)
public String chat(@QueryParam("message") @DefaultValue("Hello") String message) {
return chatModel.generate(message);
}
}同样的模式也用于 GeminiChatModelResource 与 DeepSeekChatModelResource。
注意,最后一个复用了 OpenAiChatModel 类,只是把 baseUrl 改为 deepseek API,展示了该库的灵活性。
API 文档
示例项目包含一个 Swagger UI,用于交互式探索和测试 API 端点。
webapp 文件夹中的 index.html 文件配置 Swagger UI,让它加载由 Payara Micro 在 /openapi 端点自动生成的 OpenAPI 规范:
json
openapi: 3.0.0
info:
title: Deployed Resources
version: 1.0.0
...
endpoints:
/:
- /api/deepseek/chat
- /api/gemini/chat
- /api/openai/chat
components: {}运行示例应用
该项目配置为通过 Payara Micro Maven 插件运行。
前置条件:
- Java SE 21+
- Maven 执行环境
执行
- 在项目根目录打开一个终端。
- 设置 API 密钥所需的环境变量。应用需要它们来向 AI 服务认证。你必须配置:
- OPENAI_API_KEY
- GEMINI_KEY
- DEEPSEEK_API_KEY
- 执行以下 Maven 命令:
mvn clean package payara-micro:start
服务器启动后,你可以用两种方式测试端点:
如果你使用 IntelliJ IDEA(Ultimate 版)或其他具备类似功能的 IDE,可以直接从
.http文件执行请求:a. 打开位于
src/test/resources/的test.http文件。b. IDE 会在每个请求定义旁显示一个绿色小"播放"图标:

c. 点击你想运行的那个请求旁的图标。API 的响应会直接显示在 IDE 的工具窗口中:

使用 AI 聊天界面
在浏览器中访问 http://localhost:8080/ 。这会打开一个交互式聊天页面,你可以直接从浏览器探索和测试可用的端点:
