Skip to content
LangChain4j 文档版本 1.22.0 源快照 7b142e02 更新于 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 集成。

NOTE

OpenAI 已弃用 DALL·E 2 与 DALL·E 3 模型,转而支持新的 GPT 图像模型 (gpt-image-1、gpt-image-1-mini、gpt-image-1.5、gpt-image-2、chatgpt-image-latest)。 DALL·E 专有的参数 style 和 response-format 已不再被 API 支持, 并已移除。取而代之,新增了 background、output-format、output-compression 和 moderation 等参数。

创建 OpenAiImageModel

纯 Java

java
ImageModel model = OpenAiImageModel.builder()
        .apiKey(System.getenv("OPENAI_API_KEY"))
        .modelName("gpt-image-1")
        .build();

Spring Boot

添加到 application.properties:

properties
# Mandatory properties:
langchain4j.open-ai.image-model.api-key=${OPENAI_API_KEY}
langchain4j.open-ai.image-model.model-name=gpt-image-1

# Optional properties:
langchain4j.open-ai.image-model.background=...
langchain4j.open-ai.image-model.base-url=...
langchain4j.open-ai.image-model.custom-headers=...
langchain4j.open-ai.image-model.log-requests=...
langchain4j.open-ai.image-model.log-responses=...
langchain4j.open-ai.image-model.max-retries=...
langchain4j.open-ai.image-model.moderation=...
langchain4j.open-ai.image-model.organization-id=...
langchain4j.open-ai.image-model.output-compression=...
langchain4j.open-ai.image-model.output-format=...
langchain4j.open-ai.image-model.project-id=...
langchain4j.open-ai.image-model.quality=...
langchain4j.open-ai.image-model.size=...
langchain4j.open-ai.image-model.timeout=...
langchain4j.open-ai.image-model.user=...

词元用量

GPT 图像模型会上报一次请求使用了多少词元。OpenAiImageModel 以 OpenAiImageTokenUsage 返回它,该类型还会将输入与输出词元进一步拆分为图像词元和文本 词元(OpenAI 对二者的计价不同):

java
Response<Image> response = model.generate("A watercolor painting of a lighthouse");

OpenAiImageTokenUsage tokenUsage = (OpenAiImageTokenUsage) response.tokenUsage();
tokenUsage.inputTokenCount();                    // all input tokens
tokenUsage.inputTokensDetails().textTokens();    // input tokens from the prompt
tokenUsage.inputTokensDetails().imageTokens();   // input tokens from input images (edits)
tokenUsage.outputTokenCount();                   // all output tokens

当 OpenAI 不上报这些细节时,它们为 null。DALL·E 模型完全不上报用量, 因此对它们而言 response.tokenUsage() 为 null。

示例

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