{
  "aboutHtml": "<p>Phi-4 — плотный трансформер Microsoft Research только с декодером на 14 млрд параметров для генерации текста. Разработка сосредоточена на качественных обучающих материалах и развитых рассуждениях в относительно компактной модели. Она принимает текст, лучше всего подходит для запросов в диалоговом формате и генерирует текстовый ответ, объяснение или код. Конкретная редакция Phi-4 отличается от более поздних выпусков reasoning, mini и мультимодальных моделей.</p><h4>Обучение и назначение</h4><p>Производитель сочетает отфильтрованные по качеству публичные документы и код, новые синтетические учебные данные, приобретённые академические книги и наборы вопросов и ответов. Синтетические материалы обучают математике, программированию, рассуждениям на основе здравого смысла и общим знаниям. Дообучение с учителем и прямая оптимизация предпочтений затем улучшают соблюдение инструкций и поведение ответов.</p><p>Разработчик позиционирует Phi-4 как компонент приложений с ограничениями памяти или вычислений, потребностью в интерактивном отклике и задачами рассуждения или логики, преимущественно на английском. Передавайте полное условие и исходные сведения для ответа. Для математической задачи определите переменные, ограничения области и форму результата; для объяснения укажите аудиторию и понятия, которые нужно связать.</p><h4>Рассуждение по ясной задаче</h4><p>Полезное задание: «Сравни эти условия, определи, выполняет ли предложенное решение каждое из них, и объясни первое нарушение. Укажи недостающую информацию до формулирования вывода». Для вопроса по источникам пометьте фрагменты и запросите вывод, подтверждаемый каждым. Просите сохранять имена, единицы и предположения, влияющие на результат.</p><p>Даже длинный запрос должен иметь одну ясную цель. Опубликованный контекст составляет 16K токенов и включает инструкции, исходный текст, диалог и генерируемый ответ вместе. Сохраняйте нужные свидетельства во входе и оставляйте место для итогового объяснения. Пример бюджета генерации в карточке иллюстративен и не устанавливает отдельную универсальную максимальную длину ответа.</p><h4>Помощь с кодом</h4><p>Phi-4 может предложить код, объяснить функцию или разобрать входные данные, вызывающие сбой. Передайте реализацию, ожидаемое поведение и характерный случай, отличающий правильный результат. Запросите код отдельно от объяснения и укажите интерфейсы, которые должны остаться неизменными.</p><p>Производитель отмечает, что большая часть обучения коду основана на Python, особенно распространённых пакетах стандартной библиотеки. Другие пакеты или языки программирования требуют внимательной проверки API. Сгенерированная функция или скрипт не становятся выполненными лишь потому, что выглядят законченными; запустите их в целевой среде и используйте реальные ошибки или наблюдения для правки результата.</p><h4>Формат диалога и язык</h4><p>Представление запроса разработчика разделяет сообщения system, user и assistant. Системная инструкция может задавать роль или стиль ответа, а пользовательское сообщение содержит фактическую задачу. Сохраняйте формат конкретной модели, не копируя более поздний шаблон Phi и не предполагая вход изображений или вызовы инструментов другой редакции.</p><p>Phi-4 обучена преимущественно на английском и не предназначена как многоязычная модель. Качество на других языках и менее представленных разновидностях английского может быть ниже. Передавайте точные написания технических названий и оценивайте ответ на нужном задаче языке, не считая небольшую многоязычную долю обучающих данных широкой языковой поддержкой.</p><h4>Границы надёжности</h4><p>Срок отсечения публичных обучающих данных — июнь 2024 года и ранее. Для актуальных или чувствительных к источнику утверждений предоставляйте авторитетные материалы в запросе. Microsoft также отмечает возможность неточного, устаревшего или предвзятого вывода несмотря на выравнивание. Проверяйте итоговый ответ по условиям задачи и источникам. Полезный результат — текстовое решение, объяснение или предложение кода с ясными допущениями и подтверждающими сведениями.</p>",
  "aboutText": "Phi-4 — плотный трансформер Microsoft Research только с декодером на 14 млрд параметров для генерации текста. Разработка сосредоточена на качественных обучающих материалах и развитых рассуждениях в относительно компактной модели. Она принимает текст, лучше всего подходит для запросов в диалоговом формате и генерирует текстовый ответ, объяснение или код. Конкретная редакция Phi-4 отличается от более поздних выпусков reasoning, mini и мультимодальных моделей.\n\n### Обучение и назначение\n\nПроизводитель сочетает отфильтрованные по качеству публичные документы и код, новые синтетические учебные данные, приобретённые академические книги и наборы вопросов и ответов. Синтетические материалы обучают математике, программированию, рассуждениям на основе здравого смысла и общим знаниям. Дообучение с учителем и прямая оптимизация предпочтений затем улучшают соблюдение инструкций и поведение ответов.\n\nРазработчик позиционирует Phi-4 как компонент приложений с ограничениями памяти или вычислений, потребностью в интерактивном отклике и задачами рассуждения или логики, преимущественно на английском. Передавайте полное условие и исходные сведения для ответа. Для математической задачи определите переменные, ограничения области и форму результата; для объяснения укажите аудиторию и понятия, которые нужно связать.\n\n### Рассуждение по ясной задаче\n\nПолезное задание: «Сравни эти условия, определи, выполняет ли предложенное решение каждое из них, и объясни первое нарушение. Укажи недостающую информацию до формулирования вывода». Для вопроса по источникам пометьте фрагменты и запросите вывод, подтверждаемый каждым. Просите сохранять имена, единицы и предположения, влияющие на результат.\n\nДаже длинный запрос должен иметь одну ясную цель. Опубликованный контекст составляет 16K токенов и включает инструкции, исходный текст, диалог и генерируемый ответ вместе. Сохраняйте нужные свидетельства во входе и оставляйте место для итогового объяснения. Пример бюджета генерации в карточке иллюстративен и не устанавливает отдельную универсальную максимальную длину ответа.\n\n### Помощь с кодом\n\nPhi-4 может предложить код, объяснить функцию или разобрать входные данные, вызывающие сбой. Передайте реализацию, ожидаемое поведение и характерный случай, отличающий правильный результат. Запросите код отдельно от объяснения и укажите интерфейсы, которые должны остаться неизменными.\n\nПроизводитель отмечает, что большая часть обучения коду основана на Python, особенно распространённых пакетах стандартной библиотеки. Другие пакеты или языки программирования требуют внимательной проверки API. Сгенерированная функция или скрипт не становятся выполненными лишь потому, что выглядят законченными; запустите их в целевой среде и используйте реальные ошибки или наблюдения для правки результата.\n\n### Формат диалога и язык\n\nПредставление запроса разработчика разделяет сообщения system, user и assistant. Системная инструкция может задавать роль или стиль ответа, а пользовательское сообщение содержит фактическую задачу. Сохраняйте формат конкретной модели, не копируя более поздний шаблон Phi и не предполагая вход изображений или вызовы инструментов другой редакции.\n\nPhi-4 обучена преимущественно на английском и не предназначена как многоязычная модель. Качество на других языках и менее представленных разновидностях английского может быть ниже. Передавайте точные написания технических названий и оценивайте ответ на нужном задаче языке, не считая небольшую многоязычную долю обучающих данных широкой языковой поддержкой.\n\n### Границы надёжности\n\nСрок отсечения публичных обучающих данных — июнь 2024 года и ранее. Для актуальных или чувствительных к источнику утверждений предоставляйте авторитетные материалы в запросе. Microsoft также отмечает возможность неточного, устаревшего или предвзятого вывода несмотря на выравнивание. Проверяйте итоговый ответ по условиям задачи и источникам. Полезный результат — текстовое решение, объяснение или предложение кода с ясными допущениями и подтверждающими сведениями.",
  "editorialOverlay": {
    "copy_fields": {
      "practical_html": "<h3>Практическая задача</h3><p>Технический пример на английском</p><pre><code>Check a proposed batch size\n\nA machine makes exactly 12 parts per batch. A supervisor proposes five batches to supply 67 parts and says there will be three spare. Check the proposal using whole batches only. Give the first incorrect claim, the minimum sufficient batch count and the resulting spare-part count. Show the arithmetic briefly.</code></pre><h4>Ожидаемый результат</h4><pre><code>A concise numerical check identifying the failing claim, sufficient batches and surplus.</code></pre><h4>Проверка результата</h4><pre><code>The calculation must use whole batches and meet the 67-part requirement.</code></pre>"
    },
    "copy_sha256": "de78d819778b61ba8d6dbe21f070721d4d403198bc5368d6d51a2b9c6709aa98",
    "copy_source": {
      "locale": "ru",
      "pack_sha256": "0f56d90ba41881e1134accf82e57338f246f8753ca4c0cee929aaffada5d10e7",
      "record_model_id": "microsoft/phi-4",
      "source_facts_sha256": "5a0ad3b59d10302f5c683b419a4ac1f71ab03c2b84a039b66ce863bae4891bfe",
      "validation_sha256": "a2ac2f28056280fc0b2ea34a501bf156d5ce155406e57e708edf30bfdf6bfdc6"
    },
    "html_sha256": "3b5a7e56b831729782a8949d78a40c6b326f51cefd7ba0ca7d4183a2765f8e10",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "ru",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Microsoft: Phi 4</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Закрыть\">×</button></div><div class=\"idline\"><span>Microsoft /</span><code>microsoft/phi-4</code><button type=\"button\" id=\"copy-id\">Скопировать ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Разделы карточки модели\"><button type=\"button\" data-card-jump=\"overview\">Начало</button><button type=\"button\" data-card-jump=\"methods\">Входные данные и методы</button><button type=\"button\" data-card-jump=\"pricing\">Тарифы</button><button type=\"button\" data-card-jump=\"examples\">Примеры</button><button type=\"button\" data-card-jump=\"results\">Результаты</button><button type=\"button\" data-card-jump=\"aliases\">Псевдонимы</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Методы API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|chat|/v1/chat/completions|microsoft%2Fphi-4\">Chat</button><button type=\"button\" role=\"tab\" tabindex=\"-1\" aria-controls=\"card-method-content\" aria-selected=\"false\" id=\"card-method-tab-1\" data-card-method=\"Ultra|messages|/v1/messages|microsoft%2Fphi-4\">Messages</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Начало</h3><p class=\"mdesc-full\">Phi-4 — текстовая модель Microsoft Research на 14 млрд параметров для рассуждений на английском, математики и помощи с кодом. Она использует контекст 16K и диалоговый инструктивный формат, создавая объяснения и предложения кода по полному условию задачи и переданному тексту.</p><dl class=\"card-io\" data-card-io><div><dt>Допустимые входные данные</dt><dd>Текст</dd></div><div><dt>Результаты</dt><dd>Текст</dd></div></dl><details class=\"card-about\"><summary>О модели</summary><p class=\"note-s\" data-model-method-boundary>Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.</p><div class=\"mabout\" id=\"m-about\"><p>Phi-4 — плотный трансформер Microsoft Research только с декодером на 14 млрд параметров для генерации текста. Разработка сосредоточена на качественных обучающих материалах и развитых рассуждениях в относительно компактной модели. Она принимает текст, лучше всего подходит для запросов в диалоговом формате и генерирует текстовый ответ, объяснение или код. Конкретная редакция Phi-4 отличается от более поздних выпусков reasoning, mini и мультимодальных моделей.</p><h4>Обучение и назначение</h4><p>Производитель сочетает отфильтрованные по качеству публичные документы и код, новые синтетические учебные данные, приобретённые академические книги и наборы вопросов и ответов. Синтетические материалы обучают математике, программированию, рассуждениям на основе здравого смысла и общим знаниям. Дообучение с учителем и прямая оптимизация предпочтений затем улучшают соблюдение инструкций и поведение ответов.</p><p>Разработчик позиционирует Phi-4 как компонент приложений с ограничениями памяти или вычислений, потребностью в интерактивном отклике и задачами рассуждения или логики, преимущественно на английском. Передавайте полное условие и исходные сведения для ответа. Для математической задачи определите переменные, ограничения области и форму результата; для объяснения укажите аудиторию и понятия, которые нужно связать.</p><h4>Рассуждение по ясной задаче</h4><p>Полезное задание: «Сравни эти условия, определи, выполняет ли предложенное решение каждое из них, и объясни первое нарушение. Укажи недостающую информацию до формулирования вывода». Для вопроса по источникам пометьте фрагменты и запросите вывод, подтверждаемый каждым. Просите сохранять имена, единицы и предположения, влияющие на результат.</p><p>Даже длинный запрос должен иметь одну ясную цель. Опубликованный контекст составляет 16K токенов и включает инструкции, исходный текст, диалог и генерируемый ответ вместе. Сохраняйте нужные свидетельства во входе и оставляйте место для итогового объяснения. Пример бюджета генерации в карточке иллюстративен и не устанавливает отдельную универсальную максимальную длину ответа.</p><h4>Помощь с кодом</h4><p>Phi-4 может предложить код, объяснить функцию или разобрать входные данные, вызывающие сбой. Передайте реализацию, ожидаемое поведение и характерный случай, отличающий правильный результат. Запросите код отдельно от объяснения и укажите интерфейсы, которые должны остаться неизменными.</p><p>Производитель отмечает, что большая часть обучения коду основана на Python, особенно распространённых пакетах стандартной библиотеки. Другие пакеты или языки программирования требуют внимательной проверки API. Сгенерированная функция или скрипт не становятся выполненными лишь потому, что выглядят законченными; запустите их в целевой среде и используйте реальные ошибки или наблюдения для правки результата.</p><h4>Формат диалога и язык</h4><p>Представление запроса разработчика разделяет сообщения system, user и assistant. Системная инструкция может задавать роль или стиль ответа, а пользовательское сообщение содержит фактическую задачу. Сохраняйте формат конкретной модели, не копируя более поздний шаблон Phi и не предполагая вход изображений или вызовы инструментов другой редакции.</p><p>Phi-4 обучена преимущественно на английском и не предназначена как многоязычная модель. Качество на других языках и менее представленных разновидностях английского может быть ниже. Передавайте точные написания технических названий и оценивайте ответ на нужном задаче языке, не считая небольшую многоязычную долю обучающих данных широкой языковой поддержкой.</p><h4>Границы надёжности</h4><p>Срок отсечения публичных обучающих данных — июнь 2024 года и ранее. Для актуальных или чувствительных к источнику утверждений предоставляйте авторитетные материалы в запросе. Microsoft также отмечает возможность неточного, устаревшего или предвзятого вывода несмотря на выравнивание. Проверяйте итоговый ответ по условиям задачи и источникам. Полезный результат — текстовое решение, объяснение или предложение кода с ясными допущениями и подтверждающими сведениями.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Доступно в Ailoot · входные данные и методы</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Чат OpenAI</b> <code>POST /v1/chat/completions</code></summary><dl class=\"method-capabilities\"><div><dt>Входные данные</dt><dd><code>text</code></dd></div><div><dt>Результат</dt><dd><code>text</code></dd></div><div><dt>Выходной формат</dt><dd>json или SSE</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Поле</th><th>Тип</th><th>Требование</th><th>Значения и ограничения</th><th>По умолчанию</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>microsoft/phi-4</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">messages</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>message[]</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Минимум элементов: 1</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">messages[].role</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Примеры: system, user, assistant, tool, function</div><div>Условия: Эти роли явно представлены типами совместимости исходного кода; точный набор ролей зависит от модели.</div><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">messages[].content</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string|content_part[]|null</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">messages[].tool_calls</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>tool_call[]</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">messages[].tool_call_id</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Применяется, когда: role=tool; используйте фактически возвращённый ID</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">messages[].name</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">messages[].reasoning_content</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Применяется, когда: Передавайте обратно фактически возвращённые рассуждения, если эта модель их использует</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">messages[].reasoning_details</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>object|array</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">max_tokens</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>integer</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Минимум: 1</div><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">max_completion_tokens</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>integer</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Минимум: 1</div><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">stream</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>boolean</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"known\"><span class=\"card-cell-label\">По умолчанию</span>false</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">stream_options.include_usage</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>boolean</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">temperature</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>number</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">top_p</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>number</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">stop</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string|string[]</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">tools</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>function_tool[]</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">tools[].type</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>function</div><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">tools[].function.name</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Применяется, когда: передан инструмент-функция</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">tools[].function.description</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">tools[].function.parameters</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>JSON_schema</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">tool_choice</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string|object</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">parallel_tool_calls</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>boolean</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>object</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">reasoning_effort</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">reasoning</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>object</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">service_tier</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_compatibility\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">instructions</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Поле совместимости</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">functions</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>function[]</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">function_call</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string|object</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">prompt_cache_options</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>object</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div class=\"note-s\">Зависит от модели</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">modalities</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string[]</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>text</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>object</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Условия: provider.options отклоняется на этом текстовом маршруте Ultra</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">cache_control.ttl</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>Условия: 1h отклоняется в фактических местах настройки кэша запросов</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Сочетания входных материалов</summary><p class=\"note-s\"><b>Текст</b> · Текст UTF8</p><p class=\"note-s\"><code>messages[].content</code></p></details><details class=\"note-s\" data-method-contract><summary>Параметры и жизненный цикл метода</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Параметр</th><th>Контракт</th></tr></thead><tbody><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>content_type</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>application/json</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>required</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>model, messages</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>material_types</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>text</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>messages</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>массив сообщений со структурой role/content</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>file_material</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>фактический документ UTF-8 вставляется как буквальный текст; ID файла не выводится из него</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>optional_controls</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>stream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>control_scope</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>зависит от модели; пользовательские инструменты-функции отличаются от инструментов, выполняемых на стороне сервиса</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>output_modalities</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>text</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>hosted_operations</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>false</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>multimodal_input_binding</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>null</td></tr></tbody></table></div><p>Жизненный цикл: <code>synchronous_or_streamed</code></p><p class=\"note-s\">Отправляйте точный ID модели вместе с messages.</p><p class=\"note-s\">Длина контекста не является пределом выхода.</p><p class=\"note-s\">Текстовый файл может передавать буквальный текст; входные изображения, аудио и файловые объекты требуют точной привязки.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Тарифы</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.</p><dl data-price-conditions><dt>Быстрый режим</dt><dd>Стандартный тариф <span class=\"note-s\">При выборе быстрого режима</span></dd><dt>Режим flex</dt><dd>Стандартный тариф <span class=\"note-s\">При выборе режима flex</span></dd><dt>Максимальная интенсивность рассуждений</dt><dd>Стандартный тариф <span class=\"note-s\">При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ставки Ailoot</h4><h4>Цены по конфигурациям</h4><p class=\"note-s\">Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Конфигурация</th><th>Шкала ставок</th><th>Токенов контекста больше</th><th>Токенов контекста не более, включительно</th><th>Плата</th></tr></thead><tbody><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Базовые ставки за токены</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>Базовая ставка</td><td data-cell-label=\"Токенов контекста больше\"><span class=\"card-cell-label\">Токенов контекста больше</span>—</td><td data-cell-label=\"Токенов контекста не более, включительно\"><span class=\"card-cell-label\">Токенов контекста не более, включительно</span>Без верхней границы</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Вход · Входные токены</span> <b>$0.00014</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Выход · Выходные токены</span> <b>$0.00028</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Чтение кэша</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш, 1 час</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Уровень 1 по длине запроса</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Токенов контекста больше\"><span class=\"card-cell-label\">Токенов контекста больше</span>0</td><td data-cell-label=\"Токенов контекста не более, включительно\"><span class=\"card-cell-label\">Токенов контекста не более, включительно</span>Без верхней границы</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Вход · Входные токены</span> <b>$0.00014</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Выход · Выходные токены</span> <b>$0.00028</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Чтение кэша</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш, 1 час</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. <a href=\"/docs/ru/billing/reserve/\">Как работают резервирование и расчёт →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Примеры запросов</h3><h4>Ailoot Ultra · Чат OpenAI</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Варианты кода\"><button class=\"cg-tab\" id=\"model-code-1858-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1858-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button><button class=\"cg-tab\" id=\"model-code-1858-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1858-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button><button class=\"cg-tab\" id=\"model-code-1858-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1858-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Поток Python</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Скопировать код\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1858-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1858-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;microsoft/phi-4&quot;, &quot;messages&quot;: [{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Explain the difference between an observation and a hypothesis in three sentences.&quot;}]}&#39;)\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&quot;result.json&quot;).read_text())\nfor x in r.get(&quot;choices&quot;,[]):\n    if x.get(&quot;message&quot;,{}).get(&quot;content&quot;): print(x[&quot;message&quot;][&quot;content&quot;])\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1858-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1858-tab-1\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\n\nif not os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;).strip(): raise SystemExit(&quot;Set AILOOT_API_KEY before making a request&quot;)\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nresult=client.chat.completions.create(model=&#39;microsoft/phi-4&#39;,messages=[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Explain observations and hypotheses in three sentences.&quot;}])\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=&quot;result&quot;):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + &quot;.json&quot;).write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=&quot;utf-8&quot;)\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b&quot;-_&quot;, validate=True)\n        ext = &quot;png&quot; if raw.startswith(b&quot;\\x89PNG\\r\\n\\x1a\\n&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4] == b&quot;RIFF&quot; and raw[8:12] == b&quot;WEBP&quot; else suffix\n        file = Path(stem + &quot;-&quot; + label + &quot;.&quot; + ext)\n        file.write_bytes(raw)\n        print(&quot;Saved&quot;, file)\n    for index, block in enumerate(data.get(&quot;content&quot;) or []):\n        print(&quot;Content&quot;, index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(&quot;choices&quot;) or []:\n        print(&quot;Choice&quot;, choice.get(&quot;index&quot;), json.dumps(choice.get(&quot;message&quot;, choice.get(&quot;delta&quot;, {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(&quot;output&quot;) or []):\n        print(&quot;Output&quot;, index, json.dumps(item, ensure_ascii=False))\n        if item.get(&quot;type&quot;) == &quot;image_generation_call&quot; and item.get(&quot;result&quot;):\n            save_blob(item[&quot;result&quot;], item.get(&quot;output_format&quot;) or &quot;bin&quot;, &quot;output-&quot; + str(index))\n    for ci, candidate in enumerate(data.get(&quot;candidates&quot;) or []):\n        for pi, part in enumerate((candidate.get(&quot;content&quot;) or {}).get(&quot;parts&quot;) or []):\n            print(&quot;Candidate/part&quot;, ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(&quot;inlineData&quot;) or part.get(&quot;inline_data&quot;)\n            if blob and blob.get(&quot;data&quot;):\n                mime = blob.get(&quot;mimeType&quot;) or blob.get(&quot;mime_type&quot;)\n                suffix = {&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;}.get(mime, &quot;bin&quot;)\n                save_blob(blob[&quot;data&quot;], suffix, &quot;candidate-&quot; + str(ci) + &quot;-part-&quot; + str(pi))\n\nsave_result(result.to_dict(mode=&quot;json&quot;))\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1858-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1858-tab-2\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;).strip(): raise SystemExit(&quot;Set AILOOT_API_KEY before making a request&quot;)\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=&quot;result&quot;):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + &quot;.json&quot;).write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=&quot;utf-8&quot;)\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b&quot;-_&quot;, validate=True)\n        ext = &quot;png&quot; if raw.startswith(b&quot;\\x89PNG\\r\\n\\x1a\\n&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4] == b&quot;RIFF&quot; and raw[8:12] == b&quot;WEBP&quot; else suffix\n        file = Path(stem + &quot;-&quot; + label + &quot;.&quot; + ext)\n        file.write_bytes(raw)\n        print(&quot;Saved&quot;, file)\n    for index, block in enumerate(data.get(&quot;content&quot;) or []):\n        print(&quot;Content&quot;, index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(&quot;choices&quot;) or []:\n        print(&quot;Choice&quot;, choice.get(&quot;index&quot;), json.dumps(choice.get(&quot;message&quot;, choice.get(&quot;delta&quot;, {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(&quot;output&quot;) or []):\n        print(&quot;Output&quot;, index, json.dumps(item, ensure_ascii=False))\n        if item.get(&quot;type&quot;) == &quot;image_generation_call&quot; and item.get(&quot;result&quot;):\n            save_blob(item[&quot;result&quot;], item.get(&quot;output_format&quot;) or &quot;bin&quot;, &quot;output-&quot; + str(index))\n    for ci, candidate in enumerate(data.get(&quot;candidates&quot;) or []):\n        for pi, part in enumerate((candidate.get(&quot;content&quot;) or {}).get(&quot;parts&quot;) or []):\n            print(&quot;Candidate/part&quot;, ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(&quot;inlineData&quot;) or part.get(&quot;inline_data&quot;)\n            if blob and blob.get(&quot;data&quot;):\n                mime = blob.get(&quot;mimeType&quot;) or blob.get(&quot;mime_type&quot;)\n                suffix = {&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;}.get(mime, &quot;bin&quot;)\n                save_blob(blob[&quot;data&quot;], suffix, &quot;candidate-&quot; + str(ci) + &quot;-part-&quot; + str(pi))\n\nwith client.chat.completions.stream(model=&#39;microsoft/phi-4&#39;,messages=[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Explain observations and hypotheses in three sentences.&quot;}]) as stream:\n    with Path(&quot;stream-events.jsonl&quot;).open(&quot;w&quot;,encoding=&quot;utf-8&quot;) as log:\n        for event in stream:\n            payload=event.to_dict(mode=&quot;json&quot;)\n            log.write(json.dumps(payload,ensure_ascii=False)+&quot;\\n&quot;); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=&quot;json&quot;),&quot;stream-result&quot;)\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Получить и сохранить результаты</h3><h4>Ailoot Ultra · Чат OpenAI</h4><p class=\"note-s\">json или SSE</p><div class=\"card-result-process\" data-all-results><h5>Сохраняйте все готовые результаты</h5><p class=\"note-s\">Сохраняйте каждый полностью полученный ответ, файл и элемент содержимого.</p><p class=\"note-s\">Сохраняйте каждый вариант ответа с его содержимым, вызовами инструментов и рассуждениями. В SSE собирайте изменения по индексам варианта и инструмента, сохраняйте итоговую причину завершения и данные использования.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Если нужно проверить исходный ответ</h5><p class=\"note-s\">Сохраняйте ID запросов и ответов, а также заголовки. Общий URL получения текстового задания не предоставлен.</p></div><details class=\"card-about\" data-output-fields><summary>Поля ответа</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Поле</th><th>Тип</th></tr></thead><tbody><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">choices[].index</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>integer</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">choices[].message.content</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>string|null</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">choices[].message.tool_calls</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>tool_call[]</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">choices[].message.reasoning_content</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>string</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">choices[].message.reasoning_details</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>object|array</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">choices[].finish_reason</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>string|null</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Ошибки и дальнейшие шаги</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Ответ</th><th>Условие</th><th>Следующий шаг</th></tr></thead><tbody><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Неверные обязательные поля, представление материалов или значение параметра</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Исправьте указанные поля перед новым запросом на создание.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Псевдонимы</h3><h4>Псевдонимы моделей</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=microsoft%2Fphi-4&amp;route=Ultra&amp;caller=microsoft%2Fphi-4&amp;fmt=chat\"><code>microsoft/phi-4</code></a></span></p><h4>Псевдонимы путей метода</h4><p class=\"note-s\">Используйте пути методов, указанные выше.</p><h4>Связанные ID для вызова</h4><p class=\"note-s\"><a href=\"#m=microsoft%2Fphi-4&amp;route=Ultra&amp;caller=microsoft%2Fphi-4&amp;fmt=chat\"><code>microsoft/phi-4</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "microsoft/phi-4",
        "fmt": "chat",
        "http": "POST",
        "path": "/v1/chat/completions",
        "request_model_id": "microsoft/phi-4",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|chat|/v1/chat/completions|microsoft%2Fphi-4",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every choice and its content/tool calls/reasoning. In SSE assemble deltas by choice/tool index, retain the final finish reason and usage.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Неверные обязательные поля, представление материалов или значение параметра",
                "http_status": 400,
                "recovery": "Исправьте указанные поля перед новым запросом на создание.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [
              "Model context is not an output cap.",
              "A model-dependent field needs the exact published model profile; unspecified defaults/enums are not guessed.",
              "Tool calls propose actions; the client application returns actual observations with the returned call ID.",
              "Guarded canonical keys must occur once; duplicate or case-varied model/tools/cap fields are rejected."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/chat/completions"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Сохраняйте ID запросов и ответов, а также заголовки. Общий URL получения текстового задания не предоставлен."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "messages[].content",
                "required_material": "Текст UTF8"
              }
            ],
            "operation_modes": [
              "conversation",
              "function_tool_continuation",
              "streaming"
            ],
            "outputs": {
              "all_results": "Сохраняйте каждый вариант ответа с его содержимым, вызовами инструментов и рассуждениями. В SSE собирайте изменения по индексам варианта и инструмента, сохраняйте итоговую причину завершения и данные использования.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "choices[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "choices[].message.content",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "choices[].message.tool_calls",
                  "type": "tool_call[]"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_content",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_details",
                  "type": "object|array"
                },
                {
                  "description": null,
                  "name": "choices[].finish_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json или SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "microsoft/phi-4"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "model_dependent",
                "conditions": "Эти роли явно представлены типами совместимости исходного кода; точный набор ролей зависит от модели.",
                "default": null,
                "default_known": false,
                "enum": [
                  "system",
                  "user",
                  "assistant",
                  "tool",
                  "function"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": false,
                "type": "string|content_part[]|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_calls",
                "required": false,
                "type": "tool_call[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_call_id",
                "required": false,
                "type": "string",
                "when": "role=tool; используйте фактически возвращённый ID"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].name",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_content",
                "required": false,
                "type": "string",
                "when": "Передавайте обратно фактически возвращённые рассуждения, если эта модель их использует"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_details",
                "required": false,
                "type": "object|array"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_completion_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stream_options.include_usage",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "temperature",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "top_p",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stop",
                "required": false,
                "type": "string|string[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "required": false,
                "type": "function_tool[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": [
                  "function"
                ],
                "enum_known": true,
                "name": "tools[].type",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.name",
                "required": true,
                "type": "string",
                "when": "передан инструмент-функция"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.description",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.parameters",
                "required": false,
                "type": "JSON_schema"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tool_choice",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "parallel_tool_calls",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "response_format",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning_effort",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_compatibility",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "instructions",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "functions",
                "required": false,
                "type": "function[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "function_call",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "prompt_cache_options",
                "required": false,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "text"
                ],
                "enum_known": true,
                "name": "modalities",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options отклоняется на этом текстовом маршруте Ultra",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "conditions": "1h отклоняется в фактических местах настройки кэша запросов",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "cache_control.ttl",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "additional models/models list",
              "plugins",
              "route",
              "hosted tools; ordinary client function tools remain separate",
              "non-text output modalities",
              "provider.options overrides",
              "one-hour prompt-cache TTL"
            ]
          },
          "hints": [
            "Отправляйте точный ID модели вместе с messages.",
            "Длина контекста не является пределом выхода.",
            "Текстовый файл может передавать буквальный текст; входные изображения, аудио и файловые объекты требуют точной привязки."
          ],
          "input": {
            "content_type": "application/json",
            "control_scope": "зависит от модели; пользовательские инструменты-функции отличаются от инструментов, выполняемых на стороне сервиса",
            "file_material": "фактический документ UTF-8 вставляется как буквальный текст; ID файла не выводится из него",
            "hosted_operations": false,
            "material_types": [
              "text"
            ],
            "messages": "массив сообщений со структурой role/content",
            "multimodal_input_binding": null,
            "optional_controls": [
              "stream",
              "temperature",
              "top_p",
              "stop",
              "max_tokens",
              "max_completion_tokens",
              "reasoning",
              "response_format",
              "tools",
              "tool_choice"
            ],
            "output_modalities": [
              "text"
            ],
            "required": [
              "model",
              "messages"
            ]
          },
          "lifecycle": {
            "mode": "synchronous_or_streamed",
            "unknown": "preserve original request id; no generic chat job retrieval path"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/chat/completions"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_chat"
          ],
          "output": {
            "content": "choices[].message.content or stream delta",
            "family": "text",
            "format": "json or supported SSE",
            "tool_calls": "retain actual returned function calls"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Базовые ставки за токены",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Уровень 1 по длине запроса",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"microsoft/phi-4\", \"messages\": [{\"role\": \"user\", \"content\": \"Explain the difference between an observation and a hypothesis in three sentences.\"}]}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"result.json\").read_text())\nfor x in r.get(\"choices\",[]):\n    if x.get(\"message\",{}).get(\"content\"): print(x[\"message\"][\"content\"])\nPY_RESULT\n",
            "label": "curl · retained exact creation",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.chat.completions.create(model='microsoft/phi-4',messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}])\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nsave_result(result.to_dict(mode=\"json\"))\n",
            "label": "Python SDK · all choices",
            "language": "python"
          },
          {
            "code": "from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nwith client.chat.completions.stream(model='microsoft/phi-4',messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}]) as stream:\n    with Path(\"stream-events.jsonl\").open(\"w\",encoding=\"utf-8\") as log:\n        for event in stream:\n            payload=event.to_dict(mode=\"json\")\n            log.write(json.dumps(payload,ensure_ascii=False)+\"\\n\"); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=\"json\"),\"stream-result\")\n",
            "label": "Python SDK streaming · all events",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": 1,
        "flex_multiplier": 1,
        "fmt": "chat",
        "hints": [
          "Send exact model ID with messages.",
          "Context length is not an output cap.",
          "A text file may supply literal text; image/audio/file-object inputs need exact binding."
        ],
        "http": "POST",
        "in": 0.14,
        "input": [
          "text"
        ],
        "label": "Чат OpenAI",
        "max_out": null,
        "max_reasoning_effort_multiplier": 1,
        "method_aliases": [],
        "out": 0.28,
        "output": [
          "text"
        ],
        "path": "/v1/chat/completions",
        "price_conditions": [
          {
            "label": "Быстрый режим",
            "value": "Стандартный тариф",
            "when": "При выборе быстрого режима"
          },
          {
            "label": "Режим flex",
            "value": "Стандартный тариф",
            "when": "При выборе режима flex"
          },
          {
            "label": "Максимальная интенсивность рассуждений",
            "value": "Стандартный тариф",
            "when": "При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "microsoft/phi-4",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [
          {
            "cache_read": null,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.14,
            "input_multiplier": null,
            "interval_boundary": "min_exclusive_max_inclusive",
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "null_rate_policy": "unknown or inherited; never zero",
            "out": 0.28,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.00014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000014",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00028000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000028",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    },
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Microsoft: Phi 4</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Закрыть\">×</button></div><div class=\"idline\"><span>Microsoft /</span><code>microsoft/phi-4</code><button type=\"button\" id=\"copy-id\">Скопировать ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Разделы карточки модели\"><button type=\"button\" data-card-jump=\"overview\">Начало</button><button type=\"button\" data-card-jump=\"methods\">Входные данные и методы</button><button type=\"button\" data-card-jump=\"pricing\">Тарифы</button><button type=\"button\" data-card-jump=\"examples\">Примеры</button><button type=\"button\" data-card-jump=\"results\">Результаты</button><button type=\"button\" data-card-jump=\"aliases\">Псевдонимы</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Методы API\"><button type=\"button\" role=\"tab\" tabindex=\"-1\" aria-controls=\"card-method-content\" aria-selected=\"false\" id=\"card-method-tab-0\" data-card-method=\"Ultra|chat|/v1/chat/completions|microsoft%2Fphi-4\">Chat</button><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-1\" data-card-method=\"Ultra|messages|/v1/messages|microsoft%2Fphi-4\">Messages</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-1\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Начало</h3><p class=\"mdesc-full\">Phi-4 — текстовая модель Microsoft Research на 14 млрд параметров для рассуждений на английском, математики и помощи с кодом. Она использует контекст 16K и диалоговый инструктивный формат, создавая объяснения и предложения кода по полному условию задачи и переданному тексту.</p><dl class=\"card-io\" data-card-io><div><dt>Допустимые входные данные</dt><dd>Текст</dd></div><div><dt>Результаты</dt><dd>json · sse</dd></div></dl><details class=\"card-about\"><summary>О модели</summary><p class=\"note-s\" data-model-method-boundary>Описание раскрывает возможности модели. Доступные в Ailoot входные данные, результаты и параметры выбранного метода перечислены ниже.</p><div class=\"mabout\" id=\"m-about\"><p>Phi-4 — плотный трансформер Microsoft Research только с декодером на 14 млрд параметров для генерации текста. Разработка сосредоточена на качественных обучающих материалах и развитых рассуждениях в относительно компактной модели. Она принимает текст, лучше всего подходит для запросов в диалоговом формате и генерирует текстовый ответ, объяснение или код. Конкретная редакция Phi-4 отличается от более поздних выпусков reasoning, mini и мультимодальных моделей.</p><h4>Обучение и назначение</h4><p>Производитель сочетает отфильтрованные по качеству публичные документы и код, новые синтетические учебные данные, приобретённые академические книги и наборы вопросов и ответов. Синтетические материалы обучают математике, программированию, рассуждениям на основе здравого смысла и общим знаниям. Дообучение с учителем и прямая оптимизация предпочтений затем улучшают соблюдение инструкций и поведение ответов.</p><p>Разработчик позиционирует Phi-4 как компонент приложений с ограничениями памяти или вычислений, потребностью в интерактивном отклике и задачами рассуждения или логики, преимущественно на английском. Передавайте полное условие и исходные сведения для ответа. Для математической задачи определите переменные, ограничения области и форму результата; для объяснения укажите аудиторию и понятия, которые нужно связать.</p><h4>Рассуждение по ясной задаче</h4><p>Полезное задание: «Сравни эти условия, определи, выполняет ли предложенное решение каждое из них, и объясни первое нарушение. Укажи недостающую информацию до формулирования вывода». Для вопроса по источникам пометьте фрагменты и запросите вывод, подтверждаемый каждым. Просите сохранять имена, единицы и предположения, влияющие на результат.</p><p>Даже длинный запрос должен иметь одну ясную цель. Опубликованный контекст составляет 16K токенов и включает инструкции, исходный текст, диалог и генерируемый ответ вместе. Сохраняйте нужные свидетельства во входе и оставляйте место для итогового объяснения. Пример бюджета генерации в карточке иллюстративен и не устанавливает отдельную универсальную максимальную длину ответа.</p><h4>Помощь с кодом</h4><p>Phi-4 может предложить код, объяснить функцию или разобрать входные данные, вызывающие сбой. Передайте реализацию, ожидаемое поведение и характерный случай, отличающий правильный результат. Запросите код отдельно от объяснения и укажите интерфейсы, которые должны остаться неизменными.</p><p>Производитель отмечает, что большая часть обучения коду основана на Python, особенно распространённых пакетах стандартной библиотеки. Другие пакеты или языки программирования требуют внимательной проверки API. Сгенерированная функция или скрипт не становятся выполненными лишь потому, что выглядят законченными; запустите их в целевой среде и используйте реальные ошибки или наблюдения для правки результата.</p><h4>Формат диалога и язык</h4><p>Представление запроса разработчика разделяет сообщения system, user и assistant. Системная инструкция может задавать роль или стиль ответа, а пользовательское сообщение содержит фактическую задачу. Сохраняйте формат конкретной модели, не копируя более поздний шаблон Phi и не предполагая вход изображений или вызовы инструментов другой редакции.</p><p>Phi-4 обучена преимущественно на английском и не предназначена как многоязычная модель. Качество на других языках и менее представленных разновидностях английского может быть ниже. Передавайте точные написания технических названий и оценивайте ответ на нужном задаче языке, не считая небольшую многоязычную долю обучающих данных широкой языковой поддержкой.</p><h4>Границы надёжности</h4><p>Срок отсечения публичных обучающих данных — июнь 2024 года и ранее. Для актуальных или чувствительных к источнику утверждений предоставляйте авторитетные материалы в запросе. Microsoft также отмечает возможность неточного, устаревшего или предвзятого вывода несмотря на выравнивание. Проверяйте итоговый ответ по условиям задачи и источникам. Полезный результат — текстовое решение, объяснение или предложение кода с ясными допущениями и подтверждающими сведениями.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Доступно в Ailoot · входные данные и методы</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Сообщения Anthropic</b> <code>POST /v1/messages</code></summary><dl class=\"method-capabilities\"><div><dt>Входные данные</dt><dd><code>text</code></dd></div><div><dt>Результат</dt><dd><code>json</code>, <code>sse</code></dd></div><div><dt>Выходной формат</dt><dd>JSON или SSE</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Поле</th><th>Тип</th><th>Требование</th><th>Значения и ограничения</th><th>По умолчанию</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>microsoft/phi-4</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">messages</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>message[]</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">messages[].role</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span><div>user, assistant</div></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">messages[].content</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>string</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">max_tokens</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>integer</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Обязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"unspecified\"><span class=\"card-cell-label\">По умолчанию</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">stream</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span><code>boolean</code></td><td data-cell-label=\"Требование\"><span class=\"card-cell-label\">Требование</span>Необязательно</td><td data-cell-label=\"Значения и ограничения\"><span class=\"card-cell-label\">Значения и ограничения</span></td><td data-cell-label=\"По умолчанию\" data-default=\"known\"><span class=\"card-cell-label\">По умолчанию</span>false</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Сочетания входных материалов</summary><p class=\"note-s\"><b>Текст</b> · Текст UTF-8</p><p class=\"note-s\"><code>строка messages[].content</code></p></details><details class=\"note-s\" data-method-contract><summary>Параметры и жизненный цикл метода</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Параметр</th><th>Контракт</th></tr></thead><tbody><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>content_type</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>application/json</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>required</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>model, messages, max_tokens</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>optional_controls</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>stream</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>material_types</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>text</td></tr><tr><th data-cell-label=\"Параметр\" scope=\"row\"><span class=\"card-cell-label\">Параметр</span><code>text_file_material</code></th><td data-cell-label=\"Контракт\"><span class=\"card-cell-label\">Контракт</span>Прочитайте фактический документ UTF-8 и поместите его текст в указанную строку входа или содержимого сообщения.</td></tr></tbody></table></div><p>Жизненный цикл: <code>synchronous_or_streamed</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Тарифы</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Тарифная справка не добавляет режимы запроса. Поддерживаемые параметры указаны для выбранного метода.</p><dl data-price-conditions><dt>Быстрый режим</dt><dd>Стандартный тариф <span class=\"note-s\">При выборе быстрого режима</span></dd><dt>Режим flex</dt><dd>Стандартный тариф <span class=\"note-s\">При выборе режима flex</span></dd><dt>Максимальная интенсивность рассуждений</dt><dd>Стандартный тариф <span class=\"note-s\">При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ставки Ailoot</h4><h4>Цены по конфигурациям</h4><p class=\"note-s\">Сопоставьте каждую плату с указанными условиями. Для каждого набора альтернативных конфигураций используйте одну ставку.</p><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Конфигурация</th><th>Шкала ставок</th><th>Токенов контекста больше</th><th>Токенов контекста не более, включительно</th><th>Плата</th></tr></thead><tbody><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Базовые ставки за токены</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>Базовая ставка</td><td data-cell-label=\"Токенов контекста больше\"><span class=\"card-cell-label\">Токенов контекста больше</span>—</td><td data-cell-label=\"Токенов контекста не более, включительно\"><span class=\"card-cell-label\">Токенов контекста не более, включительно</span>Без верхней границы</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Вход · Входные токены</span> <b>$0.00014</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Выход · Выходные токены</span> <b>$0.00028</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Чтение кэша</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш, 1 час</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div></td></tr><tr><th data-cell-label=\"Конфигурация\" scope=\"row\"><span class=\"card-cell-label\">Конфигурация</span>Уровень 1 по длине запроса</th><td data-cell-label=\"Шкала ставок\"><span class=\"card-cell-label\">Шкала ставок</span>—</td><td data-cell-label=\"Токенов контекста больше\"><span class=\"card-cell-label\">Токенов контекста больше</span>0</td><td data-cell-label=\"Токенов контекста не более, включительно\"><span class=\"card-cell-label\">Токенов контекста не более, включительно</span>Без верхней границы</td><td data-cell-label=\"Плата\"><span class=\"card-cell-label\">Плата</span><div><span>Вход · Входные токены</span> <b>$0.00014</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Выход · Выходные токены</span> <b>$0.00028</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Чтение кэша</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div><div><span>Вход · Запись в кэш, 1 час</span> <b>—</b> <span class=\"price-unit\">/ 1K токенов</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot резервирует расчётную сумму перед запросом. После получения результата списывает итоговую плату по измеренному расходу. Для окончательного списания за потоковый ответ используется итоговая запись расхода. <a href=\"/docs/ru/billing/reserve/\">Как работают резервирование и расчёт →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Примеры запросов</h3><h4>Ailoot Ultra · Сообщения Anthropic</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Варианты кода\"><button class=\"cg-tab\" id=\"model-code-1859-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1859-panel-0\" aria-selected=\"true\" tabindex=\"0\">Полное минимальное тело запроса в формате JSON</button><button class=\"cg-tab\" id=\"model-code-1859-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1859-panel-1\" aria-selected=\"false\" tabindex=\"-1\">curl · используйте свой документ UTF-8</button><button class=\"cg-tab\" id=\"model-code-1859-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-1859-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Python · сохраните полный результат</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Скопировать код\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-1859-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-1859-tab-0\"><pre data-lang=\"json\"><code>{\n  &quot;model&quot;: &quot;microsoft/phi-4&quot;,\n  &quot;max_tokens&quot;: 128,\n  &quot;messages&quot;: [\n    {\n      &quot;role&quot;: &quot;user&quot;,\n      &quot;content&quot;: &quot;Summarize the incident report.&quot;\n    }\n  ],\n  &quot;stream&quot;: false\n}</code></pre></div><div class=\"cg-pane\" id=\"model-code-1859-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-1859-tab-1\" hidden><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}&quot;\nexport AILOOT_TEXT_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json, os\nfrom pathlib import Path\n\nsource_file = Path(os.environ[&#39;AILOOT_TEXT_FILE&#39;])\nif not source_file.is_file():\n    raise SystemExit(&#39;Set AILOOT_TEXT_FILE to your actual UTF-8 document&#39;)\ntext = source_file.read_text(encoding=&#39;utf-8&#39;)\nif not text.strip():\n    raise SystemExit(&#39;Choose a document containing text&#39;)\npayload = {&#39;model&#39;: &#39;microsoft/phi-4&#39;, &#39;max_tokens&#39;: 128, &#39;messages&#39;: [{&#39;role&#39;: &#39;user&#39;, &#39;content&#39;: &#39;Summarize the incident report.&#39;}]}\npayload[&#39;messages&#39;][0][&#39;content&#39;] = &#39;Summarize this material and quote supporting source passages.\\n\\n&#39; + text\nPath(&#39;request.json&#39;).write_text(json.dumps(payload, ensure_ascii=False), encoding=&#39;utf-8&#39;)\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \\\n  -H &quot;x-api-key: $AILOOT_API_KEY&quot; -H &#39;anthropic-version: 2023-06-01&#39; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\n\nresult = json.loads(Path(&#39;result.json&#39;).read_text(encoding=&#39;utf-8&#39;))\nprint(json.dumps(result, ensure_ascii=False, indent=2))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-1859-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-1859-tab-2\" hidden><pre data-lang=\"python\"><code>import json, os\nfrom pathlib import Path\n\nsource_file = Path(os.environ[&#39;AILOOT_TEXT_FILE&#39;])\nif not source_file.is_file():\n    raise SystemExit(&#39;Set AILOOT_TEXT_FILE to your actual UTF-8 document&#39;)\ntext = source_file.read_text(encoding=&#39;utf-8&#39;)\nif not text.strip():\n    raise SystemExit(&#39;Choose a document containing text&#39;)\npayload = {&#39;model&#39;: &#39;microsoft/phi-4&#39;, &#39;max_tokens&#39;: 128, &#39;messages&#39;: [{&#39;role&#39;: &#39;user&#39;, &#39;content&#39;: &#39;Summarize the incident report.&#39;}]}\npayload[&#39;messages&#39;][0][&#39;content&#39;] = &#39;Summarize this material and quote supporting source passages.\\n\\n&#39; + text\nfrom urllib.request import Request, urlopen\nfrom urllib.error import HTTPError\n\napi_key = os.environ[&#39;AILOOT_API_KEY&#39;]\nif not api_key.strip():\n    raise SystemExit(&#39;Set AILOOT_API_KEY before making a request&#39;)\nheaders = {&#39;x-api-key&#39;: &#39;PLACEHOLDER_KEY&#39;, &#39;anthropic-version&#39;: &#39;2023-06-01&#39;, &#39;Content-Type&#39;: &#39;application/json&#39;}\nheaders[&#39;x-api-key&#39;] = api_key\nrequest = Request(&#39;https://api.ailoot.ai/v1/messages&#39;, data=json.dumps(payload, ensure_ascii=False).encode(&#39;utf-8&#39;), headers=headers, method=&#39;POST&#39;)\ntry:\n    with urlopen(request, timeout=120) as response:\n        raw = response.read()\n        Path(&#39;response-headers.txt&#39;).write_text(str(response.headers), encoding=&#39;utf-8&#39;)\nexcept HTTPError as error:\n    Path(&#39;result.json&#39;).write_bytes(error.read())\n    Path(&#39;response-headers.txt&#39;).write_text(str(error.headers), encoding=&#39;utf-8&#39;)\n    raise\nPath(&#39;result.json&#39;).write_bytes(raw)\nimport json\nfrom pathlib import Path\n\nresult = json.loads(Path(&#39;result.json&#39;).read_text(encoding=&#39;utf-8&#39;))\nprint(json.dumps(result, ensure_ascii=False, indent=2))\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Получить и сохранить результаты</h3><h4>Ailoot Ultra · Сообщения Anthropic</h4><p class=\"note-s\">JSON или SSE</p><div class=\"card-result-process\" data-all-results><h5>Сохраняйте все готовые результаты</h5><p class=\"note-s\">Сохраняйте каждый полностью полученный ответ, файл и элемент содержимого.</p><p class=\"note-s\">Сохраняйте все блоки содержимого, подписи рассуждений и фактические ID обращений к инструментам. Собирайте все изменения блоков SSE; первый текстовый блок не является полным выходом.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Если нужно проверить исходный ответ</h5><p class=\"note-s\">Сохраняйте ID запросов и ответов, а также заголовки. Общий URL получения текстового задания не предоставлен.</p></div><details class=\"card-about\" data-output-fields><summary>Поля ответа</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Поле</th><th>Тип</th></tr></thead><tbody><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>string</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>string</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">content[]</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>text|thinking|tool_use|other content block</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">stop_reason</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>string|null</td></tr><tr><th data-cell-label=\"Поле\" scope=\"row\"><span class=\"card-cell-label\">Поле</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Тип\" data-field-type><span class=\"card-cell-label\">Тип</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Ошибки и дальнейшие шаги</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Ответ</th><th>Условие</th><th>Следующий шаг</th></tr></thead><tbody><tr><th data-cell-label=\"Ответ\" scope=\"row\"><span class=\"card-cell-label\">Ответ</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Условие\"><span class=\"card-cell-label\">Условие</span>Неверные обязательные поля, представление материалов или значение параметра</td><td data-cell-label=\"Следующий шаг\"><span class=\"card-cell-label\">Следующий шаг</span>Исправьте указанные поля перед новым запросом на создание.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Псевдонимы</h3><h4>Псевдонимы моделей</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=microsoft%2Fphi-4&amp;route=Ultra&amp;caller=microsoft%2Fphi-4&amp;fmt=messages\"><code>microsoft/phi-4</code></a></span></p><h4>Псевдонимы путей метода</h4><p class=\"note-s\">Используйте пути методов, указанные выше.</p><h4>Связанные ID для вызова</h4><p class=\"note-s\"><a href=\"#m=microsoft%2Fphi-4&amp;route=Ultra&amp;caller=microsoft%2Fphi-4&amp;fmt=messages\"><code>microsoft/phi-4</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "microsoft/phi-4",
        "fmt": "messages",
        "http": "POST",
        "path": "/v1/messages",
        "request_model_id": "microsoft/phi-4",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|messages|/v1/messages|microsoft%2Fphi-4",
      "ordinal": 1,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "headers": [
                "Authorization: Bearer",
                "x-api-key",
                "anthropic-version"
              ],
              "version_example": "2023-06-01"
            },
            "errors": [
              {
                "code": null,
                "condition": "Неверные обязательные поля, представление материалов или значение параметра",
                "http_status": 400,
                "recovery": "Исправьте указанные поля перед новым запросом на создание.",
                "type": "invalid_request_error"
              }
            ],
            "example_body": {
              "max_tokens": 128,
              "messages": [
                {
                  "content": "Summarize the incident report.",
                  "role": "user"
                }
              ],
              "model": "microsoft/phi-4",
              "stream": false
            },
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/messages"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Сохраняйте ID запросов и ответов, а также заголовки. Общий URL получения текстового задания не предоставлен."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "строка messages[].content",
                "required_material": "Текст UTF-8"
              }
            ],
            "operation_modes": [
              "synchronous_json",
              "streamed_SSE"
            ],
            "outputs": {
              "all_results": "Сохраняйте все блоки содержимого, подписи рассуждений и фактические ID обращений к инструментам. Собирайте все изменения блоков SSE; первый текстовый блок не является полным выходом.",
              "family": "protocol",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "content[]",
                  "type": "text|thinking|tool_use|other content block"
                },
                {
                  "description": null,
                  "name": "stop_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "JSON или SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "microsoft/phi-4"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "user",
                  "assistant"
                ],
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "max_tokens",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              }
            ],
            "profile_binding": "Documented current stock Messages bridge; optional model capabilities are separate from this minimal text request.",
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "max_tokens": {
                  "minimum": 1,
                  "type": "integer"
                },
                "messages": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "content": {
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "items": {
                              "oneOf": [
                                {
                                  "properties": {
                                    "text": {
                                      "type": "string"
                                    },
                                    "type": {
                                      "const": "text"
                                    }
                                  },
                                  "required": [
                                    "type",
                                    "text"
                                  ],
                                  "type": "object"
                                },
                                {
                                  "properties": {
                                    "source": {
                                      "oneOf": [
                                        {
                                          "properties": {
                                            "type": {
                                              "const": "url"
                                            },
                                            "url": {
                                              "type": "string"
                                            }
                                          },
                                          "required": [
                                            "type",
                                            "url"
                                          ],
                                          "type": "object"
                                        },
                                        {
                                          "properties": {
                                            "data": {
                                              "type": "string"
                                            },
                                            "media_type": {
                                              "type": "string"
                                            },
                                            "type": {
                                              "const": "base64"
                                            }
                                          },
                                          "required": [
                                            "type",
                                            "media_type",
                                            "data"
                                          ],
                                          "type": "object"
                                        }
                                      ]
                                    },
                                    "type": {
                                      "const": "image"
                                    }
                                  },
                                  "required": [
                                    "type",
                                    "source"
                                  ],
                                  "type": "object"
                                }
                              ]
                            },
                            "type": "array"
                          }
                        ]
                      },
                      "role": {
                        "enum": [
                          "user",
                          "assistant"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "role",
                      "content"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "microsoft/phi-4"
                  ],
                  "type": "string"
                },
                "stream": {
                  "default": false,
                  "type": "boolean"
                }
              },
              "required": [
                "model",
                "messages",
                "max_tokens"
              ],
              "type": "object"
            },
            "schema_template": {
              "max_tokens": 128,
              "messages": [
                {
                  "content": "Summarize the incident report.",
                  "role": "user"
                }
              ],
              "model": "microsoft/phi-4",
              "stream": false
            },
            "unsupported": [
              "No query API key.",
              "Hosted/server-side tools and model-specific optional controls are not part of this minimal family example."
            ]
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "stream"
            ],
            "required": [
              "model",
              "messages",
              "max_tokens"
            ],
            "text_file_material": "Прочитайте фактический документ UTF-8 и поместите его текст в указанную строку входа или содержимого сообщения."
          },
          "lifecycle": {
            "create": {
              "http": "POST",
              "path": "/v1/messages"
            },
            "job_read": null,
            "mode": "synchronous_or_streamed",
            "unknown": "Keep request/response IDs and headers. No generic text job retrieval URL is supplied."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/messages"
          },
          "output": {
            "all_results": "Keep all content blocks, thinking signatures and actual tool-use IDs. Assemble all SSE block deltas; a first text block is not the complete output.",
            "family": "protocol",
            "format": "JSON or SSE"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Базовые ставки за токены",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Уровень 1 по длине запроса",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "{\n  \"model\": \"microsoft/phi-4\",\n  \"max_tokens\": 128,\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"Summarize the incident report.\"\n    }\n  ],\n  \"stream\": false\n}",
            "label": "Complete minimal JSON body",
            "language": "json"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json, os\nfrom pathlib import Path\n\nsource_file = Path(os.environ['AILOOT_TEXT_FILE'])\nif not source_file.is_file():\n    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')\ntext = source_file.read_text(encoding='utf-8')\nif not text.strip():\n    raise SystemExit('Choose a document containing text')\npayload = {'model': 'microsoft/phi-4', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}\npayload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\\n\\n' + text\nPath('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \\\n  -H \"x-api-key: $AILOOT_API_KEY\" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\n\nresult = json.loads(Path('result.json').read_text(encoding='utf-8'))\nprint(json.dumps(result, ensure_ascii=False, indent=2))\nPY_RESULT\n",
            "label": "curl · use your UTF-8 document",
            "language": "bash"
          },
          {
            "code": "import json, os\nfrom pathlib import Path\n\nsource_file = Path(os.environ['AILOOT_TEXT_FILE'])\nif not source_file.is_file():\n    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')\ntext = source_file.read_text(encoding='utf-8')\nif not text.strip():\n    raise SystemExit('Choose a document containing text')\npayload = {'model': 'microsoft/phi-4', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}\npayload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\\n\\n' + text\nfrom urllib.request import Request, urlopen\nfrom urllib.error import HTTPError\n\napi_key = os.environ['AILOOT_API_KEY']\nif not api_key.strip():\n    raise SystemExit('Set AILOOT_API_KEY before making a request')\nheaders = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}\nheaders['x-api-key'] = api_key\nrequest = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')\ntry:\n    with urlopen(request, timeout=120) as response:\n        raw = response.read()\n        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')\nexcept HTTPError as error:\n    Path('result.json').write_bytes(error.read())\n    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')\n    raise\nPath('result.json').write_bytes(raw)\nimport json\nfrom pathlib import Path\n\nresult = json.loads(Path('result.json').read_text(encoding='utf-8'))\nprint(json.dumps(result, ensure_ascii=False, indent=2))\n",
            "label": "Python · save the complete result",
            "language": "python"
          }
        ],
        "family": "anthropic",
        "fast_multiplier": 1,
        "flex_multiplier": 1,
        "fmt": "messages",
        "http": "POST",
        "in": 0.14,
        "input": [
          "text"
        ],
        "label": "Сообщения Anthropic",
        "max_out": null,
        "max_reasoning_effort_multiplier": 1,
        "method_aliases": [],
        "out": 0.28,
        "output": [
          "json",
          "sse"
        ],
        "path": "/v1/messages",
        "price_conditions": [
          {
            "label": "Быстрый режим",
            "value": "Стандартный тариф",
            "when": "При выборе быстрого режима"
          },
          {
            "label": "Режим flex",
            "value": "Стандартный тариф",
            "when": "При выборе режима flex"
          },
          {
            "label": "Максимальная интенсивность рассуждений",
            "value": "Стандартный тариф",
            "when": "При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "microsoft/phi-4",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [
          {
            "cache_read": null,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.14,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 0.28,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.00014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000014",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00028000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000028",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    }
  ],
  "model_id": "microsoft/phi-4",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "4b9b23028f5c743337a658f179882290c7a717092e0bae979eb43b8c292e4e7a",
    "input_html_sha256": "12b0e9084fc04b96447215bcfff8440b02d16196adec01bf25d9b96925cb2368",
    "private_audit_sha256": "a6529df211273ece221ef318a79b0e3c5aa13e14998636e37e3e465a4dbb164c",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/ru/microsoft-phi-4/",
    "description": "Phi-4 — текстовая модель Microsoft Research на 14 млрд параметров для рассуждений на английском, математики и помощи с кодом. Она использует контекст 16K и диалоговый инструктивный формат, создавая объяснения и предложения кода по полному условию задачи и переданному тексту.",
    "locale": "ru",
    "md_url": "https://ailoot.ai/models/ru/microsoft-phi-4/index.md",
    "title": "Microsoft: Phi 4 — Ailoot",
    "url": "https://ailoot.ai/models/ru/microsoft-phi-4/"
  },
  "practicalHtml": "<h3>Практическая задача</h3><p>Технический пример на английском</p><pre><code>Check a proposed batch size\n\nA machine makes exactly 12 parts per batch. A supervisor proposes five batches to supply 67 parts and says there will be three spare. Check the proposal using whole batches only. Give the first incorrect claim, the minimum sufficient batch count and the resulting spare-part count. Show the arithmetic briefly.</code></pre><h4>Ожидаемый результат</h4><pre><code>A concise numerical check identifying the failing claim, sufficient batches and surplus.</code></pre><h4>Проверка результата</h4><pre><code>The calculation must use whole batches and meet the 67-part requirement.</code></pre>",
  "practicalText": "Практическая задача Технический пример на английском Check a proposed batch size A machine makes exactly 12 parts per batch. A supervisor proposes five batches to supply 67 parts and says there will be three spare. Check the proposal using whole batches only. Give the first incorrect claim, the minimum sufficient batch count and the resulting spare-part count. Show the arithmetic briefly. Ожидаемый результат A concise numerical check identifying the failing claim, sufficient batches and surplus. Проверка результата The calculation must use whole batches and meet the 67-part requirement.",
  "rawModel": {
    "about": "Phi-4 — плотный трансформер Microsoft Research только с декодером на 14 млрд параметров для генерации текста. Разработка сосредоточена на качественных обучающих материалах и развитых рассуждениях в относительно компактной модели. Она принимает текст, лучше всего подходит для запросов в диалоговом формате и генерирует текстовый ответ, объяснение или код. Конкретная редакция Phi-4 отличается от более поздних выпусков reasoning, mini и мультимодальных моделей.\n\n### Обучение и назначение\n\nПроизводитель сочетает отфильтрованные по качеству публичные документы и код, новые синтетические учебные данные, приобретённые академические книги и наборы вопросов и ответов. Синтетические материалы обучают математике, программированию, рассуждениям на основе здравого смысла и общим знаниям. Дообучение с учителем и прямая оптимизация предпочтений затем улучшают соблюдение инструкций и поведение ответов.\n\nРазработчик позиционирует Phi-4 как компонент приложений с ограничениями памяти или вычислений, потребностью в интерактивном отклике и задачами рассуждения или логики, преимущественно на английском. Передавайте полное условие и исходные сведения для ответа. Для математической задачи определите переменные, ограничения области и форму результата; для объяснения укажите аудиторию и понятия, которые нужно связать.\n\n### Рассуждение по ясной задаче\n\nПолезное задание: «Сравни эти условия, определи, выполняет ли предложенное решение каждое из них, и объясни первое нарушение. Укажи недостающую информацию до формулирования вывода». Для вопроса по источникам пометьте фрагменты и запросите вывод, подтверждаемый каждым. Просите сохранять имена, единицы и предположения, влияющие на результат.\n\nДаже длинный запрос должен иметь одну ясную цель. Опубликованный контекст составляет 16K токенов и включает инструкции, исходный текст, диалог и генерируемый ответ вместе. Сохраняйте нужные свидетельства во входе и оставляйте место для итогового объяснения. Пример бюджета генерации в карточке иллюстративен и не устанавливает отдельную универсальную максимальную длину ответа.\n\n### Помощь с кодом\n\nPhi-4 может предложить код, объяснить функцию или разобрать входные данные, вызывающие сбой. Передайте реализацию, ожидаемое поведение и характерный случай, отличающий правильный результат. Запросите код отдельно от объяснения и укажите интерфейсы, которые должны остаться неизменными.\n\nПроизводитель отмечает, что большая часть обучения коду основана на Python, особенно распространённых пакетах стандартной библиотеки. Другие пакеты или языки программирования требуют внимательной проверки API. Сгенерированная функция или скрипт не становятся выполненными лишь потому, что выглядят законченными; запустите их в целевой среде и используйте реальные ошибки или наблюдения для правки результата.\n\n### Формат диалога и язык\n\nПредставление запроса разработчика разделяет сообщения system, user и assistant. Системная инструкция может задавать роль или стиль ответа, а пользовательское сообщение содержит фактическую задачу. Сохраняйте формат конкретной модели, не копируя более поздний шаблон Phi и не предполагая вход изображений или вызовы инструментов другой редакции.\n\nPhi-4 обучена преимущественно на английском и не предназначена как многоязычная модель. Качество на других языках и менее представленных разновидностях английского может быть ниже. Передавайте точные написания технических названий и оценивайте ответ на нужном задаче языке, не считая небольшую многоязычную долю обучающих данных широкой языковой поддержкой.\n\n### Границы надёжности\n\nСрок отсечения публичных обучающих данных — июнь 2024 года и ранее. Для актуальных или чувствительных к источнику утверждений предоставляйте авторитетные материалы в запросе. Microsoft также отмечает возможность неточного, устаревшего или предвзятого вывода несмотря на выравнивание. Проверяйте итоговый ответ по условиям задачи и источникам. Полезный результат — текстовое решение, объяснение или предложение кода с ясными допущениями и подтверждающими сведениями.",
    "alias_of": null,
    "aliases": [],
    "author": "Microsoft",
    "available": null,
    "canonical_model": "microsoft/phi-4",
    "capabilities": {
      "context_length": 16384,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "text"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000014",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00028000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000028",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ],
        "summary": "Полная информация о ценах конфигурации — в подробностях."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "chat",
      "messages"
    ],
    "id": "microsoft/phi-4",
    "input": [
      "text"
    ],
    "kind": "text",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every choice and its content/tool calls/reasoning. In SSE assemble deltas by choice/tool index, retain the final finish reason and usage.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Неверные обязательные поля, представление материалов или значение параметра",
                "http_status": 400,
                "recovery": "Исправьте указанные поля перед новым запросом на создание.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [
              "Model context is not an output cap.",
              "A model-dependent field needs the exact published model profile; unspecified defaults/enums are not guessed.",
              "Tool calls propose actions; the client application returns actual observations with the returned call ID.",
              "Guarded canonical keys must occur once; duplicate or case-varied model/tools/cap fields are rejected."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/chat/completions"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Сохраняйте ID запросов и ответов, а также заголовки. Общий URL получения текстового задания не предоставлен."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "messages[].content",
                "required_material": "Текст UTF8"
              }
            ],
            "operation_modes": [
              "conversation",
              "function_tool_continuation",
              "streaming"
            ],
            "outputs": {
              "all_results": "Сохраняйте каждый вариант ответа с его содержимым, вызовами инструментов и рассуждениями. В SSE собирайте изменения по индексам варианта и инструмента, сохраняйте итоговую причину завершения и данные использования.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "choices[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "choices[].message.content",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "choices[].message.tool_calls",
                  "type": "tool_call[]"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_content",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_details",
                  "type": "object|array"
                },
                {
                  "description": null,
                  "name": "choices[].finish_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json или SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "microsoft/phi-4"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "model_dependent",
                "conditions": "Эти роли явно представлены типами совместимости исходного кода; точный набор ролей зависит от модели.",
                "default": null,
                "default_known": false,
                "enum": [
                  "system",
                  "user",
                  "assistant",
                  "tool",
                  "function"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": false,
                "type": "string|content_part[]|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_calls",
                "required": false,
                "type": "tool_call[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_call_id",
                "required": false,
                "type": "string",
                "when": "role=tool; используйте фактически возвращённый ID"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].name",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_content",
                "required": false,
                "type": "string",
                "when": "Передавайте обратно фактически возвращённые рассуждения, если эта модель их использует"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_details",
                "required": false,
                "type": "object|array"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_completion_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stream_options.include_usage",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "temperature",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "top_p",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stop",
                "required": false,
                "type": "string|string[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "required": false,
                "type": "function_tool[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": [
                  "function"
                ],
                "enum_known": true,
                "name": "tools[].type",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.name",
                "required": true,
                "type": "string",
                "when": "передан инструмент-функция"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.description",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.parameters",
                "required": false,
                "type": "JSON_schema"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tool_choice",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "parallel_tool_calls",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "response_format",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning_effort",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_compatibility",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "instructions",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "functions",
                "required": false,
                "type": "function[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "function_call",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "prompt_cache_options",
                "required": false,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "text"
                ],
                "enum_known": true,
                "name": "modalities",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options отклоняется на этом текстовом маршруте Ultra",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object"
              },
              {
                "availability": "source_interface",
                "conditions": "1h отклоняется в фактических местах настройки кэша запросов",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "cache_control.ttl",
                "required": false,
                "type": "string"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "additional models/models list",
              "plugins",
              "route",
              "hosted tools; ordinary client function tools remain separate",
              "non-text output modalities",
              "provider.options overrides",
              "one-hour prompt-cache TTL"
            ]
          },
          "hints": [
            "Отправляйте точный ID модели вместе с messages.",
            "Длина контекста не является пределом выхода.",
            "Текстовый файл может передавать буквальный текст; входные изображения, аудио и файловые объекты требуют точной привязки."
          ],
          "input": {
            "content_type": "application/json",
            "control_scope": "зависит от модели; пользовательские инструменты-функции отличаются от инструментов, выполняемых на стороне сервиса",
            "file_material": "фактический документ UTF-8 вставляется как буквальный текст; ID файла не выводится из него",
            "hosted_operations": false,
            "material_types": [
              "text"
            ],
            "messages": "массив сообщений со структурой role/content",
            "multimodal_input_binding": null,
            "optional_controls": [
              "stream",
              "temperature",
              "top_p",
              "stop",
              "max_tokens",
              "max_completion_tokens",
              "reasoning",
              "response_format",
              "tools",
              "tool_choice"
            ],
            "output_modalities": [
              "text"
            ],
            "required": [
              "model",
              "messages"
            ]
          },
          "lifecycle": {
            "mode": "synchronous_or_streamed",
            "unknown": "preserve original request id; no generic chat job retrieval path"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/chat/completions"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_chat"
          ],
          "output": {
            "content": "choices[].message.content or stream delta",
            "family": "text",
            "format": "json or supported SSE",
            "tool_calls": "retain actual returned function calls"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Базовые ставки за токены",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Уровень 1 по длине запроса",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"microsoft/phi-4\", \"messages\": [{\"role\": \"user\", \"content\": \"Explain the difference between an observation and a hypothesis in three sentences.\"}]}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"result.json\").read_text())\nfor x in r.get(\"choices\",[]):\n    if x.get(\"message\",{}).get(\"content\"): print(x[\"message\"][\"content\"])\nPY_RESULT\n",
            "label": "curl · retained exact creation",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.chat.completions.create(model='microsoft/phi-4',messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}])\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nsave_result(result.to_dict(mode=\"json\"))\n",
            "label": "Python SDK · all choices",
            "language": "python"
          },
          {
            "code": "from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nwith client.chat.completions.stream(model='microsoft/phi-4',messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}]) as stream:\n    with Path(\"stream-events.jsonl\").open(\"w\",encoding=\"utf-8\") as log:\n        for event in stream:\n            payload=event.to_dict(mode=\"json\")\n            log.write(json.dumps(payload,ensure_ascii=False)+\"\\n\"); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=\"json\"),\"stream-result\")\n",
            "label": "Python SDK streaming · all events",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": 1,
        "flex_multiplier": 1,
        "fmt": "chat",
        "hints": [
          "Send exact model ID with messages.",
          "Context length is not an output cap.",
          "A text file may supply literal text; image/audio/file-object inputs need exact binding."
        ],
        "http": "POST",
        "in": 0.14,
        "input": [
          "text"
        ],
        "label": "Чат OpenAI",
        "max_out": null,
        "max_reasoning_effort_multiplier": 1,
        "method_aliases": [],
        "out": 0.28,
        "output": [
          "text"
        ],
        "path": "/v1/chat/completions",
        "price_conditions": [
          {
            "label": "Быстрый режим",
            "value": "Стандартный тариф",
            "when": "При выборе быстрого режима"
          },
          {
            "label": "Режим flex",
            "value": "Стандартный тариф",
            "when": "При выборе режима flex"
          },
          {
            "label": "Максимальная интенсивность рассуждений",
            "value": "Стандартный тариф",
            "when": "При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "microsoft/phi-4",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [
          {
            "cache_read": null,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.14,
            "input_multiplier": null,
            "interval_boundary": "min_exclusive_max_inclusive",
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "null_rate_policy": "unknown or inherited; never zero",
            "out": 0.28,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.00014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000014",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00028000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000028",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      },
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "headers": [
                "Authorization: Bearer",
                "x-api-key",
                "anthropic-version"
              ],
              "version_example": "2023-06-01"
            },
            "errors": [
              {
                "code": null,
                "condition": "Неверные обязательные поля, представление материалов или значение параметра",
                "http_status": 400,
                "recovery": "Исправьте указанные поля перед новым запросом на создание.",
                "type": "invalid_request_error"
              }
            ],
            "example_body": {
              "max_tokens": 128,
              "messages": [
                {
                  "content": "Summarize the incident report.",
                  "role": "user"
                }
              ],
              "model": "microsoft/phi-4",
              "stream": false
            },
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/messages"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Сохраняйте ID запросов и ответов, а также заголовки. Общий URL получения текстового задания не предоставлен."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "строка messages[].content",
                "required_material": "Текст UTF-8"
              }
            ],
            "operation_modes": [
              "synchronous_json",
              "streamed_SSE"
            ],
            "outputs": {
              "all_results": "Сохраняйте все блоки содержимого, подписи рассуждений и фактические ID обращений к инструментам. Собирайте все изменения блоков SSE; первый текстовый блок не является полным выходом.",
              "family": "protocol",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "content[]",
                  "type": "text|thinking|tool_use|other content block"
                },
                {
                  "description": null,
                  "name": "stop_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "JSON или SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "microsoft/phi-4"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "user",
                  "assistant"
                ],
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "max_tokens",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              }
            ],
            "profile_binding": "Documented current stock Messages bridge; optional model capabilities are separate from this minimal text request.",
            "request_schema": {
              "additionalProperties": false,
              "properties": {
                "max_tokens": {
                  "minimum": 1,
                  "type": "integer"
                },
                "messages": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "content": {
                        "oneOf": [
                          {
                            "type": "string"
                          },
                          {
                            "items": {
                              "oneOf": [
                                {
                                  "properties": {
                                    "text": {
                                      "type": "string"
                                    },
                                    "type": {
                                      "const": "text"
                                    }
                                  },
                                  "required": [
                                    "type",
                                    "text"
                                  ],
                                  "type": "object"
                                },
                                {
                                  "properties": {
                                    "source": {
                                      "oneOf": [
                                        {
                                          "properties": {
                                            "type": {
                                              "const": "url"
                                            },
                                            "url": {
                                              "type": "string"
                                            }
                                          },
                                          "required": [
                                            "type",
                                            "url"
                                          ],
                                          "type": "object"
                                        },
                                        {
                                          "properties": {
                                            "data": {
                                              "type": "string"
                                            },
                                            "media_type": {
                                              "type": "string"
                                            },
                                            "type": {
                                              "const": "base64"
                                            }
                                          },
                                          "required": [
                                            "type",
                                            "media_type",
                                            "data"
                                          ],
                                          "type": "object"
                                        }
                                      ]
                                    },
                                    "type": {
                                      "const": "image"
                                    }
                                  },
                                  "required": [
                                    "type",
                                    "source"
                                  ],
                                  "type": "object"
                                }
                              ]
                            },
                            "type": "array"
                          }
                        ]
                      },
                      "role": {
                        "enum": [
                          "user",
                          "assistant"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "role",
                      "content"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "model": {
                  "enum": [
                    "microsoft/phi-4"
                  ],
                  "type": "string"
                },
                "stream": {
                  "default": false,
                  "type": "boolean"
                }
              },
              "required": [
                "model",
                "messages",
                "max_tokens"
              ],
              "type": "object"
            },
            "schema_template": {
              "max_tokens": 128,
              "messages": [
                {
                  "content": "Summarize the incident report.",
                  "role": "user"
                }
              ],
              "model": "microsoft/phi-4",
              "stream": false
            },
            "unsupported": [
              "No query API key.",
              "Hosted/server-side tools and model-specific optional controls are not part of this minimal family example."
            ]
          },
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": [
              "stream"
            ],
            "required": [
              "model",
              "messages",
              "max_tokens"
            ],
            "text_file_material": "Прочитайте фактический документ UTF-8 и поместите его текст в указанную строку входа или содержимого сообщения."
          },
          "lifecycle": {
            "create": {
              "http": "POST",
              "path": "/v1/messages"
            },
            "job_read": null,
            "mode": "synchronous_or_streamed",
            "unknown": "Keep request/response IDs and headers. No generic text job retrieval URL is supplied."
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/messages"
          },
          "output": {
            "all_results": "Keep all content blocks, thinking signatures and actual tool-use IDs. Assemble all SSE block deltas; a first text block is not the complete output.",
            "family": "protocol",
            "format": "JSON or SSE"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Базовые ставки за токены",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Уровень 1 по длине запроса",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "{\n  \"model\": \"microsoft/phi-4\",\n  \"max_tokens\": 128,\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"Summarize the incident report.\"\n    }\n  ],\n  \"stream\": false\n}",
            "label": "Complete minimal JSON body",
            "language": "json"
          },
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json, os\nfrom pathlib import Path\n\nsource_file = Path(os.environ['AILOOT_TEXT_FILE'])\nif not source_file.is_file():\n    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')\ntext = source_file.read_text(encoding='utf-8')\nif not text.strip():\n    raise SystemExit('Choose a document containing text')\npayload = {'model': 'microsoft/phi-4', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}\npayload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\\n\\n' + text\nPath('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \\\n  -H \"x-api-key: $AILOOT_API_KEY\" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\n\nresult = json.loads(Path('result.json').read_text(encoding='utf-8'))\nprint(json.dumps(result, ensure_ascii=False, indent=2))\nPY_RESULT\n",
            "label": "curl · use your UTF-8 document",
            "language": "bash"
          },
          {
            "code": "import json, os\nfrom pathlib import Path\n\nsource_file = Path(os.environ['AILOOT_TEXT_FILE'])\nif not source_file.is_file():\n    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')\ntext = source_file.read_text(encoding='utf-8')\nif not text.strip():\n    raise SystemExit('Choose a document containing text')\npayload = {'model': 'microsoft/phi-4', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}\npayload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\\n\\n' + text\nfrom urllib.request import Request, urlopen\nfrom urllib.error import HTTPError\n\napi_key = os.environ['AILOOT_API_KEY']\nif not api_key.strip():\n    raise SystemExit('Set AILOOT_API_KEY before making a request')\nheaders = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}\nheaders['x-api-key'] = api_key\nrequest = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')\ntry:\n    with urlopen(request, timeout=120) as response:\n        raw = response.read()\n        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')\nexcept HTTPError as error:\n    Path('result.json').write_bytes(error.read())\n    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')\n    raise\nPath('result.json').write_bytes(raw)\nimport json\nfrom pathlib import Path\n\nresult = json.loads(Path('result.json').read_text(encoding='utf-8'))\nprint(json.dumps(result, ensure_ascii=False, indent=2))\n",
            "label": "Python · save the complete result",
            "language": "python"
          }
        ],
        "family": "anthropic",
        "fast_multiplier": 1,
        "flex_multiplier": 1,
        "fmt": "messages",
        "http": "POST",
        "in": 0.14,
        "input": [
          "text"
        ],
        "label": "Сообщения Anthropic",
        "max_out": null,
        "max_reasoning_effort_multiplier": 1,
        "method_aliases": [],
        "out": 0.28,
        "output": [
          "json",
          "sse"
        ],
        "path": "/v1/messages",
        "price_conditions": [
          {
            "label": "Быстрый режим",
            "value": "Стандартный тариф",
            "when": "При выборе быстрого режима"
          },
          {
            "label": "Режим flex",
            "value": "Стандартный тариф",
            "when": "При выборе режима flex"
          },
          {
            "label": "Максимальная интенсивность рассуждений",
            "value": "Стандартный тариф",
            "when": "При максимальной интенсивности рассуждений с корректировкой по умолчанию (default)"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          },
          {
            "dimensions": {
              "max_context_tokens_inclusive": null,
              "min_context_tokens_exclusive": 0
            },
            "label": "Request-length tier 1",
            "units": [
              {
                "amount": "0.00014000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000014",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0.00028000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0.00000028",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "microsoft/phi-4",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [
          {
            "cache_read": null,
            "cache_read_multiplier": null,
            "cache_write": null,
            "cache_write_1h": null,
            "cache_write_multiplier": null,
            "created_at": "0001-01-01T00:00:00Z",
            "in": 0.14,
            "input_multiplier": null,
            "max": null,
            "max_tokens": null,
            "min": 0,
            "min_tokens": 0,
            "out": 0.28,
            "output_multiplier": null,
            "per_request_price": null,
            "sort_order": 0,
            "tier_label": "",
            "updated_at": "0001-01-01T00:00:00Z"
          }
        ],
        "units": [
          {
            "amount": "0.00014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000014",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00028000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000028",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "microsoft/phi-4",
        "request_model_id": "microsoft/phi-4",
        "route_label": "Ultra"
      }
    ],
    "name": "Microsoft: Phi 4",
    "price": {
      "in": 0.14,
      "in_label": null,
      "out": 0.28,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.14,
      "sort_out": 0.28,
      "varies": true
    },
    "pricing_profiles": [
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "OpenAI Chat · Base token rates",
        "units": [
          {
            "amount": "0.00014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000014",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00028000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000028",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      },
      {
        "dimensions": {
          "max_context_tokens_inclusive": null,
          "min_context_tokens_exclusive": 0
        },
        "label": "OpenAI Chat · Request-length tier 1",
        "units": [
          {
            "amount": "0.00014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000014",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00028000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000028",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      },
      {
        "dimensions": {
          "regime": "base"
        },
        "label": "Anthropic Messages · Base token rates",
        "units": [
          {
            "amount": "0.00014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000014",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00028000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000028",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      },
      {
        "dimensions": {
          "max_context_tokens_inclusive": null,
          "min_context_tokens_exclusive": 0
        },
        "label": "Anthropic Messages · Request-length tier 1",
        "units": [
          {
            "amount": "0.00014000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000014",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0.00028000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0.00000028",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "public_id": "microsoft/phi-4",
    "short": "Phi-4 — текстовая модель Microsoft Research на 14 млрд параметров для рассуждений на английском, математики и помощи с кодом. Она использует контекст 16K и диалоговый инструктивный формат, создавая объяснения и предложения кода по полному условию задачи и переданному тексту."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        },
        {
          "contract_json_pointer": "/methods/1/rawMethod/contract",
          "html_json_pointer": "/methods/1/html",
          "method_ordinal": 1
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod",
        "/methods/1/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Phi-4 — текстовая модель Microsoft Research на 14 млрд параметров для рассуждений на английском, математики и помощи с кодом. Она использует контекст 16K и диалоговый инструктивный формат, создавая объяснения и предложения кода по полному условию задачи и переданному тексту.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "f87f2d86e1f31e477bd44d5e767e67c31233a66a97a439b0de1fefa3fe23a551",
    "renderer_sha256": "aa692ffec412026bdeaf316df24a58e6c5083045e5246f6033f898d132afa5ff"
  },
  "sourceRevision": "a545c142d831b6c65cbd954a6125ac6f80e99c6fa74c4f15a54a488f30f25eb5"
}
