Java и ChatGPT: создаем ИИ-помощника в коде

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Java встречает искусственный интеллект: почему это важно

Мир Java-разработки переживает настоящую революцию. Еще несколько лет назад интеграция искусственного интеллекта в приложения на Java казалась уделом крупных корпораций с командами data scientists. Сегодня же каждый Java-разработчик может добавить в свой проект мощь языковых моделей, таких как ChatGPT. И это не просто модный тренд — это реальный инструмент, который может автоматизировать рутину, улучшить пользовательский опыт и открыть новые горизонты для ваших приложений.

В этой статье мы разберем, как использовать ChatGPT в Java-разработке. Вы узнаете, как подключиться к API OpenAI, написать простого ИИ-ассистента и интегрировать его в реальный проект. Никакой магии — только чистый Java-код и практические примеры. Поехали!

Что такое ChatGPT для Java-разработчика?

ChatGPT — это языковая модель от OpenAI, способная понимать и генерировать текст, похожий на человеческий. Для Java-разработчика это означает возможность добавить в свое приложение функции, которые раньше требовали сложных алгоритмов и больших данных: ответы на вопросы пользователей, генерация контента, анализ текста, написание кода и многое другое.

Главное преимущество — вам не нужно обучать модель самостоятельно. OpenAI предоставляет готовый API, который можно вызвать из Java-приложения. Вы просто отправляете запрос (промпт) и получаете ответ. Всю сложную работу по обработке естественного языка берет на себя нейросеть.

Подготовка: что нужно для старта

Прежде чем писать код, давайте подготовим все необходимое. Вам понадобится:

  • Java Development Kit (JDK) версии 11 или выше (рекомендуем 17/21).
  • Система сборки (Maven или Gradle) — для управления зависимостями.
  • API-ключ OpenAI — получить можно в личном кабинете после регистрации.
  • HTTP-клиент — будем использовать встроенный HttpClient из Java 11.

Кстати, для работы с JSON нам понадобится библиотека. Я рекомендую com.google.code.gson:gson. Добавьте ее в ваш pom.xml (для Maven):

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

Для Gradle:

implementation 'com.google.code.gson:gson:2.10.1'

Готовы? Тогда идем дальше.

Пишем первый Java-код для общения с ChatGPT

Наш первый пример — классический чат-бот. Мы отправим запрос к модели gpt-3.5-turbo и получим ответ. Это основа, на которой мы построим более сложные решения.

Создайте класс ChatGPTClient.java:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

public class ChatGPTClient {

    private static final String API_URL = "https://api.openai.com/v1/chat/completions";
    private static final String API_KEY = "ВАШ_API_КЛЮЧ"; // Не забудьте заменить!

    public static String askChatGPT(String userMessage) throws Exception {
        HttpClient client = HttpClient.newHttpClient();

        // Формируем тело запроса в JSON
        JsonObject requestBody = new JsonObject();
        requestBody.addProperty("model", "gpt-3.5-turbo");

        JsonArray messages = new JsonArray();
        JsonObject systemMessage = new JsonObject();
        systemMessage.addProperty("role", "system");
        systemMessage.addProperty("content", "Ты — полезный Java-ассистент.");
        messages.add(systemMessage);

        JsonObject userMsg = new JsonObject();
        userMsg.addProperty("role", "user");
        userMsg.addProperty("content", userMessage);
        messages.add(userMsg);

        requestBody.add("messages", messages);
        requestBody.addProperty("temperature", 0.7);
        requestBody.addProperty("max_tokens", 500);

        // Создаем HTTP-запрос
        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(API_URL))
                .header("Content-Type", "application/json")
                .header("Authorization", "Bearer " + API_KEY)
                .POST(HttpRequest.BodyPublishers.ofString(requestBody.toString()))
                .build();

        // Отправляем и получаем ответ
        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        // Парсим ответ
        JsonObject jsonResponse = new com.google.gson.JsonParser().parse(response.body()).getAsJsonObject();
        String reply = jsonResponse.getAsJsonArray("choices")
                .get(0).getAsJsonObject()
                .getAsJsonObject("message")
                .get("content").getAsString();

        return reply;
    }

    public static void main(String[] args) throws Exception {
        String question = "Напиши пример кода на Java для чтения файла.";
        String answer = askChatGPT(question);
        System.out.println("ChatGPT: " + answer);
    }
}

Запустите этот код. Если все настроено правильно, вы увидите ответ от ChatGPT прямо в консоли. Обратите внимание: мы использовали системное сообщение (system), которое задает роль модели. Это помогает получать более релевантные ответы.

Улучшаем интеграцию: добавляем обработку ошибок

В реальном проекте просто так вызывать API нельзя. Нужно обрабатывать ошибки сети, лимиты API и невалидные ответы. Давайте добавим базовую обработку:

public static String askChatGPTSafe(String userMessage) {
    try {
        return askChatGPT(userMessage);
    } catch (Exception e) {
        System.err.println("Ошибка при запросе к ChatGPT: " + e.getMessage());
        return "Извините, не удалось получить ответ. Попробуйте позже.";
    }
}

Также полезно добавить логирование и повторные попытки (retry) при временных ошибках. Но для первого знакомства достаточно и этого.

Реальный сценарий: ИИ-помощник для отладки кода

Теперь давайте создадим что-то более полезное. Представьте: ваш коллега (или вы сами) вставил в чат кусок кода с ошибкой, а ИИ должен найти проблему и предложить исправление. Вот как это можно реализовать:

public class CodeReviewer {

    public static String reviewCode(String codeSnippet) throws Exception {
        String prompt = "Проверь следующий Java-код на ошибки. " +
                "Если найдешь проблемы, объясни их и предложи исправленный вариант:\n\n" +
                "```java\n" + codeSnippet + "\n```";

        return ChatGPTClient.askChatGPT(prompt);
    }

    public static void main(String[] args) throws Exception {
        String badCode = """
                public class Test {
                    public static void main(String[] args) {
                        int x = 10
                        System.out.println(x)
                    }
                }
                """;

        String review = reviewCode(badCode);
        System.out.println("Результат ревью:\n" + review);
    }
}

Запустите — и ChatGPT найдет пропущенные точки с запятой и расскажет, как это исправить. Отличный инструмент для обучения и быстрой проверки!

Продвинутый пример: генерация Java-методов по описанию

А что, если попросить ChatGPT написать метод на Java по словесному описанию? Это может стать ва

Блоги

Рекомендаций по книгам