Skip to content

ark2016/VK-Technopark-project-2024

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Курсовая работа VK: Автоматизированное создание тестов и оценка метрик

Этот репозиторий предоставляет решение на основе FastAPI для генерации, анализа и оценки тестов Python-кода. Реализована интеграция с большими языковыми моделями (LLM) и кастомные алгоритмы оценки метрик.


Содержание


Особенности

  • Интеграция с 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

  1. Сборка Docker-образа:

    docker build -t vk-course-work-python-3.12 .
  2. Запуск контейнера:

    docker run -p 8000:8000 vk-course-work-python-3.12

    После запуска приложение будет доступно по адресу http://127.0.0.1:8000.

  3. Выключение контейнера:

    • Чтобы завершить работу контейнера, используйте сочетание клавиш Ctrl+C в терминале, где он запущен.
    • Если контейнер работает в фоновом режиме, остановите его командой:
      docker stop <container_id>
      Узнать идентификатор контейнера можно с помощью:
      docker ps
  4. Удаление контейнеров: Если нужно удалить все остановленные контейнеры, выполните:

    docker container prune

Установка

Требования

  • Python 3.9+
  • pip (менеджер пакетов Python)

Шаги

  1. Клонируйте репозиторий:

    git clone <repository_url>
    cd LLM
  2. Создайте виртуальное окружение:

    python3 -m venv venv
    source venv/bin/activate  # Для Windows: venv\Scripts\activate
  3. Установите зависимости:

    pip install -r requirements.txt
  4. Настройте API-ключи и конфигурации:

    • Поместите ваш API-ключ Mistral в файл utils/Mistral/config.py:

      # config.py
      api_key = "ВАШ_API_КЛЮЧ"

Использование

Запуск сервера

Для запуска FastAPI-сервера выполните:

uvicorn main:app --reload

По умолчанию сервер будет доступен по адресу http://127.0.0.1:8000.


API эндпоинты

Проверка работоспособности

  • 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

Как внести вклад

Мы рады любым улучшениям! Следуйте этим шагам:

  1. Форкните репозиторий.
  2. Создайте ветку для изменений: git checkout -b feature-name.
  3. Сделайте коммит изменений: git commit -m "Добавлено улучшение".
  4. Отправьте изменения: git push origin feature-name.
  5. Создайте Pull Request.

Лицензия

Этот проект распространяется под лицензией MIT. Подробности см. в файле LICENSE.


About

course work

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors