Code Executor Service — сервис для автоматической генерации, выполнения и исправления кода. Пользователь задаёт задание на естественном языке («Напиши функцию на Python, которая считает факториал»), LLM генерирует код, код выполняется в изолированном контейнере; при ошибке — анализ и перегенерация до успеха или исчерпания попыток.
Цикл генерации и исправления
НЯ — естественный язык. Классификация ошибки (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 и кэш.