Skip to content
LangChain4j 文档版本 1.22.0 源快照 81ce6eac 更新于 2026-10-14

OpenAI

NOTE

这是 OpenAI 集成的文档,它使用对 OpenAI REST API 的自定义 Java 实现,最适合与 Quarkus(因其使用 Quarkus REST 客户端)和 Spring(因其使用 Spring 的 RestClient)搭配。

LangChain4j 提供了 3 种不同的 OpenAI 集成来使用嵌入模型,这里是第 1 种:

  • OpenAI 使用对 OpenAI REST API 的自定义 Java 实现,最适合与 Quarkus(因其使用 Quarkus REST 客户端)以及 Spring(因其使用 Spring 的 RestClient)搭配。
  • OpenAI 官方 SDK 使用官方的 OpenAI Java SDK。
  • Azure OpenAI 使用微软的 Azure SDK,最适合在你使用微软 Java 技术栈(包括高级 Azure 认证机制)时。

Maven 依赖

纯 Java

xml
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai</artifactId>
    <version>1.22.0</version>
</dependency>

Spring Boot

xml
<dependency>
    <groupId>dev.langchain4j</groupId>
    <artifactId>langchain4j-open-ai-spring-boot4-starter</artifactId>
    <version>1.22.0-beta32</version>
</dependency>

NOTE

该 starter 需要 Spring Boot 4。在 Spring Boot 3 上,请改用 langchain4j-open-ai-spring-boot-starter。 详见 Spring Boot 集成。

创建 OpenAiEmbeddingModel

纯 Java

java
EmbeddingModel model = OpenAiEmbeddingModel.builder()
        .apiKey(System.getenv("OPENAI_API_KEY"))
        .modelName("text-embedding-3-small")
        .build();

Spring Boot

添加到 application.properties:

properties
# Mandatory properties:
langchain4j.open-ai.embedding-model.api-key=${OPENAI_API_KEY}
langchain4j.open-ai.embedding-model.model-name=text-embedding-3-small

# Optional properties:
langchain4j.open-ai.embedding-model.base-url=...
langchain4j.open-ai.embedding-model.custom-headers=...
langchain4j.open-ai.embedding-model.dimensions=...
langchain4j.open-ai.embedding-model.log-requests=...
langchain4j.open-ai.embedding-model.log-responses=...
langchain4j.open-ai.embedding-model.max-retries=...
langchain4j.open-ai.embedding-model.organization-id=...
langchain4j.open-ai.embedding-model.project-id=...
langchain4j.open-ai.embedding-model.timeout=...
langchain4j.open-ai.embedding-model.user=...

设置自定义嵌入请求参数

使用 OpenAiEmbeddingModel 时,你可以在 HTTP 请求的 JSON 体内为嵌入请求 配置自定义参数。这对于需要提供者专有嵌入参数的 OpenAI 兼容提供者很有用:

java
EmbeddingModel model = OpenAiEmbeddingModel.builder()
        .baseUrl("https://integrate.api.nvidia.com/v1")
        .apiKey(System.getenv("NVIDIA_API_KEY"))
        .modelName("nvidia/nv-embedqa-e5-v5")
        .customParameters(Map.of("input_type", "passage"))
        .build();

能力

  • 逐次调用参数(通过 EmbeddingRequest):dimensions —— 在 text-embedding-3 模型上降低输出维度。OpenAI 专有的 user、encoding_format 及任意透传参数可通过 OpenAiEmbeddingRequestParameters 提供(例如用于 NVIDIA 的 input_type)。
  • 仅支持文本(不支持图像输入)。
  • 监听器:通过 OpenAiEmbeddingModel.builder().listeners(...) 配置。

关于请求/响应 API,参见嵌入模型。

示例

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。