File size: 5,577 Bytes
3027781
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
349d09e
3027781
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
---
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