3,583 papers
arXiv:2610.08048 88 6 окт. 2026 г. FREE

DAEDALUS: память агента из самостоятельно придуманных задач, где каждое правило проверено повторным прогоном

КЛЮЧЕВАЯ СУТЬ
Парадокс: правила, которые агент выводит из одного лишь изучения среды, делают его хуже агента вообще без памяти. Метод DAEDALUS позволяет собрать для агента проверенную шпаргалку по новой среде без готовых тестовых задач и без проверяющего скрипта. Правило попадает в шпаргалку, только если агент с ним три раза подряд решил задачу, которую раньше провалил. Это проверка повтором: один агент придумывает задачи, второй их решает, третий пишет правила из провалов. Разумно звучащие, но бесполезные правила отсеиваются, а в контекст рабочего агента идёт только то, что реально починило провал.
Адаптировать под запрос
⚡

TL;DR

DAEDALUS — это способ собрать для агента «шпаргалку» по новой среде без готовых задач и проверяющего скрипта. Один агент (Исследователь) изучает среду и придумывает задачи. Второй (Решатель) их выполняет. Из каждой неудачи пишется короткое правило. Оно попадает в шпаргалку только после того, как Решатель с этим правилом в контексте несколько раз подряд решил ту задачу, которую раньше провалил. Готовую шпаргалку целиком вставляют в начало контекста агента перед каждой рабочей задачей.

Главная находка: правила, выведенные из одного лишь исследования среды, вредят. Агент с такой памятью работал хуже агента без памяти. Ценный материал — это следы неудачных попыток Решателя: что он сделал, где споткнулся, что в итоге сработало. Если брать «уроки» без проверки, в шпаргалку попадает шум: правила, которые звучат разумно, но ничего не чинят. Проверка повтором их отсеивает.

Метод многошаговый, в нём шесть ролей: Обзорщик, Исследователь, Решатель, Судья, Экстрактор и Консолидатор. Исследователь придумывает задачу и сам её проходит, чтобы доказать, что она выполнима. Решатель пробует. После провала Экстрактор пишет или правит правило, и Решатель пробует снова. Если Решатель не провалился ни разу, задача слишком лёгкая, и её усложняют. Если провалился 8 раз, она слишком трудная, и её упрощают. Консолидатор в конце сливает принятые правила в один список без повторов.

🔬

Схема метода

ШАГ 0: Обзорщик один раз изучает среду → карта областей и план: сколько задач на какую область
ЦИКЛ (n сессий):
  ШАГ 1: Исследователь придумывает реалистичную задачу + условия успеха, сам её решает (доказывает выполнимость)
  ШАГ 2: Решатель пробует с чистого состояния среды; Судья сверяет итог с условиями успеха
  ШАГ 3: Провал → Экстрактор пишет (или правит) правило по задаче и следу провала → Решатель пробует снова
  ШАГ 4: Исход:
         • 3 успеха подряд, а до этого был хотя бы 1 провал → правило ПРИНЯТО
         • ни одного провала → «слишком легко» → Исследователь усложняет (до 5 раз)
         • 8 провалов → «слишком трудно» → Исследователь упрощает
ШАГ 5: Консолидатор одним вызовом сливает принятые правила в список
ШАГ 6: Список замораживается и вставляется целиком в начало контекста рабочего агента

Шаги выполняются отдельными вызовами агентов. Это цикл с оркестрацией, а не один промпт.

🚀

Пример применения

Задача: Вы настроили агента в Claude Code, который работает с API «МойСклад»: сверяет остатки, создаёт заказы, выгружает отчёты. Каждую новую сессию он заново наступает на одни и те же грабли: неправильный формат полей, забытая постраничная выдача, лишние запросы. Готовых тестовых задач и проверяющего скрипта у вас нет. Нужно, чтобы агент начинал работу уже с набором проверенных правил.

Ниже ручная версия метода для тестового аккаунта. Это упрощение, а не оригинал.

Промпт (оркестратору):

Ты — оркестратор. Работаешь на ТЕСТОВОМ аккаунте МойСклад, боевые данные не трогай.
Цель: собрать список проверенных правил для агента, который работает с этим API.

