- BrainTools - https://www.braintools.ru -

Пробуем использовать бесплатные ИИ для написания кода

Интро

Искусственный интеллект [1] проникает повсюду. Если он нас ещё физически не захватил, то информационное поле уже почти всё занял. Каждую неделю появляются новости о том, что ИИ стал ещё лучше и скоро заменит те или иные профессии. Но если посмотреть на реальные показатели, картина не столь радужная: даже топовые модели ошибаются на сложных задачах, а компании иногда получают сбои после внедрения AI и принимают меры [2]. Но кажется, что мир понемногу меняется, и глупо сегодня это игнорировать и не пробовать.

В этой статье хочется рассказать, что уже сегодня может попробовать среднестатистический айтишник, который не особо погружался в эту тему.

Пробуем использовать бесплатные ИИ для написания кода - 1

О чем статья

В статье будут базовые примеры и пояснения, как можно настроить и попробовать ИИ для рефакторинга кода или других задач. Мы не будем сравнивать модели по качеству, так как для этого есть специальные рейтинги [3] и бенчмарки [4]. Удовлетворительный результат для нас будет, если за приемлемое время (пару минут) модель сделает то, что мы хотим. И естественно, хочется это всё бесплатно, так как мы только начинаем этот путь в мир ИИ. Фактор бесплатности здесь больше обусловлен стремлением понять азы и попробовать, подходит вам эта модель взаимодействия с AI или нет, прежде чем погружаться с головой в этот мир и покупать недешевые подписки.

Немного истории

Если сегодня слышишь ИИ, то обычно речь идет о LLM [5] (она же Большая языковая модель). Большая, потому что там очень много параметров (миллиарды и более). Если упростить до сути, то это черный ящик, основанный на нейронной сети [6], который статистически умеет предполагать и очень хорошо, следующий токен (например, слово) на основе предыдущего текста. Черный ящик — я написал не просто так, понять почему модель дала именно этот ответ на вопрос, задача очень и очень сложная.

Если посмотреть, как ИИ начало проникать в ИТ-среду с точки зрения [7] ее использования, то сначала их использовали для автодополнения кода, например, GitHub Copilot. После этого появились способы коммуникации с ИИ через чаты, решения наподобие ChatGPT. Где приходилось копировать код из IDE в чат и обратно, что не совсем удобно. Сегодня самым интересным решением является взаимодействие с ИИ через агентов. Агенты — если упрощенно, то это приложения, которые вы ставите к себе на компьютер и они, общаясь с ИИ, могут менять ваши локальные файлы. Их исполнение может быть различным: консольные утилиты, как плагин для IDE, приложения со своим UI. Но основной подход один, они меняют ваши файлы, выполняя задачу которую вы поставили и при этом обращаются с ИИ по API (то есть отправляя запросы через интернет к серверам компании).

Стоит еще немного рассказать про один вариант использования ИИ, о котором мы не упомянули — это так называемые AI-first IDE, IDE специально созданные для написания кода с помощью ИИ, их яркие представители – это Cursor, Zed и много других.
На самом деле сфера ИИ сейчас очень быстро развивается, появляются новые модели, агенты и чаты настолько быстро, что уследить за этим очень сложно. Возможно, в этой статье я что-то пропустил, или это уже устаревшие данные, поэтому советую немного погуглить и посмотреть рейтинги моделей и агентов, возможно уже что-то новое будет поинтереснее, чем примеры в статье.

Агенты

Мы уже поняли, что нам нужен агент, который будет менять наш код, используя ИИ. Сегодня практически у каждой компании, у которой есть своя LLM и чат для взаимодействия, есть и своё приложение (агент) для работы с кодом. Вот самые яркие представители:

  • Claude Code [8] — от Anthropic, их решения для кода сегодня занимают верхние позиции в рейтингах

  • Codex [9] — от OpenAI

  • Qwen Code [10] — от Alibaba

  • и много других от разных компаний

Отдельно хочется отметить агенты, которые могут работать с различными моделями, обычно это агенты с открытым исходным кодом:

В статье мы посмотрим только на два из них: Claude Code и Kilo Code, почему именно они, по моему мнению, это одни из самых популярных и/или набирающих популярность решений. Но можете взять любые другие, благо их много, на любой вкус [14] и цвет. Claude Code мы будем использовать как консольное приложение, а Kilo Code — как плагин в VS Code для разнообразия. Установить их довольно просто, и есть много гайдов в интернете, не будем на этом останавливаться.

Бесплатно и ограничено

Первое, что приходит в голову поискать бесплатные предложения. Так как сейчас идет гонка ИИ, то многие компании борются за рынок и дают бесплатный доступ к некоторым моделям с ограничениями для вовлечения пользователей. Ресурсы, где можно найти бесплатный доступ к моделям:

  • OpenRouter [15] — агрегатор-прокси к разным моделям, есть порядка десятка бесплатных моделей, но не самых популярных.

  • Kilo Code — после установки у него из коробки есть парочка бесплатных моделей, но с ограничениями.

