Payara Micro 集成
LangChain4j 可以无缝集成到 Payara Micro 应用中,利用 Jakarta EE 和 MicroProfile 的标准特性进行依赖注入与配置管理。
本指南演示如何创建 JAX-RS 资源,直接实例化并使用 LangChain4j 模型,同时由 MicroProfile Config 管理配置。
Maven 依赖
首先,在 pom.xml 中添加 langchain4j 核心依赖以及所需的具体模型集成模块:
<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.18.1</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:
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端点以与模型交互。
@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 规范:
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 Edition)或其他具备类似功能的 IDE,可以直接从
.http文件执行请求:a. 打开位于
src/test/resources/中的test.http文件。b. IDE 会在每个请求定义旁显示一个绿色的小“播放”图标:

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

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