Повтори 10 сессий. В каждой:
1. Роль Исследователь: придумай реалистичную задачу для менеджера интернет-магазина
   (например, «найти товары с остатком ниже 5 и создать заказ поставщику»).
   Выполни её сам, чтобы убедиться, что она выполнима. Запиши условия успеха списком.
2. Роль Решатель (отдельный субагент с чистым контекстом): выполни задачу.
3. Роль Судья: сверь результат с условиями успеха. Ответ: успех / провал + причина.
4. Если провал — роль Экстрактор (видит только текст задачи и ход попытки,
   НЕ видит список условий успеха): напиши одно общее правило,
   которое помогло бы в похожих задачах. Не пиши правило под эту конкретную задачу.
   Решатель пробует снова с этим правилом в контексте. После повторного провала
   Экстрактор правит правило.
5. Правило считается принятым, только если Решатель с ним справился 3 раза подряд,
   а до этого провалился хотя бы раз.
   Решатель ни разу не провалился → задача слишком лёгкая, усложни (до 5 раз).
   Решатель провалился 8 раз → задача слишком трудная, упрости.

В конце: роль Консолидатор объединяет принятые правила в один список,
убирает повторы, сохраняет конкретику. Выдай список в формате для файла AGENTS.md.

Результат: Оркестратор покажет по каждой сессии задачу, попытки Решателя, вердикты Судьи и правила, которые менялись после провалов. На выходе будет короткий список принятых правил, готовый для вставки в начало инструкций агента. Часть сессий закончится без правила: задача оказалась слишком лёгкой или слишком трудной.

🧠

Почему это работает

Слабость: модель в новой среде не знает её «местных законов»: как ведёт себя конкретный инструмент, какие есть соглашения. Ей приходится открывать это заново в каждой задаче. Самые разумные на вид правила, придуманные «из головы» или по результатам просмотра среды, часто оказываются бесполезными или вредными.

Сильная сторона: модель хорошо разбирает конкретный провал. Она видит, где именно ошиблась, и формулирует урок. Она также неплохо судит, выполнено ли условие, если условия записаны текстом: Судья в статье совпал с официальными проверками на уровне «существенного согласия».

Как метод это использует: урок из провала — только гипотеза. Её проверяют на самом Решателе: помогло ли правило провалившуюся задачу превратить в стабильный успех. Три успеха подряд вместо одного снижают шанс принять пустое правило из-за случайного везения. Калибровка сложности держит задачи «на краю возможностей» Решателя. Лёгкие задачи не дают уроков, а слишком трудные не решаются даже с правилом.

Рычаги управления: - Число успехов подряд (3 в статье). Больше — строже отбор, но дороже. Меньше — быстрее, но больше шума. - Лимит провалов (8) и число упрощений/усложнений (5). Уменьшай для недорогой пробы. - Что видит Экстрактор. В оригинале он не знает, какие условия успеха провалены. Это заставляет писать общие правила, а не латать конкретную задачу. - Число сессий. Польза заметна уже при небольшом бюджете. - Способ подачи. Статья сообщает: при таком объёме лучше свести правила в один список и вставить целиком в начало, чем подтягивать их по ходу работы.

📋

Шаблон промпта

В статье нет готового текстового промпта. Ниже оригинальная структура сессии с ролями и параметрами из статьи, записанная как инструкция оркестратору. Формулировки реплик восстановлены по описанию ролей.


Ты — оркестратор обучения памяти агента. Среда: {среда}. Тестовые данные, боевые не трогать.
Цель — список проверенных правил (эвристик) для агента {описание_рабочего_агента}.



N_sessions = {число_сессий}
N_s = 3      # успехов подряд для принятия правила
N_f = 8      # провалов, после которых задача считается слишком трудной
N_r = 5      # максимум пересмотров сложности задачи



Один раз изучи среду. Составь список областей (например, {области})
и распредели сессии по ним, чтобы задачи покрывали среду равномерно.



Explorer = Agent("исследователь")
Solver = Agent("решатель")      # чистый контекст перед каждой попыткой
Judge = Agent("судья")
Extractor = Agent("экстрактор") # НЕ видит условия успеха, только задачу и ход попытки

task = Explorer.propose_task(area=из плана)        # инструкция + условия успеха
Explorer.solve(task)                                # докажи, что задача выполнима
heuristic = None; streak = 0; fails = 0; ever_failed = False

