Code_analyze.1.0 / README.md
Vilyam888's picture
Update README.md
349d09e verified
---
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