/ Модель

Характеристики

Лицензия
MIT
Архитектура
tinygpt · dense
Базовая модель
Rainbow-Pony-100m-Flutter-base
Библиотека
transformers
Опубликована
27 июл 2026

Rainbow-Pony-100m-Flutter-direct

Генерация текстаТекст → текст3 профессии

Небольшая модель TinyGPT, которая по текстовому описанию генерирует целый файл Flutter/Dart за один проход.

118скачиваний за 30 дней0лайковвеса обновлены10 сен 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Rainbow-Pony-100M-Flutter-direct — авторская модель bbidpa на базе трансформера TinyGPT с 100 млн параметров, дообученная генерировать целый файл Flutter/Dart за один проход по описанию на естественном языке. Базовая модель обучалась с нуля на 2 млрд токенов: 70% составлял код Flutter/Dart и 30% — английский текст; для дообучения использовано 5 млн токенов примеров «цель → полный файл» из набора bbidpa/flutter-full-examples-v1.

Модель предназначена для создания Flutter-интерфейсов и Dart-кода по краткому описанию, включая генерацию файла с нуля. Это экспериментальная модель из парного сравнения генерации целого файла и пошагового редактирования кода. Она принимает текст и генерирует текст с кодом; заявленные языки — Dart и английский. Репозиторий использует формат Safetensors и библиотеку Transformers. Лицензия — MIT.

Сценарии применения

  • создание Flutter-виджета по краткому описанию
  • генерация Dart-файла с нуля
  • подготовка примера интерфейса Flutter по заданным требованиям

Ограничения

Модель небольшая и обучена на ограниченном наборе примеров; качество и корректность сгенерированного кода README не гарантирует. Её типичный режим — генерация целого файла за один проход, а не пошаговое редактирование.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Rainbow-Pony-100M-Flutter-direct

A 100M-parameter transformer, trained fully from scratch, fine-tuned to generate a complete Flutter/Dart file in one shot from a natural-language goal. Pretrained on 2B tokens (70% Flutter/Dart code, 30% English text), then fine-tuned on 5M tokens of flat goal → complete-file examples (bbidpa/flutter-full-examples-v1).

This is one half of a paired comparison: this model is trained to emit the whole file directly, while its companion, Rainbow-Pony-100M-Flutter-steps, is trained to build the same kind of code up iteratively via a sequence of small diffs. Both were fine-tuned from the same pretrained checkpoint, Rainbow-Pony-100M-Flutter-base. The research question behind the pair: for a small model, is it more sample-efficient to learn "whole file in one pass," or "one small verifiable edit at a time"?

Full methodology and results are in the accompanying paper, Diffs vs. Whole Files: An Empirical Comparison of Iterative Edit-Based and Direct Generation for Flutter/Dart Code Models (arXiv:2609.05779, cs.SE).

Demo

🤗 Space - Diffs vs. Whole Files

Load it

from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

REPO = "bbidpa/Rainbow-Pony-100m-Flutter-direct"
DEVICE = "cuda" if torch.cuda.is_available() else "cpu"

tokenizer = AutoTokenizer.from_pretrained(REPO)
tokenizer.bos_id = tokenizer.bos_token_id
tokenizer.eos_id = tokenizer.eos_token_id
tokenizer.pad_id = tokenizer.pad_token_id
tokenizer.unk_id = tokenizer.unk_token_id
tokenizer.sep_id = tokenizer.convert_tokens_to_ids("<sep>")

model = AutoModelForCausalLM.from_pretrained(REPO, trust_remote_code=True).to(DEVICE).eval()

Prompt format

Prompts use a small XML-style tag vocabulary. <CODE> holds the current file contents (empty for a from-scratch generation), <HISTORY> holds prior steps (unused for this model's typical single-step usage, but part of the shared format), and the model completes everything after <OUTPUT>:

<GOAL>
Write a widget that displays a select button with months in it
</GOAL>

<CODE>

</CODE>

<HISTORY>

</HISTORY>

<OUTPUT>

Generate

def render_step_prompt_from_data(
    goal: str,
    code: str = "",
    history: list[dict] | None = None,
    action_type: str = "",
    action_desc: str = "",
    changes: list[dict] | None = None,
    is_last_step: bool = False,
    include_output: bool = False,
) -> str:
    history = history or []
    changes = changes or []
    history_text = "\n".join(
        f"<ACTION><TYPE>{h['type']}</TYPE><DESC>{h['desc']}</DESC></ACTION>"
        for h in history
    )
    text = f"""<GOAL>
{goal}
</GOAL>

<CODE>
{code}
</CODE>

<HISTORY>
{history_text}
</HISTORY>

<OUTPUT>
"""
    if include_output:
        hunks = "\n".join(
            f"<HUNK>\n<SEARCH>\n{h['search']}\n</SEARCH>\n<REPLACE>\n{h['replace']}\n</REPLACE>\n</HUNK>"
            for h in changes
        )
        output = f"<ACTION><TYPE>{action_type}</TYPE><DESC>{action_desc}</DESC></ACTION>\n<CHANGES>\n{hunks}\n</CHANGES>"
        if is_last_step:
            output += "\n<DONE></DONE>"
        text += output + "\n</OUTPUT>"
    return text


def generate_output(model, tokenizer, device, prompt, max_new_tokens=300, **generate_kwargs):
    prompt_ids = tokenizer.encode(prompt, add_special_tokens=False)
    idx = torch.tensor([[tokenizer.bos_id] + prompt_ids], dtype=torch.long).to(device)
    generated = model.generate(idx, max_new_tokens=max_new_tokens, eos_id=tokenizer.eos_id, **generate_kwargs)
    text = tokenizer.decode(generated[0].tolist(), skip_special_tokens=False)
    output = text.split("<OUTPUT>")[-1].split("</OUTPUT>")[0].strip()
    return output


prompt = render_step_prompt_from_data(
    goal="Write a widget that displays a select button with months in it",
)
text = generate_output(model, tokenizer, DEVICE, prompt, max_new_tokens=1024)
print(text)

Example

Input goal: Write a widget that displays a select button with months in it

Output:

[paste your actual generated <ACTION>/<CHANGES> output here]

Training details

Architecture100M-parameter decoder-only transformer, trained from scratch
Pretraining2B tokens (70% Flutter/Dart code, 30% English text)
Fine-tuning5M tokens, flat goal → complete-file examples
TokenizerCustom 16k-vocab BPE + structural special tokens

Related

Citation

@misc{andrejev2026diffs,
  title         = {Diffs vs. Whole Files: An Empirical Comparison of Iterative Edit-Based and Direct Generation for Flutter/Dart Code Models},
  author        = {Andrejev, Andrej},
  year          = {2026},
  eprint        = {2609.05779},
  archivePrefix = {arXiv},
  primaryClass  = {cs.SE},
  url           = {https://arxiv.org/abs/2609.05779}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers

Нельзя запустить

Модели нужен код из репозитория; автор пока не в списке доверенных организаций.

Класс архитектуры
TinyGPTForCausalLM
Ревизия весов
3bfd21d

0 моделей