While streak < N_s and fails < N_f:
    result = Solver.attempt(task, heuristic)        # с чистого состояния среды
    verdict = Judge.check(result, task.success_conditions)
    If verdict == success:
        streak += 1
    Else:
        fails += 1; streak = 0; ever_failed = True
        heuristic = Extractor.write_or_revise(task.instruction, result.trace, heuristic)
        # правило общее, не заплатка под одну задачу

If streak == N_s and ever_failed:   bank.add(heuristic)             # ПРИНЯТО
If not ever_failed:                  task = Explorer.make_harder(task)   # слишком легко, до N_r раз
If fails == N_f:                     task = Explorer.make_easier(task)   # слишком трудно



Consolidator.merge(bank): убери повторы и пересечения, сохрани конкретные действия.
Выдай один список для вставки в начало контекста агента.

Что подставлять: {среда} — ваш инструмент или API на тестовых данных, {описание_рабочего_агента} — что агент делает в работе, {число_сессий} — для пробы 10–20, {области} — разделы вашей среды.

🚀 Быстрый старт — вставь в чат или в Claude Code:

Вот шаблон метода DAEDALUS. Адаптируй под мою задачу: [твоя среда и что делает агент].
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит, в какой среде работает агент, есть ли тестовые данные и можно ли сбросить их к исходному состоянию, как понять, что задача выполнена, и сколько бюджета не жалко. Всё это нужно, потому что метод держится на чистых повторных попытках и проверяемых условиях успеха. Она возьмёт паттерн из шаблона и соберёт промпт под вашу среду.

⚠️

Ограничения

⚠️ Нужна среда, которую можно сбросить: каждая попытка идёт с чистого состояния. Если на тестовом аккаунте нельзя безопасно повторять действия, метод не сработает. Боевые данные трогать нельзя.

⚠️ Нужны проверяемые условия успеха: метод работает там, где итог можно сверить с чётким списком условий. Для текстов, креатива и «хорошо/плохо» без критериев он не проверялся.

⚠️ Исследование без Решателя вредит: правила, собранные только по результатам просмотра среды, оказались хуже отсутствия памяти. Пропустить стадию «пробуем и проверяем повтором» нельзя.

⚠️ Нужна оркестрация: метод многоагентный, с циклами и сбросами. Вручную в чате его не пройти. Нужен агентный инструмент с субагентами или автоматизация. В статье это реализовано кодом.

⚠️ Генерация стоит денег: полный прогон на 90 сессий обошёлся примерно в сотню долларов API (в ранних вариантах пайплайна — в двести). Это разовые затраты, при использовании агент тратит столько же или меньше за счёт более коротких траекторий.

⚠️ Судья ошибается: он отвергает часть настоящих успехов, примерно каждый шестой-седьмой. Это безопасная сторона ошибки, но лишние итерации будут.

⚠️ У сильных моделей выигрыш меньше: если агент уже решает большинство задач, запас для улучшения мал. На самом трудном бенчмарке (бизнес-процессы в SaaS) прирост был скромнее, а лучшие методы с готовыми задачами всё равно впереди по некоторым метрикам.

🔍

Как исследовали

Команда взяла три агентных бенчмарка: управление приложениями кодом (AppWorld), поддержку клиентов в ритейле (τ²-bench) и бизнес-процессы в SaaS (AutomationBench). Сравнивали с агентом без памяти и шестью методами памяти. Пять из шести получали готовые обучающие задачи, у DAEDALUS их не было. Результаты усредняли по пяти прогонам. Вспомогательные роли играла большая модель, Решателя и рабочего агента — меньшая из того же семейства.

Прирост средней успешности над агентом без памяти составил 15.9, 10.0 и 4.3 пункта. Согласованность по пяти прогонам подряд (pass^5) выросла в 1.7–2.2 раза. В четырёх из шести колонок результат оказался в пределах погрешности от лучшего метода с готовыми задачами. Когда DAEDALUS дали те же обучающие задачи, он обошёл остальные методы на всех бенчмарках. Значит, механизм проверки работает сам по себе, а самопридуманные задачи теряют лишь немного.

