Загрузка...

Блог

Что такое Code Executor Service и как он работает

Что такое Code Executor Service и как он работает

Code Executor Service — сервис для автоматической генерации, выполнения и исправления кода. Пользователь задаёт задание на естественном языке («Напиши функцию на Python, которая считает факториал»), LLM генерирует код, код выполняется в изолированном контейнере; при ошибке — анализ и перегенерация до успеха или исчерпания попыток.

Цикл генерации и исправления

flowchart TB A[Задание НЯ] --> B[LLM генерирует код] B --> C[Kubernetes Job выполняет] C --> D{Успех?} D -->|Да| E[Результат + тесты] D -->|Нет| F[Анализ ошибки] F --> G[Перегенерация с учётом ошибки] G --> B E --> H[Ответ пользователю]

НЯ — естественный язык. Классификация ошибки (syntax, runtime, logic, import) помогает LLM скорректировать код; цикл повторяется до успеха или достижения max_retries.

Как это устроено

Цикл: задание → генерация кода через LLM (например, Qwen instruct) → выполнение в Kubernetes Job (образ с интерпретаторами) → проверка результата (exit code, stdout/stderr, тестовые случаи) → при ошибке анализ (syntax, runtime, logic, import) и перегенерация с учётом ошибки → повтор до успеха или max_retries. Опционально self-consistency: несколько кандидатов кода и LLM-as-a-judge для выбора лучшего.

Поддерживаемые языки

Python (python3), JavaScript (node), TypeScript (ts-node), Go (go run), Bash (shell). Выполнение — в образе, содержащем нужные среды (например, образ code-linter с Node.js, Python, Go).

Сценарии применения

  • Автоматическая разработка: генерация кода по описанию, прототипирование, автоисправление ошибок.
  • Тестирование и валидация: автоматическое написание тестов, проверка работоспособности, валидация алгоритмов.
  • Обучение программированию: примеры кода, демонстрация решений, автоматическая проверка заданий.
  • Автоматизация: генерация скриптов по описанию, утилиты, алгоритмические задачи.

Ключевые преимущества

ВозможностьОписание
АвтоисправлениеЦикл перегенерации при ошибках до успешного выполнения
ИзоляцияКод выполняется в отдельных Kubernetes контейнерах
БезопасностьОграничение ресурсов, таймауты, лимит размера кода
Self-consistencyОпционально: несколько кандидатов и выбор лучшего
Кэш и историяПовторяющиеся задания из кэша; few-shot из успешных решений

Стек: FastAPI, LLM (Qwen или другой instruction-tuned генератор кода), выполнение через Kubernetes Jobs (образ code-linter), PostgreSQL (история, кэш, few-shot), Prometheus и Grafana.

Итого: Code Executor генерирует код по заданию, выполняет его в изолированном Job и при ошибке перегенерирует с учётом анализа; поддерживаются Python, JS, Go, Bash; опционально self-consistency и кэш.