Языковые моделиnharder
py2mermaid-qwen3-4b
Python в Mermaid, но не замена ast
2 мин чтения
Это файнтюн Qwen/Qwen3-4B-Instruct-2507 (4,02 млрд параметров) от nharder: он превращает Python-код в Mermaid-диаграмму графа вызовов. На вход подаются один или несколько файлов с заголовком # FILE: <path>, на выходе — только flowchart TD с публичными функциями по модулям. Заявлена обработка и кода, который не парсится.
🎯 Ключевые особенности
- 🎯 Одна задача без пояснений: только Mermaid
flowchart TD, без приватных хелперов, прозы, комментариев и<think>. - 🧑💻 Вход — файлы с маркером
# FILE: <path>; каждая публичная функция рисуется один раз в subgraph своего модуля. - ⚙ Обучение: LoRA (rank 16, scale 2.0, все слои) на 4-битной копии базы, затем слияние в bf16-веса.
- 🔍 Если публичных вызовов нет, модель отвечает ровно
SKIP: NO_PUBLIC_CALLS; для непарсящегося кода пытается восстановить задуманный граф. - 📌 Карточка прямо говорит: на валидном коде Python
astточнее, а проект рекомендует router без модели.
💻 Пример
from huggingface_hub import hf_hub_download
from transformers import AutoModelForCausalLM, AutoTokenizer
repo = 'nharder/py2mermaid-qwen3-4b'
tok = AutoTokenizer.from_pretrained(repo)
model = AutoModelForCausalLM.from_pretrained(repo, torch_dtype='auto', device_map='auto')
system_prompt = open(hf_hub_download(repo, 'system_prompt.txt')).read()
source = '# FILE: shop.py\n' + open('shop.py').read()
# messages = [{'role': 'system', 'content': system_prompt}, {'role': 'user', 'content': source}]Подробнее
На 273 сломанных файлах модель прошла 176 (seed 2 — 170), при потерянных отступах — 23 из 33.База Qwen3-4B — 0, tree-sitter — 170, router с compile-поиском без модели — 256 и 33/33.
На 40 locked-сценариях: 16/25 чистых и 11/15 состязательных; routers проходят все 40.
Ограничения: рёбра добавляются/теряются примерно на трети входов, на чистом коде не лучше v2, поломки синтетические; только Python и до ~3000 токенов.








Комментарии
Без регистрации: достаточно имени.