Самая интересная часть — поэтапное усложнение пайплайна на AppWorld: - Один исследователь без Решателя дал 35.7 против 44.3 у агента без памяти. Хуже, чем ничего. - Добавили следы попыток Решателя — прирост около 16 пунктов. Это главный скачок. - Добавили цикл «провал → правило → повтор до трёх успехов» — ещё +4.5 пункта, шум выбрасывается. - Обзор среды и накопление советов по калибровке сложности почти не меняли качество, зато снизили стоимость генерации на 48%.

Правила, сгенерированные одним семейством моделей, помогали агентам других семейств: все девять комбинаций дали плюс. Правила Qwen помогли GPT-5.4-mini не меньше, чем его собственные (+16.8 против +15.9). Задачи, придуманные пайплайном, ранжировали модели так же, как официальные тесты. Значит, их можно использовать как замену тестового набора там, где его нет.

💡

Адаптации и экстраполяции

🔧 Техника: скрыть от Экстрактора условия успеха → правила становятся общими

В оригинале Экстрактор видит только задачу и ход попытки. Если дать ему список невыполненных условий, он начнёт писать заплатки вида «для такого-то заказа делай так-то». Для своих прогонов не показывайте ему вердикт Судьи, только саму задачу и след.

🔧 Техника: единый список в начале контекста → без поиска по ходу работы

Для пробных 10–20 правил не нужен поиск по базе. Сведите их в один блок и вставьте в начало AGENTS.md или CLAUDE.md. В статье такой способ дал результат лучше, чем подача правил по запросу в каждой реплике.

Экстраполяция — ручная версия на живой работе. Её нет в статье, это идея читателя. Метод проверяет правила прогоном, а в обычной работе с агентом вы это делаете постфактум:

Вот правило, которое ты предложил добавить в AGENTS.md: {правило}.
Вот задача, на которой ты ошибся: {задача}.
Реши эту задачу три раза подряд с нуля, имея это правило в контексте.
Если хотя бы раз не справишься — перепиши правило и повтори.
Предложи для файла только то правило, которое сработало все три раза.

Это грубая версия принципа «принимаем правило после повторного успеха на провалившейся задаче». Три раза в одном диалоге без сброса контекста — слабая замена чистым прогонам. Надёжнее запускать каждый раз в новой сессии.

🔗

Ресурсы

  • DAEDALUS: Bootstrapping Agent Memory from Self-Generated Tasks — Antoine Edy, Max Conti, Victor Xing, Marc-Antoine Allard, Nawfal Benhamdane, Gautier Viaud, Illuin Technology.
  • Код, сгенерированные задачи, наборы правил и траектории: github.com/illuin-tech/daedalus
  • Бенчмарки: AppWorld (Trivedi et al.), τ²-bench (Barres et al.), AutomationBench (Shepard & Salimans).
  • Сравнивали с ExpeL, AutoGuide, ERL, ReasoningBank, ACE, PREPING.

📋 Дайджест исследования

Ключевая суть

Парадокс: правила, которые агент выводит из одного лишь изучения среды, делают его хуже агента вообще без памяти. Метод DAEDALUS позволяет собрать для агента проверенную шпаргалку по новой среде без готовых тестовых задач и без проверяющего скрипта. Правило попадает в шпаргалку, только если агент с ним три раза подряд решил задачу, которую раньше провалил. Это проверка повтором: один агент придумывает задачи, второй их решает, третий пишет правила из провалов. Разумно звучащие, но бесполезные правила отсеиваются, а в контекст рабочего агента идёт только то, что реально починило провал.

Принцип работы

Шесть ролей, и у каждой одна работа. Обзорщик один раз изучает среду и делит её на области. Исследователь придумывает задачу и сам её решает, чтобы доказать, что она выполнима. Решатель пробует с чистого состояния среды. Судья сверяет итог с условиями успеха. Экстрактор пишет правило по следу провала. Консолидатор в конце сливает принятые правила в один список. Провал ещё ничего не значит. Урок из провала — это гипотеза, и её проверяют на том же Решателе. Правило принято, если было хотя бы одно падение, а потом 3 успеха подряд. Задача без единого провала слишком лёгкая: учиться на ней нечему, её усложняют (до 5 раз). Задача с 8 провалами слишком трудная: её упрощают. Это как конвейер на заводе. Каждая станция делает своё, и брак не уходит дальше. Ещё одна деталь: Экстрактор не видит условий успеха. Он видит только текст задачи и ход попытки. Поэтому пишет общее правило, а не заплатку под одну задачу.