Модели доступные в Kilo Code во время написания статьи
Бесплатные модели

Бесплатные модели
  • Qwen Code — дает бесплатный доступ [16] и 1,000 бесплатных запросов в день. Установив qwen и получив токен, можно этот токен использовать в любом другом агенте. Остановимся на нем для дальнейших экспериментов.

  • Уверен, что есть и другие способы и ресурсы с бесплатными моделями.

Важное уточнение: бесплатные квоты часто имеют ограничения по частоте запросов (RPM) и дневному лимиту, и их может не хватить на интенсивную работу, но для базового сценария и для первых проб мне обычно хватает.

Получаем токен через Qwen

Установить Qwen Code несложно — есть гайд [17] и даже на русском [18].
После того, как установили, нужно его запустить простой командой qwen и авторизоваться. Командой /auth выбираем Qwen OAuth.

Как выглядит qwen
Пробуем использовать бесплатные ИИ для написания кода - 3

Нас перенаправит на сайт, на котором нужно будет создать аккаунт, и после этого мы получим 1,000 бесплатных запросов в день. Можно спокойно закрывать консоль. Сам же токен, который нам нужен для экспериментов, будет находиться в файле oauth_creds.json, на MacOS он находится в скрытой папке по пути /Users/user/.qwen/oauth_creds.json. Нам нужен будет access_token из этого файла.

На самом деле можно уже использовать Qwen Code как агента для написания кода, но мы пойдем дальше и будем использовать модель qwen через других агентов.

Kilo Code и Qwen

Kilo Code мы будем использовать через плагин [19] для VS Code, есть также плагин для IDEA [20] и CLI. Плагин поставить просто, настроить тоже довольно просто, так как Kilo Code имеет встроенную интеграцию с Qwen Code и многими другими провайдерами. После этого важно переключить все профили в выпадающем списке на нашу модель.

Конфигурация для Qwen code
Пробуем использовать бесплатные ИИ для написания кода - 4
Не забыть переключить профиль на qwen
Пробуем использовать бесплатные ИИ для написания кода - 5

Claude Code и Qwen

Тут немного сложнее, так как у Claude Code немного другой API, нам нужно прокси, которая будет преобразовывать запросы от Claude Code в универсальный формат для LLM. Для этого мы воспользуемся Claude Code Router [21]. Нам нужно установить claude-code и claude-code-router. Есть довольно простая инструкция [22], как это сделать.
После этого создаем конфигурационный файл ~/.claude-code-router/config.json и меняем там api_key на access_token от Qwen.

Содержание файла config.json
{
  "LOG": true,
  "LOG_LEVEL": "info",
  "HOST": "127.0.0.1",
  "PORT": 3456,
  "API_TIMEOUT_MS": 600000,
  "Providers": [
    {
      "name": "qwen",
      "api_base_url": "https://portal.qwen.ai/v1/chat/completions",
      "api_key": "access_token_from_.qwen/oauth_creds.json",
      "models": [
        "qwen3-coder-plus",
        "qwen3-coder-plus",
        "qwen3-coder-plus"
      ]
    }
  ],
  "Router": {
    "default": "qwen,qwen3-coder-plus",
    "background": "qwen,qwen3-coder-plus",
    "think": "qwen,qwen3-coder-plus",
    "longContext": "qwen,qwen3-coder-plus",
    "longContextThreshold": 60000,
    "webSearch": "qwen,qwen3-coder-plus"
  }
}

Далее запускаем Claude Code Router командой ccr restart и затем запускаем Claude Code через роутер командой ccr code. После этого можем спокойно пользоваться Claude Code, где под капотом будет работать модель от Qwen.

Пробуем работоспособность

Для проверки работоспособности возьмем простой Java-код и попросим наших агентов его отрефакторить

Код для рефакторинга
import java.util.*;

public class DataProcessor {
    public List<Map<String, Object>> processData(List<Map<String, Object>> data, Map<String, Object> options) {
        if (options == null) {
            options = new HashMap<>();
        }
        List<Map<String, Object>> result = new ArrayList<>();
        for (Map<String, Object> item : data) {
            if (item.containsKey("price") && item.containsKey("quantity")) {
                double price = ((Number) item.get("price")).doubleValue();
                int quantity = ((Number) item.get("quantity")).intValue();
                double discount = options.containsKey("discount") ? ((Number) options.get("discount")).doubleValue() : 0.0;
                double total = price * quantity * (1 - discount);
                
                Map<String, Object> processedItem = new HashMap<>();
                processedItem.put("name", item.getOrDefault("name", "Unnamed"));
                processedItem.put("total", total);
                if (total > 100) {
                    processedItem.put("category", "expensive");
                } else {
                    processedItem.put("category", "cheap");
                }
                result.add(processedItem);
            } else {
                System.out.println("Skipping item: " + item);
            }
        }
        return result;
    }

