/ Модель

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

Контекст
32 768 токенов
Параметры
1,4 млрд
Лицензия
Apache 2.0
Архитектура
qwen2 · dense
Базовая модель
sweep-next-edit-1.5B
Библиотека
transformers
Опубликована
23 янв 2026

sweep-next-edit-1.5B

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

Модель Sweep AI для предсказания следующей правки кода и автодополнения в редакторе с учётом контекста файлов и предыдущих изменений.

97 474скачиваний за 30 дней0лайковвеса обновлены24 янв 2026

Бенчмарки

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

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

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

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

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

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

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

Sweep Next-Edit 1.5B — модель Sweep AI для автодополнения кода, которая предсказывает следующее изменение в файле с учётом его текущего содержимого, связанных файлов и недавних правок. Репозиторий Xenova содержит версию для Transformers в формате safetensors и конвертацию в ONNX; архитектура — плотная Qwen2ForCausalLM, около 1,4 млрд параметров. Метаданные указывают контекст до 32 768 токенов.

Модель предназначена для локального дополнения кода в редакторах и IDE. В README заявлены быстрое выполнение на ноутбуке и результаты выше моделей более чем в четыре раза крупнее на бенчмарках предсказания следующих правок; это заявления авторов карточки. Для подсказки модель принимает текстовый контекст файлов и изменений и генерирует текст предполагаемой правки. Указаны библиотека Transformers и лицензия Apache 2.0.

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

  • автодополнение кода в IDE
  • предсказание следующей правки в файле
  • генерация продолжения кода с учётом соседних файлов
  • подсказки кода на основе недавних diff

Ограничения

Заявления о скорости и превосходстве на бенчмарках приведены в README и не сопровождаются там подробностями проверки. Модель рассчитана на предсказание изменений кода; качество для иных задач не описано.

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

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

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

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

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

Открыть на Hugging Face

Sweep Next-Edit 1.5B (GGUF)

A 1.5B parameter model for next-edit autocomplete, converted to ONNX format (as well as fp32 HF transformers-compatible version).

Model Description

Sweep Next-Edit predicts your next code edit before you make it. It runs locally on your laptop in under 500ms (with speculative decoding) and outperforms models over 4x its size on next-edit benchmarks. More details here.

Usage

HF Transformers

import time
import difflib
from transformers import AutoTokenizer, Qwen2ForCausalLM
import torch

# Load model and tokenizer
model_id = "Xenova/sweep-next-edit-1.5B"

print("Loading tokenizer...")
tokenizer = AutoTokenizer.from_pretrained(model_id)

print("Loading model...")
model = Qwen2ForCausalLM.from_pretrained(model_id, device_map="auto")


def build_prompt(
    context_files: dict[str, str],
    recent_diffs: list[dict[str, str]],
    file_path: str,
    original_content: str,
    current_content: str,
) -> str:
    """
    Build a prompt following Sweep Next Edit's training format.

    Format:
        <|file_sep|>{file_path_1}
        {file_content_1}
        <|file_sep|>{file_path_2}
        {file_content_2}
        <|file_sep|>{changed_file_1}.diff
        original:
        {before_changes_of_diff}
        updated:
        {after_changes_of_diff}
        <|file_sep|>original/{file_path}
        {contents_prior_to_most_recent_change}
        <|file_sep|>current/{file_path}
        {current_state_of_contents}
        <|file_sep|>updated/{file_path}
        {updated_state_of_contents}

    Args:
        context_files: Dict mapping file paths to their contents (related files for context)
        recent_diffs: List of dicts with 'file_path', 'original', and 'updated' keys
        file_path: Path of the file being edited
        original_content: Contents prior to most recent change
        current_content: Current state of the file being edited

    Returns:
        Formatted prompt string
    """
    prompt_parts = []

    # Add context files
    for path, content in context_files.items():
        prompt_parts.append(f"<|file_sep|>{path}")
        prompt_parts.append(content)

    # Add recent diffs
    for diff in recent_diffs:
        prompt_parts.append(f"<|file_sep|>{diff['file_path']}.diff")
        prompt_parts.append("original:")
        prompt_parts.append(diff['original'])
        prompt_parts.append("updated:")
        prompt_parts.append(diff['updated'])

    # Add original and current states
    prompt_parts.append(f"<|file_sep|>original/{file_path}")
    prompt_parts.append(original_content)
    prompt_parts.append(f"<|file_sep|>current/{file_path}")
    prompt_parts.append(current_content)
    prompt_parts.append(f"<|file_sep|>updated/{file_path}")

    return "\n".join(prompt_parts)