Почему работает

Модель плохо угадывает «местные законы» новой среды. Как ведёт себя конкретный инструмент, какие там соглашения — из головы это не вывести. Зато она хорошо разбирает конкретный провал: видит, где споткнулась, и формулирует урок. Судье тоже можно доверять. С официальными проверками он совпал на уровне «существенного согласия». Почему три успеха, а не один? Один успех бывает случайным. Три подряд сильно режут шанс принять пустое правило из-за везения. Следы неудачных попыток Решателя оказались ценнее, чем знания из просмотра среды: правила «из обзора» вредят, а правила из провалов с проверкой помогают. Калибровка сложности держит задачи на краю возможностей Решателя. Лёгкие задачи не дают уроков. Слишком трудные не решаются даже с правилом. Судья ошибается в одну сторону: примерно каждый шестой-седьмой настоящий успех он отвергает. Это безопасная ошибка, лишних правил не набирается, хотя итераций будет больше.

Когда применять

Агенты в рабочих инструментах → особенно когда агент в каждой новой сессии наступает на одни и те же грабли: формат полей, постраничная выдача, лишние запросы. Подходит, если есть тестовая среда, которую можно сбросить, и условия успеха можно записать списком. Пример: API учётной системы, интернет-магазина, CRM. НЕ подходит для текстов, креатива и задач «хорошо/плохо» без чётких критериев: там метод не проверяли. НЕ подходит, если на тестовом аккаунте нельзя безопасно повторять действия. Боевые данные трогать нельзя. Если агент и так решает почти всё, выигрыш будет скромным.

Мини-рецепт

1. Найди песочницу: тестовый аккаунт, который можно сбросить. Боевые данные не трогай.
2. Возьми агентный инструмент с субагентами: например, Claude Code. Вручную в обычном чате цикл не пройти.
3. Дай оркестратору роли: Исследователь, Решатель, Судья, Экстрактор. Оркестратор — это главный агент, который раздаёт роли и ведёт счёт.
4. Запусти пробу на 10–20 сессий. Полный прогон из статьи на 90 сессий обошёлся примерно в сотню долларов.
5. Спрячь условия успеха от Экстрактора. Пусть видит только задачу и ход попытки. Тогда правила выйдут общими.
6. Зафиксируй пороги: 3 успеха подряд, 8 провалов на задачу, 5 пересмотров сложности. Для дешёвой пробы пороги можно снизить.
7. Пусть Консолидатор слепит список: без повторов, с конкретными действиями. Положи в начало инструкций агента (например, в файл AGENTS.md).
8. Заморозь список. Не дописывай правила на ходу. По статье, при таком объёме лучше вставить всё целиком в начало, чем подтягивать по ходу работы.

Примеры

[ПЛОХО] : Изучи API МойСклад и составь список правил, которые помогут агенту не ошибаться
[ХОРОШО] : Ты оркестратор. Работаешь на ТЕСТОВОМ аккаунте МойСклад. Повтори 10 сессий. В каждой: Исследователь придумывает реалистичную задачу для менеджера интернет-магазина, сам её решает и записывает условия успеха списком. Решатель (отдельный субагент с чистым контекстом) выполняет задачу. Судья сверяет результат с условиями. При провале Экстрактор (не видит условия успеха) пишет одно общее правило, и Решатель пробует снова. Правило принято, если Решатель справился 3 раза подряд после хотя бы одного провала. Решатель ни разу не провалился — усложни задачу. Провалился 8 раз — упрости. В конце Консолидатор сливает правила в список для AGENTS.md. В плохом запросе правила выдуманы из обзора среды. Они звучат умно, но никто не проверил, что они что-то чинят. В хорошем каждое правило прошло через провал и три успешных повтора.
Источник: DAEDALUS: Bootstrapping Agent Memory from Self-Generated Tasks
ArXiv ID: 2610.08048 | Сгенерировано: 2026-10-07 05:10

Проблемы LLM

