Этот репозиторий предоставляет решение на основе FastAPI для генерации, анализа и оценки тестов Python-кода. Реализована интеграция с большими языковыми моделями (LLM) и кастомные алгоритмы оценки метрик.
- Особенности
- Структура проекта
- Установка
- Использование
- API эндпоинты
- Разработка
- Как внести вклад
- Лицензия
- Интеграция с LLM: Генерация и анализ тестов для Python-кода с использованием продвинутых моделей.
- Оценка метрик: Анализ покрытия тестов с помощью кастомных алгоритмов.
- Готовность API: Функциональность доступна через RESTful API на FastAPI.
- Легкий запуск: Запуск сервера с минимальными настройками.
LLM
├── main.py # Точка входа в приложение
├── app
│ ├── routers
│ │ └── questions.py # Маршруты API для генерации, анализа тестов и метрик
│ ├── schemas # Pydantic-схемы для проверки запросов и ответов
│ │ └── questions.py
│ ├── utils # Вспомогательные утилиты
│ ├── Metrics
│ │ ├── metric_evaluation.py
│ │ └── metric_module_v2
│ │ ├── mertic.py
│ └── Mistral
│ ├── mistral.py
│ ├── inference_gptbigcode.py
│ └── config.py # Файл конфигурации, куда необходимо поместить API key
-
Сборка Docker-образа:
docker build -t vk-course-work-python-3.12 . -
Запуск контейнера:
docker run -p 8000:8000 vk-course-work-python-3.12
После запуска приложение будет доступно по адресу
http://127.0.0.1:8000. -
Выключение контейнера:
- Чтобы завершить работу контейнера, используйте сочетание клавиш
Ctrl+Cв терминале, где он запущен. - Если контейнер работает в фоновом режиме, остановите его командой:
Узнать идентификатор контейнера можно с помощью:
docker stop <container_id>
docker ps
- Чтобы завершить работу контейнера, используйте сочетание клавиш
-
Удаление контейнеров: Если нужно удалить все остановленные контейнеры, выполните:
docker container prune
- Python 3.9+
- pip (менеджер пакетов Python)
-
Клонируйте репозиторий:
git clone <repository_url> cd LLM
-
Создайте виртуальное окружение:
python3 -m venv venv source venv/bin/activate # Для Windows: venv\Scripts\activate
-
Установите зависимости:
pip install -r requirements.txt
-
Настройте API-ключи и конфигурации:
-
Поместите ваш API-ключ
Mistralв файлutils/Mistral/config.py:# config.py api_key = "ВАШ_API_КЛЮЧ"
-
Для запуска FastAPI-сервера выполните:
uvicorn main:app --reloadПо умолчанию сервер будет доступен по адресу http://127.0.0.1:8000.
- URL:
/ping - Метод:
GET - Ответ:
{ "status": "OK" }
- URL:
/get_chat_response - Метод:
POST - Тело запроса:
{ "prompt": "Ваш запрос", "context": "Необязательный контекст", "model": "Название модели" } - Ответ:
{ "response": "Сгенерированный ответ" }
- URL:
/generate_tests - Метод:
POST - Тело запроса:
{ "code": "Код Python-функции" } - Ответ:
{ "generated_tests": "Сгенерированные тесты" }
- URL:
/analyze_tests - Метод:
POST - Тело запроса:
{ "code": "Код Python-функции", "tests": "Необязательные тесты для анализа" } - Ответ:
{ "analysis": "Результаты анализа" }
-
URL:
/evaluate_metrics -
Метод:
POST -
Тело запроса:
{ "csv_path": "Путь к CSV-файлу" } -
Ответ:
{ "metric_frame": [], "mean_failed": 0.0, "mean_coverage_percent": 100.0, "output_file": "calculated_metrics.csv" } -
Для корректной обработки, входной
.csvфайл должен ОБЯЗАТЕЛЬНО иметь столбцыFunctionиTest! -
Выходной файл содержит те же столбцы +
coverage_percentиErrors, содержащих статистику для каждой пары функция/тест.
- Соблюдайте стандарты PEP 8.
- Используйте аннотации типов и docstring.
Для запуска тестов выполните:
pytestНастройте прехуки для линтинга и форматирования:
pip install pre-commit
pre-commit installМы рады любым улучшениям! Следуйте этим шагам:
- Форкните репозиторий.
- Создайте ветку для изменений:
git checkout -b feature-name. - Сделайте коммит изменений:
git commit -m "Добавлено улучшение". - Отправьте изменения:
git push origin feature-name. - Создайте Pull Request.
Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.