def generate(prompt: str, max_new_tokens: int = 512) -> str:
    """Generate completion using the Sweep Next Edit model."""
    inputs = tokenizer(prompt, return_tensors="pt").to(model.device)

    # Get the stop token ids
    stop_token_ids = [
        tokenizer.convert_tokens_to_ids("<|file_sep|>"),
        tokenizer.eos_token_id,
    ]

    with torch.no_grad():
        outputs = model.generate(
            **inputs,
            max_new_tokens=max_new_tokens,
            do_sample=False,  # Use greedy decoding for deterministic output
            pad_token_id=tokenizer.pad_token_id,
            eos_token_id=stop_token_ids,
        )

    # Decode only the generated tokens (exclude the prompt)
    generated_ids = outputs[0][inputs["input_ids"].shape[1]:]
    generated_text = tokenizer.decode(generated_ids, skip_special_tokens=True)

    return generated_text


if __name__ == "__main__":
    # Simple example: User is writing a greeting function
    # The model predicts what they'll write next based on the pattern

    file_path = "greet.py"

    # Context: Other files in the codebase
    context_files = {
        "utils.py": """def get_time_of_day():
    from datetime import datetime
    hour = datetime.now().hour
    if hour < 12:
        return "morning"
    elif hour < 18:
        return "afternoon"
    else:
        return "evening"
""",
    }

    # Recent changes: User just added a personalized greeting
    recent_diffs = [
        {
            "file_path": "greet.py",
            "original": """def greet():
    print("Hello!")""",
            "updated": """def greet(name):
    print(f"Hello, {name}!")""",
        }
    ]

    # Before the most recent change
    original_content = """def greet(name):
    print(f"Hello, {name}!")

greet("Alice")"""

    # Current state: User just imported get_time_of_day
    current_content = """from utils import get_time_of_day

def greet(name):
    print(f"Hello, {name}!")

greet("Alice")"""

    prompt = build_prompt(
        context_files=context_files,
        recent_diffs=recent_diffs,
        file_path=file_path,
        original_content=original_content,
        current_content=current_content,
    )

    print("\n" + "=" * 80)
    print("CURRENT CODE:")
    print("=" * 80)
    print(current_content)

    print("\nGenerating prediction...")
    start_time = time.time()
    predicted_edit = generate(prompt)
    end_time = time.time()

    print("\n" + "=" * 80)
    print("PREDICTED NEXT EDIT:")
    print("=" * 80)
    print(predicted_edit)

    print("\n" + "=" * 80)
    print(f"TIME TAKEN: {end_time - start_time:.2f} seconds")
    print("=" * 80)

    print("\n" + "=" * 80)
    print("DIFF (what changed):")
    print("=" * 80)

    diff = difflib.unified_diff(
        current_content.splitlines(keepends=True),
        predicted_edit.splitlines(keepends=True),
        fromfile=f"current/{file_path}",
        tofile=f"updated/{file_path}",
        lineterm=""
    )
    print("".join(diff))

Model Details

  • Parameters: 1.5B
  • Context Length: 8192 tokens
  • Base Model: Qwen2.5-Coder

Links

License

Apache 2.0

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

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

GPU в ailist

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

Можно запустить

Подбираем GPU…

Класс архитектуры
Qwen2ForCausalLM
Ревизия весов
402c437

0 моделей