ПроблемаСутьКак обойти
Правила для агента, написанные «из головы» или после беглого обзора среды, вредятПросишь модель изучить инструмент, API или репозиторий и написать правила для будущего агента. Правила выглядят разумно. Но агент с ними работает хуже, чем вовсе без них. Часть правил бесполезна, часть уводит в сторону. Модель не знает, где агент реально ошибается. Она угадывает.Не доверяй правилам, написанным без практики. Сначала дай агенту решить задачи. Правила бери из его реальных провалов. Каждое правило проверь повторным прогоном (см. метод ниже).

Методы

МетодСуть
Правило принимается только после проверки повтором, из провалов выходит надёжная памятьЧто делать. Придумай задачу с чётким списком условий успеха. Дай агенту решить её с чистого состояния. Если он провалился, пусть другой вызов модели напишет одно общее правило по задаче и ходу попытки. Агент пробует снова, и правило лежит у него в контексте. Правило принимается, только если агент справился 3 раза подряд, а до этого хотя бы раз провалился. Если после правки он снова провалился, правило переписывают и пробуют заново. Почему работает. Урок из провала — это гипотеза. Правило может звучать верно и ничего не чинить. Повторный прогон показывает, превращает ли правило провал в стабильный успех. Три успеха подряд вместо одного отсекают случайное везение. Доводка. Задача без провалов слишком лёгкая: усложни её. Если провалов 8, она слишком трудная: упрости. В конце одним вызовом слей принятые правила в список без повторов и вставь его целиком в начало контекста агента. Когда да. Есть тестовая среда, которую можно сбросить. Итог можно сверить с понятным списком условий. Нужен файл инструкций вроде AGENTS.md. Когда нет. Среда не сбрасывается, а боевые данные трогать нельзя. Нет критериев успеха: тексты, креатив, «хорошо/плохо». Нет возможности запускать цикл с несколькими агентами. Вручную в одном чате метод не пройти.

Тезисы

ТезисКомментарий
Автору правила не показывай условия успеха, чтобы правила получались общимиЕсли модель, пишущая правило, видит проверочный список, она латает конкретную задачу. Правило выходит узким и не переносится на другие задачи. Если видит только текст задачи и ход попытки, она вынуждена искать общую причину ошибки. Применяй: разделяй вызовы. Одна роль проверяет результат. Другая пишет правило и не видит критериев проверки. Добавь строку: «Напиши общее правило для похожих задач, не под эту».
📖 Простыми словами

DAEDALUS: BootstrappingAgentMemory from Self-Generated Tasks

arXiv: 2610.08048

LLM-агенты тупят в новом софте или API не потому, что они кривые, а потому что не знают негласных правил системы. Модель раз за разом наступает на одни и те же грабли: путает форматы полей, забывает про пагинацию и шлёт лишние запросы. Писать правила вручную — адский труд, а придуманные человеком инструкции «из головы» в половине случаев делают только хуже. Метод DAEDALUS решает проблему радикально: через автономную самодрессировку без участия человека.

Это как выпустить стажёра на незнакомый склад и заставить его набивать шишки втихаря, пока никто не видит. Один голос в его голове придумывает дурацкие квесты вроде «найди коробку без маркировки», а второй пытается их выполнить. Облажался — сделал зарубку на память: «не трогай этот рубильник, сгорит проводка». Никаких живых менторов и тестов: система учится на собственных косяках.

Механика держится на двух ролях: Исследователь и Решатель. Первый тыкается в окружение и генерирует искусственные задачи, второй пытается их закрыть. Если второй пасует, формулируется короткое правило. Но в итоговую шпаргалку оно попадёт не сразу: агент обязан несколько раз подряд решить проваленную задачу с этой новой подсказкой в контексте. Никакого мусора: память формирует только железобетонно подтверждённый опыт.

В тесте гоняли интеграцию со сложным API, но паттерн абсолютно универсален. Это спасение для любых кастомных CRM, баз данных или консольных утилит, где нет готовых тестов. Вместо того чтобы сутками расписывать документацию, ты даёшь агентам ночь побеситься в тестовой среде и получаешь идеальный системный промпт.

Короче: хватит вручную собирать грабли за нейросеть — отдай набивание шишек на автоматический бутстраппинг. Ты зашиваешь в модель проверенную шпаргалку ещё до того, как она пойдёт трогать реальные клиентские данные. Оставляешь агента в песочнице на ночь — утром забираешь бота, который гарантированно не сломает прод.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с