https://github.com/ark2016/vk-technopark-project-2024
course work
https://github.com/ark2016/vk-technopark-project-2024
ai bmstu ml technopark test-generation vk
Last synced: about 1 month ago
JSON representation
course work
- Host: GitHub
- URL: https://github.com/ark2016/vk-technopark-project-2024
- Owner: ark2016
- License: mit
- Created: 2024-10-20T21:08:35.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-26T10:14:33.000Z (over 1 year ago)
- Last Synced: 2025-03-21T16:12:24.861Z (over 1 year ago)
- Topics: ai, bmstu, ml, technopark, test-generation, vk
- Language: Python
- Homepage:
- Size: 5.25 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README
---
# Курсовая работа VK: Автоматизированное создание тестов и оценка метрик
Этот репозиторий предоставляет решение на основе FastAPI для генерации, анализа и оценки тестов Python-кода. Реализована интеграция с большими языковыми моделями (LLM) и кастомные алгоритмы оценки метрик.
---
## Содержание
- [Особенности](#особенности)
- [Структура проекта](#структура-проекта)
- [Установка](#установка)
- [Использование](#использование)
- [API эндпоинты](#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
1. **Сборка Docker-образа:**
```bash
docker build -t vk-course-work-python-3.12 .
```
2. **Запуск контейнера:**
```bash
docker run -p 8000:8000 vk-course-work-python-3.12
```
После запуска приложение будет доступно по адресу `http://127.0.0.1:8000`.
3. **Выключение контейнера:**
- Чтобы завершить работу контейнера, используйте сочетание клавиш `Ctrl+C` в терминале, где он запущен.
- Если контейнер работает в фоновом режиме, остановите его командой:
```bash
docker stop
```
Узнать идентификатор контейнера можно с помощью:
```bash
docker ps
```
4. **Удаление контейнеров:**
Если нужно удалить все остановленные контейнеры, выполните:
```bash
docker container prune
```
---
## Установка
### Требования
- Python 3.9+
- pip (менеджер пакетов Python)
### Шаги
1. Клонируйте репозиторий:
```bash
git clone
cd LLM
```
2. Создайте виртуальное окружение:
```bash
python3 -m venv venv
source venv/bin/activate # Для Windows: venv\Scripts\activate
```
3. Установите зависимости:
```bash
pip install -r requirements.txt
```
4. Настройте API-ключи и конфигурации:
- Поместите ваш API-ключ `Mistral` в файл `utils/Mistral/config.py`:
```python
# config.py
api_key = "ВАШ_API_КЛЮЧ"
```
---
## Использование
### Запуск сервера
Для запуска FastAPI-сервера выполните:
```bash
uvicorn main:app --reload
```
По умолчанию сервер будет доступен по адресу `http://127.0.0.1:8000`.
---
## API эндпоинты
### Проверка работоспособности
- **URL**: `/ping`
- **Метод**: `GET`
- **Ответ**: `{ "status": "OK" }`
### Генерация ответа
- **URL**: `/get_chat_response`
- **Метод**: `POST`
- **Тело запроса**:
```json
{
"prompt": "Ваш запрос",
"context": "Необязательный контекст",
"model": "Название модели"
}
```
- **Ответ**:
```json
{
"response": "Сгенерированный ответ"
}
```
### Генерация тестов
- **URL**: `/generate_tests`
- **Метод**: `POST`
- **Тело запроса**:
```json
{
"code": "Код Python-функции"
}
```
- **Ответ**:
```json
{
"generated_tests": "Сгенерированные тесты"
}
```
### Анализ тестов
- **URL**: `/analyze_tests`
- **Метод**: `POST`
- **Тело запроса**:
```json
{
"code": "Код Python-функции",
"tests": "Необязательные тесты для анализа"
}
```
- **Ответ**:
```json
{
"analysis": "Результаты анализа"
}
```
### Оценка метрик
- **URL**: `/evaluate_metrics`
- **Метод**: `POST`
- **Тело запроса**:
```json
{
"csv_path": "Путь к CSV-файлу"
}
```
- **Ответ**:
```json
{
"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.
### Тестирование
Для запуска тестов выполните:
```bash
pytest
```
### Прехуки
Настройте прехуки для линтинга и форматирования:
```bash
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`.
---