    public static void main(String[] args) {
        DataProcessor processor = new DataProcessor();
        List<Map<String, Object>> data = new ArrayList<>();
        
        Map<String, Object> item1 = new HashMap<>();
        item1.put("name", "Laptop");
        item1.put("price", 1000);
        item1.put("quantity", 1);
        data.add(item1);
        
        Map<String, Object> item2 = new HashMap<>();
        item2.put("name", "Mouse");
        item2.put("price", 25);
        item2.put("quantity", 2);
        data.add(item2);
        
        Map<String, Object> item3 = new HashMap<>();
        item3.put("price", 50);
        item3.put("quantity", 3);
        data.add(item3);
        
        Map<String, Object> item4 = new HashMap<>();
        item4.put("name", "Keyboard");
        item4.put("price", 80);
        item4.put("quantity", 1);
        data.add(item4);
        
        Map<String, Object> options = new HashMap<>();
        options.put("discount", 0.1);
        
        List<Map<String, Object>> result = processor.processData(data, options);
        System.out.println(result);
    }
}
Задание для агентов
Perform a refactoring of the following "spaghetti code" in DataProcessor.java. Requirements:

1. Break down the monolithic method into logical classes with proper separation of concerns (e.g., a separate class for calculations, another for data processing).
2. Add error handling (use exceptions instead of printing to console).
3. Write Javadoc for each new class and method.
4. Briefly explain the architectural changes you made and why.

Оба агента справились примерно за полторы-две минуты — на мой взгляд, это отличный результат. Хоть результаты их получились разные (оценивать качество которых мы не будем), но возможность использовать бесплатных, хоть и ограниченных помощников мы продемонстрировали.

Вместо итогов

Если вы еще никогда не пробовали AI помощников для написания кода и делегирования им части своей работы, то настоятельно советую попробовать. Возможно, вам понравится и вы увидите их пользу, если нет, то это тоже опыт [23] и результат. При этом эта статья, надеюсь, поможет вам не покупать подписку на платную модель, которая не всегда дешевая, а попробовать это бесплатно и решить, нужно ли вам платное решение или нет.

Результаты работы агентов можно посмотреть на GitHub [24].

Автор: sergio5990

Источник [25]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/28276

URLs in this post:

[1] интеллект: http://www.braintools.ru/article/7605

[2] принимают меры: https://habr.com/ru/news/1008860/

[3] рейтинги: https://openrouter.ai/rankings

[4] бенчмарки: https://habr.com/ru/articles/844974/

[5] LLM: https://ru.wikipedia.org/wiki/%D0%91%D0%BE%D0%BB%D1%8C%D1%88%D0%B0%D1%8F_%D1%8F%D0%B7%D1%8B%D0%BA%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BC%D0%BE%D0%B4%D0%B5%D0%BB%D1%8C

[6] нейронной сети: https://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B9%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D1%81%D0%B5%D1%82%D1%8C

[7] зрения: http://www.braintools.ru/article/6238

[8] Claude Code: https://code.claude.com/docs/en/overview

[9] Codex: https://openai.com/ru-RU/codex/

[10] Qwen Code: https://qwen.ai/qwencode

[11] OpenCode: https://opencode.ai/

[12] Cline: https://cline.bot/

[13] Kilo Code: https://kilo.ai/

[14] вкус: http://www.braintools.ru/article/6291

[15] OpenRouter: https://openrouter.ai/models?order=pricing-low-to-high

[16] бесплатный доступ: https://qwenlm.github.io/qwen-code-docs/ru/users/configuration/auth/#%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82-1-oauth-%D0%BE%D1%82-qwen-%D0%B1%D0%B5%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D0%BD%D0%BE

[17] гайд: https://github.com/QwenLM/qwen-code?tab=readme-ov-file#installation

[18] русском: https://qwenlm.github.io/qwen-code-docs/ru/users/quickstart/#%D1%88%D0%B0%D0%B3-1-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-qwen-code

[19] плагин: https://marketplace.visualstudio.com/items?itemName=kilocode.Kilo-Code

[20] IDEA: https://plugins.jetbrains.com/plugin/28350-kilo-code

[21] Claude Code Router: https://github.com/musistudio/claude-code-router

[22] инструкция: https://github.com/musistudio/claude-code-router?tab=readme-ov-file#1-installation

[23] опыт: http://www.braintools.ru/article/6952

[24] GitHub: https://github.com/sergio5990/ai_agent_test

[25] Источник: https://habr.com/ru/articles/1019326/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1019326

www.BrainTools.ru

Rambler's Top100