OpenAI Java SDK: первый запрос через Responses API

В этой статье

Добавьте официальный OpenAI Java SDK в существующий Maven-проект, задайте API-ключ в конфигурации запуска IDE и запустите класс Main ниже. Он отправит один запрос через Responses API и выведет текст ответа в консоль. Для примера используем настроенный JDK 17+: цепочка извлечения текста содержит Optional.stream(), который появился в Java 9, хотя сам SDK поддерживает Java 8.

Добавьте зависимость в Maven

В секцию <dependencies> имеющегося pom.xml добавьте:

<dependency>
    <groupId>com.openai</groupId>
    <artifactId>openai-java</artifactId>
    <version>4.63.2</version>
</dependency>

Версия 4.63.2 указана в README OpenAI Java API Library. Сохраните файл и обновите зависимости Maven в IDE. После этого проект сможет разрешить импорты SDK.

Установка библиотеки не открывает доступ к моделям и не пополняет баланс API. Пользовательская подписка ChatGPT тоже не даёт API-кредиты: у этих продуктов раздельный биллинг. Если для отдельной работы в обычном ChatGPT вы уже выбираете Plus, Amber Market — сервис оплаты зарубежных сервисов — предлагает оформление месячного ChatGPT Plus на вашем аккаунте через менеджера. Доступ действует 30 дней, заказ можно оплатить через СБП. Перед активацией на аккаунте должен быть Free без активной подписки; продление оформляют после её окончания.

Задайте ключ в конфигурации запуска IDE

Если ключа ещё нет, создайте API-ключ OpenAI для нужного проекта. Откройте конфигурацию запуска приложения в IDE и в поле Environment variables задайте переменную OPENAI_API_KEY, указав свой ключ как её значение.

Клиент OpenAIOkHttpClient.fromEnv() прочитает ключ из окружения запущенного процесса. Не вставляйте ключ в исходник и не печатайте его для диагностики.

Создайте Main и отправьте запрос

Сохраните полный класс в src/main/java/Main.java:

import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.ChatModel;
import com.openai.models.responses.Response;
import com.openai.models.responses.ResponseCreateParams;

public class Main {
    public static void main(String[] args) {
        OpenAIClient client = OpenAIOkHttpClient.fromEnv();

        ResponseCreateParams params = ResponseCreateParams.builder()
                .input("Верни одну короткую фразу по-русски о готовности интеграции.")
                .model(ChatModel.GPT_5_2)
                .build();

        Response response = client.responses().create(params);

        response.output().stream()
                .flatMap(output -> output.message().stream())
                .flatMap(message -> message.content().stream())
                .flatMap(content -> content.outputText().stream())
                .forEach(outputText -> System.out.println(outputText.text()));
    }
}

В .input(...) передаётся запрос, в .model(...) — модель. ChatModel.GPT_5_2 — пример идентификатора из README; для вызова нужна модель, доступная вашему проекту. При необходимости замените значение .model(...) на доступный идентификатор, поддерживаемый вашей версией SDK.

Цепочка извлечения взята из официального ResponsesExample. В output могут находиться разные типы элементов. Код выбирает сообщения, перебирает их содержимое и печатает каждый элемент outputText. Если текстовых элементов несколько, forEach выведет их все, каждый с новой строки.

Запустите и проверьте результат

Запустите Main через конфигурацию IDE, в которой задан OPENAI_API_KEY. Признак успеха — текстовая фраза в консоли. Точную формулировку определит модель.

Если до текста дело не дошло, начните с места сбоя:

  • Не разрешаются импорты com.openai. Проверьте, что зависимость добавлена в <dependencies> нужного pom.xml, затем обновите Maven-проект в IDE.
  • Клиент не читает ключ. Проверьте имя OPENAI_API_KEY и окружение именно той конфигурации, из которой запускаете Main. Значение ключа в консоль выводить не нужно.
  • Вызов вернул ответ, но текста в консоли нет. Проверьте в отладчике статус ответа и типы элементов output. Эта цепочка печатает только outputText внутри сообщений; если таких элементов нет, она ничего не выведет. По одному отсутствию текста причину определить нельзя.
  • API вернул 429. Перейдите к разбору лимитов и квоты OpenAI API: повторное добавление Maven-зависимости эту ошибку не исправит.

Источники

Есть следующая задача?Ещё по теме «Работа с API» →