{"id":21841942,"url":"https://github.com/ark2016/vk-technopark-project-2024","last_synced_at":"2026-05-15T12:32:42.293Z","repository":{"id":265054634,"uuid":"875797658","full_name":"ark2016/VK-Technopark-project-2024","owner":"ark2016","description":"course work","archived":false,"fork":false,"pushed_at":"2024-12-26T10:14:33.000Z","size":5505,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-21T16:12:24.861Z","etag":null,"topics":["ai","bmstu","ml","technopark","test-generation","vk"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ark2016.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-10-20T21:08:35.000Z","updated_at":"2024-12-26T10:14:37.000Z","dependencies_parsed_at":"2024-12-12T07:32:38.386Z","dependency_job_id":"32014cc0-434d-4665-98fa-7837ce46cd50","html_url":"https://github.com/ark2016/VK-Technopark-project-2024","commit_stats":null,"previous_names":["ark2016/vk-technopark-project-2024"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ark2016/VK-Technopark-project-2024","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ark2016%2FVK-Technopark-project-2024","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ark2016%2FVK-Technopark-project-2024/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ark2016%2FVK-Technopark-project-2024/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ark2016%2FVK-Technopark-project-2024/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ark2016","download_url":"https://codeload.github.com/ark2016/VK-Technopark-project-2024/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ark2016%2FVK-Technopark-project-2024/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259857655,"owners_count":22922802,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","bmstu","ml","technopark","test-generation","vk"],"created_at":"2024-11-27T22:09:14.422Z","updated_at":"2026-05-15T12:32:42.251Z","avatar_url":"https://github.com/ark2016.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\n\n# Курсовая работа VK: Автоматизированное создание тестов и оценка метрик\n\nЭтот репозиторий предоставляет решение на основе FastAPI для генерации, анализа и оценки тестов Python-кода. Реализована интеграция с большими языковыми моделями (LLM) и кастомные алгоритмы оценки метрик.\n\n---\n\n## Содержание\n\n- [Особенности](#особенности)\n- [Структура проекта](#структура-проекта)\n- [Установка](#установка)\n- [Использование](#использование)\n- [API эндпоинты](#api-эндпоинты)\n- [Разработка](#разработка)\n- [Как внести вклад](#как-внести-вклад)\n- [Лицензия](#лицензия)\n\n---\n\n## Особенности\n\n- **Интеграция с LLM**: Генерация и анализ тестов для Python-кода с использованием продвинутых моделей.\n- **Оценка метрик**: Анализ покрытия тестов с помощью кастомных алгоритмов.\n- **Готовность API**: Функциональность доступна через RESTful API на FastAPI.\n- **Легкий запуск**: Запуск сервера с минимальными настройками.\n\n---\n\n## Структура проекта\n\n```\nLLM\n├── main.py                # Точка входа в приложение\n├── app\n│   ├── routers\n│   │   └── questions.py   # Маршруты API для генерации, анализа тестов и метрик\n│   ├── schemas            # Pydantic-схемы для проверки запросов и ответов\n│   │   └── questions.py\n│   ├── utils              # Вспомогательные утилиты\n│       ├── Metrics\n│       │   ├── metric_evaluation.py\n│       │   └── metric_module_v2\n│       │       ├── mertic.py\n│       └── Mistral\n│           ├── mistral.py\n│           ├── inference_gptbigcode.py\n│           └── config.py  # Файл конфигурации, куда необходимо поместить API key\n```\n\n---\n\n\n### Использование Docker\n\n1. **Сборка Docker-образа:**\n   ```bash\n   docker build -t vk-course-work-python-3.12 .\n   ```\n\n2. **Запуск контейнера:**\n   ```bash\n   docker run -p 8000:8000 vk-course-work-python-3.12\n   ```\n\n   После запуска приложение будет доступно по адресу `http://127.0.0.1:8000`.\n\n3. **Выключение контейнера:**\n   - Чтобы завершить работу контейнера, используйте сочетание клавиш `Ctrl+C` в терминале, где он запущен.\n   - Если контейнер работает в фоновом режиме, остановите его командой:\n     ```bash\n     docker stop \u003ccontainer_id\u003e\n     ```\n     Узнать идентификатор контейнера можно с помощью:\n     ```bash\n     docker ps\n     ```\n\n4. **Удаление контейнеров:**\n   Если нужно удалить все остановленные контейнеры, выполните:\n   ```bash\n   docker container prune\n   ```\n---\n## Установка\n\n### Требования\n\n- Python 3.9+\n- pip (менеджер пакетов Python)\n\n### Шаги\n\n1. Клонируйте репозиторий:\n\n   ```bash\n   git clone \u003crepository_url\u003e\n   cd LLM\n   ```\n\n2. Создайте виртуальное окружение:\n\n   ```bash\n   python3 -m venv venv\n   source venv/bin/activate  # Для Windows: venv\\Scripts\\activate\n   ```\n\n3. Установите зависимости:\n\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n4. Настройте API-ключи и конфигурации:\n   - Поместите ваш API-ключ `Mistral` в файл `utils/Mistral/config.py`:\n\n     ```python\n     # config.py\n     api_key = \"ВАШ_API_КЛЮЧ\"\n     ```\n\n---\n\n## Использование\n\n### Запуск сервера\n\nДля запуска FastAPI-сервера выполните:\n\n```bash\nuvicorn main:app --reload\n```\n\nПо умолчанию сервер будет доступен по адресу `http://127.0.0.1:8000`.\n\n---\n\n## API эндпоинты\n\n### Проверка работоспособности\n\n- **URL**: `/ping`\n- **Метод**: `GET`\n- **Ответ**: `{ \"status\": \"OK\" }`\n\n### Генерация ответа\n\n- **URL**: `/get_chat_response`\n- **Метод**: `POST`\n- **Тело запроса**:\n  ```json\n  {\n    \"prompt\": \"Ваш запрос\",\n    \"context\": \"Необязательный контекст\",\n    \"model\": \"Название модели\"\n  }\n  ```\n- **Ответ**:\n  ```json\n  {\n    \"response\": \"Сгенерированный ответ\"\n  }\n  ```\n\n### Генерация тестов\n\n- **URL**: `/generate_tests`\n- **Метод**: `POST`\n- **Тело запроса**:\n  ```json\n  {\n    \"code\": \"Код Python-функции\"\n  }\n  ```\n- **Ответ**:\n  ```json\n  {\n    \"generated_tests\": \"Сгенерированные тесты\"\n  }\n  ```\n\n### Анализ тестов\n\n- **URL**: `/analyze_tests`\n- **Метод**: `POST`\n- **Тело запроса**:\n  ```json\n  {\n    \"code\": \"Код Python-функции\",\n    \"tests\": \"Необязательные тесты для анализа\"\n  }\n  ```\n- **Ответ**:\n  ```json\n  {\n    \"analysis\": \"Результаты анализа\"\n  }\n  ```\n\n### Оценка метрик\n\n- **URL**: `/evaluate_metrics`\n- **Метод**: `POST`\n- **Тело запроса**:\n  ```json\n  {\n    \"csv_path\": \"Путь к CSV-файлу\"\n  }\n  ```\n- **Ответ**:\n  ```json\n  {\n    \"metric_frame\": [],\n    \"mean_failed\": 0.0,\n    \"mean_coverage_percent\": 100.0,\n    \"output_file\": \"calculated_metrics.csv\"\n  }\n  ```\n- Для корректной обработки, входной `.csv` файл должен ОБЯЗАТЕЛЬНО иметь столбцы `Function` и `Test`!  \n  \n- Выходной файл содержит те же столбцы + `coverage_percent` и `Errors`, содержащих статистику для каждой пары функция/тест.\n\n---\n\n## Разработка\n\n### Стиль кода\n\n- Соблюдайте стандарты PEP 8.\n- Используйте аннотации типов и docstring.\n\n### Тестирование\n\nДля запуска тестов выполните:\n\n```bash\npytest\n```\n\n### Прехуки\n\nНастройте прехуки для линтинга и форматирования:\n\n```bash\npip install pre-commit\npre-commit install\n```\n\n---\n\n## Как внести вклад\n\nМы рады любым улучшениям! Следуйте этим шагам:\n\n1. Форкните репозиторий.\n2. Создайте ветку для изменений: `git checkout -b feature-name`.\n3. Сделайте коммит изменений: `git commit -m \"Добавлено улучшение\"`.\n4. Отправьте изменения: `git push origin feature-name`.\n5. Создайте Pull Request.\n\n---\n\n## Лицензия\n\nЭтот проект распространяется под лицензией MIT. Подробности см. в файле `LICENSE`.\n\n--- ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fark2016%2Fvk-technopark-project-2024","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fark2016%2Fvk-technopark-project-2024","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fark2016%2Fvk-technopark-project-2024/lists"}