Schema JSON Extractor 4B
JSON по схеме и null для пропусков
Это LoRA-адаптер от abr-6024 поверх Qwen/Qwen3-4B-Instruct-2507. На входе — JSON Schema и текст, на выходе — один JSON-объект, валидный по схеме; поля, которых нет в тексте, заполняются null. Автор называет модель исследовательским артефактом с узким и честно измеренным преимуществом.
⚙ Ключевые особенности
- ⚙ LoRA r=32, alpha=64, dropout 0.05 на всех attention- и MLP-проекциях; обучение — 4-bit NF4 QLoRA на одной free-tier T4.
- 📌 Промпт: схема и текст в тегах
<schema>и<text>; правила — только значения из текста, null для отсутствующих, нормализация дат, чисел и enum, только JSON без пояснений. - 🛡 Снижает следование скрытым инструкциям: 2 из 9 атак на первом наборе и 0 из 9 на свежем против 8 из 9 и 9 из 9 у базовой модели.
- 📊 Field accuracy: 98.0% против 95.7% на первом наборе и 93.4% против 90.0% на свежем; но автор подчёркивает, что почти весь отрыв — в устойчивости к embedded instructions, а не в общей точности.
- ⛔ Только английский, обучение на синтетических шаблонах; поведение на грязных реальных документах не тестировалось.
💻 Пример
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
base = "Qwen/Qwen3-4B-Instruct-2507"
tok = AutoTokenizer.from_pretrained(base)
model = AutoModelForCausalLM.from_pretrained(base, torch_dtype=torch.float16, device_map="auto")
model = PeftModel.from_pretrained(model, "abr-6024/schema-json-extractor-4B")
Подробнее
Обучение: 4 000 синтетических примеров, 12 доменов, 72 схемы, 8 профилей шума; 1 эпоха = 250 шагов.Оценка: +2.3 п.п. accuracy на 48 кейсах (p=0.049); на свежих 44 кейсах +3.4 п.п. (p=0.12, не значимо).
Валидность схемы: 47/48 против 48/48 на первом наборе; на свежем — 44/44 у обоих.
Ограничения: тонкий отрыв, eval повлиял на дизайн, prompt injection снижен, но не решён; только английский и синтетика.
Выход проверяйте по схеме; при сбое — retry или constrained decoding (vLLM guided JSON, Outlines, llama.cpp grammar).








Комментарии