--- library_name: transformers license: apache-2.0 base_model: Qwen/Qwen2.5-Coder-3B-Instruct pipeline_tag: text-generation inference: true tags: - code - code-analysis - qwen - qwen2 - text-generation - transformers - fine-tuned widget: - text: "Задача:\nНапишите функцию, которая принимает список чисел и возвращает сумму всех элементов.\n\nРешение (код):\n```python\ndef sum_list(numbers):\n total = 0\n for num in numbers:\n total += num\n return total\n```\n\nОтвет:\n" example_title: "Анализ кода - сумма списка" - text: "Задача:\nСоздайте функцию для вычисления факториала числа.\n\nРешение (код):\n```python\ndef factorial(n):\n if n <= 1:\n return 1\n return n * factorial(n-1)\n```\n\nОтвет:\n" example_title: "Анализ кода - факториал" --- # Code Analyzer Model Fine-tuned версия модели Qwen2.5-Coder-3B-Instruct для анализа кода студента на основе условия задачи. ## Описание модели Эта модель предназнаечена для анализа кода студента. Модель принимает: - **Условие задачи** (текстовое описание) - **Код решения студента** (Python код) И возвращает детальный анализ в формате JSON, включающий: - Оценку правильности решения - Анализ соответствия требованиям задачи - Оценку качества кода - Сильные и слабые стороны решения - Рекомендации по улучшению - Детальный анализ с обоснованием Модель основана на Qwen2.5-Coder-3B-Instruct и дообучена с использованием LoRA (Low-Rank Adaptation). ## Быстрый старт ### Вариант 1: Использование локально (Python) **Установка зависимостей:** ```bash pip install transformers torch ``` **Простой пример использования:** ```python from transformers import AutoModelForCausalLM, AutoTokenizer import torch import json model_name = "Vilyam888/Code_analyze.1.0" # Загрузка модели tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True ) # Условие задачи task = "Напишите функцию, которая принимает список чисел и возвращает сумму всех элементов." # Код студента code = """def sum_list(numbers): total = 0 for num in numbers: total += num return total""" # Форматирование входа input_text = f"Задача:\n{task}\n\nРешение (код):\n```python\n{code}\n```" prompt = f"{input_text}\n\nОтвет:\n" # Генерация анализа inputs = tokenizer(prompt, return_tensors="pt").to(model.device) with torch.no_grad(): outputs = model.generate( **inputs, max_new_tokens=1024, temperature=0.7, top_p=0.8, top_k=20, repetition_penalty=1.05, do_sample=True ) # Декодирование и парсинг JSON response = tokenizer.decode(outputs[0], skip_special_tokens=True) result = response.split("Ответ:")[-1].strip() analysis = json.loads(result) print(json.dumps(analysis, ensure_ascii=False, indent=2)) ``` **Или используйте готовые скрипты из репозитория:** Простой пример (минимальный код): ```bash python scripts/quick_start_example.py ``` Полный пример с интерактивным режимом: ```bash python scripts/use_model_example.py ``` ## Детали обучения - **Базовая модель:** Qwen/Qwen2.5-Coder-3B-Instruct - **Метод обучения:** LoRA (Low-Rank Adaptation) - **Параметры LoRA:** - `r`: 16 - `lora_alpha`: 32 - `lora_dropout`: 0.05 - **Фреймворк:** TRL (Transformer Reinforcement Learning) - **Формат данных:** JSONL с полями `input` и `output` ## Ограничения - Модель обучена на русском языке для анализа кода - Может генерировать неточные или неполные ответы - Требует GPU для эффективной работы ## Использование через API Модель можно использовать через несколько способов: ### 1. Через transformers (Python) ```python from transformers import AutoModelForCausalLM, AutoTokenizer ``` ### 2. Через Hugging Face Inference API ```python import requests API_URL = "https://api-inference.huggingface.co/models/Vilyam888/Code_analyze.1.0" ``` ### 3. Через Gradio Space API Если создан Gradio Space, можно использовать его API endpoint. ### 4. Интеграция в Backend проект Примеры для FastAPI, Flask, Django, Node.js и других фреймворков. ## Лицензия Apache 2.0 ## Авторы Fine-tuned by Vilyam888