Обзор Claude Opus 5: стоит ли покупать новую модель от Anthropic?
Оливия Картер
Последнее обновление: 29 июля 2026 г.
Обзор Claude Opus 5: стоит ли покупать новую модель от Anthropic?
Проверено 28 июля 2026 года.
Краткий вывод: В этом обзоре модели Claude Opus 5 представлена привлекательная модель высокого класса для разработчиков, сложных бизнес-процессов и покупателей, которым требуется производительность, близкая к передовым показателям, без необходимости постоянно платить за модель Fable 5. Anthropic взимает плату в размере $5 за миллион входных токенов и $25 за миллион выходных токенов, при этом модель поддерживает контекстное окно объемом 1 миллион токенов и до 128 000 выходных токенов в синхронном интерфейсе Messages API. Однако она не является оптимальным выбором для простого чата, кратких резюме или большого количества запросов с низкой ценностью.
Самый весомый аргумент носит скорее практический, чем театральный характер: Opus 5 сочетает в себе широкие возможности для серьезного моделирования с более приемлемыми экономическими показателями по сравнению с топовым уровнем Anthropic. В ходе нашего единственного теста по отладке система обнаружила ошибку, связанную с точным совпадением префикса, предложила минимальный патч, добавила целенаправленный регрессионный тест и выдала команду проверки, которая прошла локально. Это полезное свидетельство для данной задачи — но не доказательство того, что модель справится с любой задачей по программированию.
Лучшее для: средства кодирования, анализ длинных контекстов, автоматизация бизнес-процессов и команды, чьи дорогостоящие провалы оправдывают применение модели с надбавкой. Не используйте эту функцию, если: Скорость и удельная стоимость имеют большее значение, чем качество последнего этапа рассуждений.
Claude Opus 5 — это топовая модель серии Anthropic для повседневного использования, предназначенная для сложного агентного кодирования и корпоративной работы. Компания Anthropic объявила об этом 24 июля 2026 года, охарактеризовав её как продуманную, проактивную и более эффективную, чем другие модели. Она заменила модель Claude Opus 4.8, стала моделью по умолчанию на Claude Max и стала самой мощной моделью, доступной на Claude Pro.
24 июля 2026 года компания Anthropic анонсировала модель Claude Opus 5 и сообщила, что она поступит в продажу в тот же день.
Рекламная концепция этого продукта необычна для релизов Opus: он позиционируется не только как модель с максимальным уровнем интеллекта. Разработчики Anthropic стремятся, чтобы его использовали ежедневно, с возможностью регулировки уровня загрузки и умеренными показателями задержки. Это упрощает его использование для долго работающих агентов и сложных производственных задач, в то время как более простые рабочие нагрузки по-прежнему можно направлять на более быструю и недорогую модель.
Доступ зависит от способа подключения. Конечные пользователи получают доступ к Opus 5 в рамках соответствующих тарифных планов Claude; разработчики могут вызывать его через API Claude и поддерживаемые облачные платформы. У GlobalGPT также есть отдельная страница продукта. Читатели, сравнивающие уровни подписки Anthropic, могут воспользоваться Сравнение тарифных планов Claude: «Free», «Pro» и «Max» прежде чем выбрать способ оплаты.
Claude Opus 5: Цена, API и основные технические характеристики
Официальный Цена на нефть марки Claude по API является $5 на миллион входных токенов и $25 на миллион выпущенных токенов. Это базовые тарифы API, а не стоимость потребительской подписки Claude или тарифного плана сторонней платформы. На кэширование промптов и пакетную обработку действуют отдельные тарифы, поэтому следует сравнивать полную структуру запросов, а не просто умножать указанную базовую цену.
Поле
Claude Opus 5
Что это означает
Идентификатор API Claude
claude-opus-5
Используйте именно это значение модели в официальных запросах к API Claude.
Базовая цена закупки
$5 / MTok
Стандартная скорость обработки токенов ввода до применения кэширования или пакетных скидок.
Базовая отгрузочная цена
$25 / MTok
Агенты с большим объемом вывода данных могут быстро стать дорогостоящими.
Окно контекста
1 млн токенов
Подходит для крупных репозиториев и коллекций документов при условии соблюдения требований к качеству запросов и стратегии поиска.
Максимальная мощность
128K токенов
Данное ограничение относится к синхронному API «Сообщения»; для пакетной отправки сообщений предусмотрена отдельная бета-версия, поддерживающая объём до 300K.
Пороговое значение достоверности знаний
Май 2026 года
По современным стандартам это новинка, но она не заменяет поиск в реальном времени.
Сравнительная задержка
Умеренный
Это не самая быстрая модель Anthropic; задержка по-прежнему зависит от прилагаемых усилий, используемых инструментов и рабочей нагрузки.
Платформа Claude определяет claude-opus-5 в качестве текущего идентификатора API и псевдонима Opus 5.На платформе Claude модель Opus 5 указана со скоростью $5/$25 на миллион входных/выходных токенов, с контекстным окном длиной 1 млн токенов, максимальным выходом 128 тыс. токенов и датой окончания обработки данных — май 2026 года.Платформа Claude поддерживает контекстное окно длиной 1 млн, максимальный объем вывода 128 тыс. и даты отсечения в мае 2026 года.
Что касается доступа потребителей, Anthropic в списке Claude Pro по тарифу $20 (ежемесячно) или $17 в месяц, если тариф $200 выставляется ежегодно; тариф Claude Max начинается с $100 в месяц. В Anthropic указано, что Opus 5 является наиболее мощной моделью в тарифном плане «Pro» и моделью по умолчанию в тарифном плане «Max», однако лимиты тарифных планов и функции продукта не связаны с тарификацией использования API.
Если вам нужна более подробная разбивка затрат, то Планы Claude AI и руководство по ценам на API разделяет потребительские подписки, тарификацию API и ограничения на использование. Это различие имеет важное значение: “включено в тарифный план” не означает неограниченное количество вызовов API, а тариф API не указывает, какой объем доступа к потребительскому чату вы получаете.
Claude Opus 5 Результаты тестирования
Важное ограничение: приведенные ниже цифры — это тестовые результаты, опубликованные Anthropic, а не результаты независимых тестов, проведенных специально для данного обзора. Эти данные полезны для понимания того, на какие показатели производительности и стоимости рассчитан Anthropic, однако они не гарантируют таких же результатов при использовании ваших промптов, инструментов, репозитория или в условиях вашего бюджета на задержку.
Оценка
Опубликованное заявление компании Anthropic
Как это читать
Frontier-Bench v0.1
Opus 5 более чем вдвое превосходит Opus 4.8 при меньшей стоимости выполнения одной задачи.
Общий показатель эффективности агентов, а не универсальное двукратное улучшение.
CursorBench 3.2
При максимальной производительности Opus 5 уступает пиковому результату Fable 5 всего 0,51 TP40T, при этом затраты на выполнение одной задачи в два раза ниже.
Высокая экономическая эффективность кодирующего агента при проверенных параметрах нагрузки в рамках модели Anthropic.
Zapier AutomationBench
Примерно в 1,5 раза выше, чем у ближайшего конкурента, при той же стоимости за задачу.
Перспективный подход к сквозной автоматизации бизнес-процессов; при этом проектирование рабочих процессов по-прежнему играет важную роль.
OSWorld 2.0
Превосходит лучший результат Fable 5 при затратах, составляющих чуть более трети от его стоимости.
Показатели данного теста свидетельствуют о высокой эффективности использования компьютера.
По данным Anthropic, Opus 5 демонстрирует результат, не уступающий пиковому показателю Fable 5 в тесте CursorBench 3.2 более чем на 0,5%, при этом затраты на выполнение одной задачи в два раза ниже.В отчетах Anthropic отмечается преимущество в 1,5 раза по показателю успешности прохождения тестов на платформе Zapier AutomationBench, а также преимущество по стоимости на OSWorld 2.0.
Уровень нагрузки является частью результата. Согласно Anthropic, в API Claude и коде Claude для Opus 5 по умолчанию установлен высокий уровень нагрузки, а в сравнительных тестах также используются настройки «high», «xhigh» или «max». Более высокий уровень нагрузки может повысить успешность выполнения сложных задач, одновременно увеличивая количество токенов, задержку или и то, и другое. Поэтому показатель затрат на задачу в тесте более информативен, чем просто цена за токен, — однако ни один из этих показателей не заменит тестирования на вашей собственной рабочей нагрузке.
Как мы тестировали Claude Opus 5
Мы выполнили одно компактное задание по отладке с выявлением первопричины на примере тестовой среды CommonJS, состоящей из трёх файлов. В задании требовалось, чтобы модель определила первопричину перед внесением изменений, предложила минимально возможный патч, добавила целенаправленный регрессионный тест, избежала посторонних изменений и предоставила точную команду для проверки.
Затем мы проверили этот патч самостоятельно, а не приняли ответ за правильный только потому, что он звучал убедительно. Команда local была следующей: node --test test/account-summary.test.cjs. До исправления набор тестов давал один успешный результат и один сбой. После применения патча, обеспечивающего точное равенство, он дал два успешных результата и ноль сбоев.
Этот метод позволяет получить полезную информацию об одном из этапов процесса отладки: диагностике, дисциплине внесения исправлений, качестве регрессионного тестирования и проверяемости. Он не оценивает общие лидерские качества в области программирования, долгосрочную надежность агентов, скорость или производительность при работе с различными языками программирования.
Claude Opus 5: обзор на основе практического опыта
Отладка по первопричинам: корректная, минимальная и поддающаяся проверке
В ходе нашего тестирования устройство Claude Opus 5 правильно определило местоположение неисправности в normalizedQuery.startsWith(account.id.toLowerCase()). С помощью запроса ACCT-10, проверка префикса дала совпадение acct-1 во-первых, так что Array.prototype.find вернул неверный аккаунт, не дойдя до точного идентификатора.
Предложенное исправление изменило сопоставление префиксов на точное равенство и добавило один случай регрессии для дополненного символами и смешанного регистра ACCT-10 входные данные. Он не переписал код, не имеющий отношения к делу. Такая сдержанность важна в реальных репозиториях, где чрезмерно широкая “очистка” может привести к тому, что на рецензирование уйдет больше времени, чем на устранение исходной ошибки.
Самой сильной частью был полный цикл: определить первопричину, объяснить, почему существующий тест её не выявил, внести минимальное изменение, добавить соответствующий регрессионный тест и указать команду для его проверки. Результат соответствует позиционированию Opus 5 как инструмента для автоматизации кодирования, но это всё же лишь один тестовый набор. Более подробное введение в рабочий процесс см. в Как использовать искусственный интеллект Клода для кодирования.
Полные задания по T1–T4, ответы и код для копирования
T1: Отладка с выявлением первопричин
Пройден — обнаружен дефект, связанный с сопоставлением префиксов, предложен минимальный патч и добавлен целевой регрессионный тест.
Определил, что причиной сбоя является несоответствие префикса; объяснил, почему прежний тест не выявил эту проблему; предложил провести регрессионное тестирование на точное равенство плюс один случай.
Посмотреть полный текст задания T1 и ответ
Полный текст подсказки
Вы занимаетесь отладкой специально упрощённого фикстура CommonJS. Работайте исключительно с тремя приведёнными ниже файлами и указанной процедурой воспроизведения.
Требования:
1. Перед тем как предлагать какие-либо изменения, укажите первопричину проблемы.
2. Предложите минимальный патч, исправляющий ошибку.
3. Добавьте один целенаправленный регрессионный тест, который проваливается до исправления и проходит после него.
4. Укажите точную команду проверки, которую необходимо запустить из корневого каталога фикстуры.
5. Не переписывайте несвязанный код. Не переименовывайте файлы, не добавляйте зависимости и не изменяйте публичный API.
6. Верните именно следующие разделы в указанном порядке: `ROOT CAUSE`, `PATCH`, `VERIFICATION`, `LIMITATIONS`.
7. В разделе `PATCH` предоставьте один унифицированный дифф в блоке `diff`, заключённом в фигурные скобки. В разделе `VERIFICATION` предоставьте одну команду в блоке `text`, заключённом в фигурные скобки.
Воспроизведение: `summarizeAccount(accounts, ' ACCT-10 ')` должна возвращать `{ id: 'acct-10', name: 'Nimbus', seats: 24 }`, но вместо этого она возвращает учетную запись `acct-1`.
Файл: `src/find-account.cjs`
```js
function findAccount(accounts, query) {
const normalizedQuery = query.trim().toLowerCase();
return accounts.find((account) =>
normalizedQuery.startsWith(account.id.toLowerCase()),
);
}
module.exports = { findAccount };
```
Файл: `src/account-summary.cjs`
```js
const { findAccount } = require('./find-account.cjs');
function summarizeAccount(accounts, requestedId) {
const account = findAccount(accounts, requestedId);
if (!account) return null;
return { id: account.id, name: account.name, seats: account.seats };
}
module.exports = { summarizeAccount };
```
Файл: `test/account-summary.test.cjs`
```js
const test = require('node:test');
const assert = require('node:assert/strict');
const { summarizeAccount } = require('../src/account-summary.cjs');
const accounts = [
{ id: 'acct-1', name: 'Atlas', seats: 5 },
{ id: 'acct-10', name: 'Nimbus', seats: 24 },
];
test('обобщает учетную запись по точному ID', () => {
assert.deepEqual(summarizeAccount(accounts, 'acct-1'), {
id: 'acct-1',
name: 'Atlas',
seats: 5,
});
});
```
Claude Opus 5
ОСНОВНАЯ ПРИЧИНА
findAccount выполняет поиск по префиксу, а не по полному совпадению:
Метод `Array.prototype.find` возвращает первый элемент, удовлетворяющий условию. Для ‘ACCT-10‘ нормализованный запрос выглядит как ‘acct-10’, а ID первого счёта ‘acct-1’ является его префиксом, поэтому startsWith возвращает true, и acct-1 прерывает поиск до того, как acct-10 будет проверен. Нормализация с помощью trim().toLowerCase() выполнена правильно — проблема не в пробелах и не в регистре символов. Функция summarizeAccount является проходной и не является причиной ошибки. Существующий тест не может обнаружить эту ошибку: ‘acct-1’ является префиксом самого себя и одновременно первым элементом, поэтому для данного входного значения префиксный поиск и точный поиск неотличимы.
ИСПРАВЛЕНИЕ
diff
1--- a/src/find-account.cjs2+++ b/src/find-account.cjs3@@ -1,8 +1,8 @@4 function findAccount(accounts, query) {5 const normalizedQuery = query.trim().toLowerCase();6- return accounts.find((account) =>7- normalizedQuery.startsWith(account.id.toLowerCase()),8- );9+ return accounts.find(10+ (account) => account.id.toLowerCase() === normalizedQuery,11+ );12 }1314 module.exports = { findAccount };15--- a/test/account-summary.test.cjs16+++ b/test/account-summary.test.cjs17@@ -14,3 +14,11 @@18 test('summarizes an exact account ID', () => {19 seats: 5,20 });21 });22+23+test('matches the full ID rather than a prefix, with padding and mixed case', () => {24+ assert.deepEqual(summarizeAccount(accounts, ' ACCT-10 '), {25+ id: 'acct-10',26+ name: 'Nimbus',27+ seats: 24,28+ });29+});
До исправления новый тест завершался с ошибкой при работе с объектом acct-1 / Atlas / 5; после исправления он проходит успешно.
ПРОВЕРКА
текст
1node --test test/account-summary.test.cjs
node --test test/account-summary.test.cjs
ОГРАНИЧЕНИЯ
• Объем изменений: изменен один оператор. Переименований нет, новых зависимостей нет, а сигнатуры и типы возвращаемых значений функций `findAccount` и `summarizeAccount` остались без изменений. • Существующее ранее поведение, которое осталось без изменений (не входит в сферу рассмотрения данной ошибки): • Если параметр `requestedId` не является строкой (null или число), при вызове метода `.trim()` по-прежнему возникает исключение. • Сами идентификаторы учетных записей не подвергаются обрезке, поэтому сохраненное значение ‘acct-10’ по-прежнему не будет совпадать — нормализации подвергается только запрос. • В коде используется простой метод toLowerCase(); без нормализации Юникода и сгибания с учетом локали. • При наличии дубликатов идентификаторов по-прежнему выбирается первое совпадение, а время поиска остается O(n). • Покрытие тестированием: данный регрессионный тест направлен исключительно на воспроизведение указанной ошибки. Путь, при котором ошибка не обнаруживается (нулевой), и некорректные входные данные остаются непроверенными.
ROOT CAUSE
findAccount matches by prefix, not by equality:
```js
normalizedQuery.startsWith(account.id.toLowerCase())
```
Array.prototype.find returns the first element satisfying the predicate. For ' ACCT-10 ' the normalized query is 'acct-10', and the first account's ID 'acct-1' is a prefix of it, so startsWith is true and acct-1 short-circuits the search before acct-10 is ever tested.
The trim().toLowerCase() normalization is correct — whitespace and casing are not the problem. summarizeAccount is a pass-through and is not at fault.
The existing test cannot catch this: 'acct-1' is a prefix of itself and is the first element, so prefix matching and exact matching are indistinguishable for that input.
PATCH
```diff
--- a/src/find-account.cjs
+++ b/src/find-account.cjs
@@ -1,8 +1,8 @@
function findAccount(accounts, query) {
const normalizedQuery = query.trim().toLowerCase();
- return accounts.find((account) =>
- normalizedQuery.startsWith(account.id.toLowerCase()),
- );
+ return accounts.find(
+ (account) => account.id.toLowerCase() === normalizedQuery,
+ );
}
module.exports = { findAccount };
--- a/test/account-summary.test.cjs
+++ b/test/account-summary.test.cjs
@@ -14,3 +14,11 @@
test('summarizes an exact account ID', () => {
seats: 5,
});
});
+
+test('matches the full ID rather than a prefix, with padding and mixed case', () => {
+ assert.deepEqual(summarizeAccount(accounts, ' ACCT-10 '), {
+ id: 'acct-10',
+ name: 'Nimbus',
+ seats: 24,
+ });
+});
```
Before the fix the new test fails with the acct-1 / Atlas / 5 object; after the fix it passes.
VERIFICATION
```text
node --test test/account-summary.test.cjs
```
LIMITATIONS
• Scope: one operator changed. No renames, no new dependencies, and findAccount / summarizeAccount signatures and return shapes are unchanged.
• Pre-existing behavior left alone (out of scope for this bug):
• A non-string requestedId (null, a number) still throws on .trim().
• Account IDs themselves are not trimmed, so a stored ' acct-10' still will not match — only the query is normalized.
• Casing uses plain toLowerCase(); no Unicode normalization or locale-aware folding.
• Duplicate IDs still resolve to the first match, and lookup remains O(n).
• Test coverage: the single regression test targets exactly the reported reproduction. The not-found (null) path and malformed input remain untested.
T2: Анализ состояния учетной записи
Частично — были рассчитаны основные показатели и определены приоритетные действия, но записанный ответ закончился без требуемого маркера «Recheck».
Рассчитан MRR с риском $34 800 (94,31%); инициирована эскалация E-505 и определен приоритет последующих действий; ответ завершен без запрошенного маркера повторной проверки.
Посмотреть полный текст задания T2 и ответ
Полный текст подсказки
Проанализируйте предоставленный файл `account-health.csv` как замкнутый набор данных. Не используйте внешние факты и не придумывайте отсутствующие значения.
Правила оценки риска (оценивайте каждое отдельно):
- `inactivity`: `days_since_login >= 30`
- `payment`: `failed_payments >= 2`
- `low_utilization`: `seats_used / seats_purchased = 80`, при этом аккаунт находится в зоне риска.
- `weak_health_without_risk`: `health_score = 9` и `open_tickets >= 3`.
Требования:
1. Рассчитать для каждого аккаунта сработавшие флаги риска и флаги противоречий.
2. Сформировать отчёт с итоговыми данными по аккаунтам, MRR, аккаунтам в зоне риска, MRR в зоне риска, аккаунтам, требующим эскалации, строкам с противоречиями, приобретённым лицензиям и используемым лицензиям.
3. Составить таблицу действий, содержащую ровно пять столбцов: `Учетная запись | Триггеры риска | Противоречия | Приоритет | Рекомендуемое действие`.
4. Разместить непосредственно рассчитанные значения под заголовком `Измеренные факты`, а субъективные оценки — под заголовком `Выводы`.
5. В разделе «Повторная проверка» приведите достаточное количество вычислений, чтобы можно было самостоятельно перепроверить каждую итоговую величину и каждый пороговый уровень, включая случай равенства 0,50.
6. Не исправляйте и не переосмысливайте правила без объяснения причин. Если сигнал кажется нелогичным, зафиксируйте его как противоречие, а не меняйте его классификацию.
`account-health.csv`:
```csv
account_id,account_name,plan,mrr_usd,days_since_login,failed_payments,seats_purchased,seats_used,health_score,nps,open_tickets
A-101,Aster,Enterprise,12000,45,0,100,82,92,9,1
B-202,Beacon,Pro,4200,4,2,20,18,70,7,0
C-303, Cinder, Pro, 3600, 12, 0, 20, 8, 65, 10, 4
D-404, Dahlia, Starter, 900, 5, 0, 5, 4, 42, 6, 0
E-505, Ember, Enterprise, 15000, 65, 3, 200, 70, 35, 3, 6
F-606, Fjord, Starter, 1200, 29, 1, 4, 2, 85, 9, 3
```
Claude Opus 5
Подтвержденные факты
Источник: account-health.csv, 6 строк, рассматриваются как закрытые. Значения не восстанавливались.
Оценка правил для каждого счета
Счет дней ≥ 30 неудач ≥ 2 util < 0,50 Количество рисков Статус A-101 «Астер» ✅ 45 ❌ 0 ❌ 0,82 1 находящиеся в группе риска B-202 «Бикон» ❌ 4 ✅ 2 ❌ 0,90 1 находящиеся в группе риска C-303 «Cinder» ❌ 12 ❌ 0 ✅ 0,40 1 находящиеся в группе риска D-404 «Далия» ❌ 5 ❌ 0 ❌ 0,80 0 не входящие в группу риска E-505 Ember ✅ 65 ✅ 3 ✅ 0,35 3 группа риска + эскалация F-606 «Фьорд» ❌ 29 ❌ 1 ❌ 0,50 0 не входящие в группу риска Флаги противоречий для каждого аккаунта Счет здоровье_при_риске слабое здоровье без риска промоутер_с_билетами A-101 «Астер» ✅ (92 ≥ 80, группа риска) ❌ ❌ (NPS 9 ✓, количество обращений 1 ✗) B-202 «Бикон» ❌ (70 < 80) ❌ (70 ≥ 50) ❌ (NPS 7) C-303 «Cinder» ❌ (65 < 80) ❌ (65 ≥ 50) ✅ (NPS 10, количество билетов 4) D-404 «Далия» ❌ ✅ (42 < 50, не входит в группу риска) ❌ (NPS 6) E-505 Ember ❌ (35 < 80) ❌ (35 < 50, но входит в группу риска) ❌ (NPS 3) F-606 «Фьорд» ❌ (85 ≥ 80, но не в группе риска) ❌ (85 ≥ 50) ✅ (NPS 9, количество обращений 3) Итоговые данные набора данных Метрическая система Ценность Счета 6 Общий MRR $36,900 Учетные записи, подверженные риску 4 (A-101, B-202, C-303, E-505) MRR, подверженный риску $34 800 (94,31% от общего числа) Перенести учетные записи на более высокий уровень 1 (E-505) Строки с противоречиями 4 (A-101, C-303, D-404, F-606) Флаги противоречий 4 (1 «здоровый_с_риском», 1 «больной_без_риска», 2 «промоутер_с_билетами») Приобретенные места 349 Использованные места 184 Вывод Приоритезация и рекомендуемые действия, приведенные ниже, основаны на субъективной оценке, а не на результатах применения правил. В моей системе ранжирования первоочередное значение придается статусу, затем — MRR, подверженному риску, а затем — сигналам о противоречиях. Счет Факторы, вызывающие риск Противоречия Приоритет Рекомендуемые действия E-505 Ember бездействие, оплата, низкая загрузка - P0 Все три правила срабатывают в отношении крупнейшего клиента ($15 000 MRR). Рассматривать как активный отток клиентов: восстановить способ оплаты, а затем провести экспертную оценку 130 неиспользуемых лицензий. A-101 «Астер» бездействие здоровье_при_риске P1 $: MRR составляет 12 000, при этом наблюдается 45-дневный период без активности, несмотря на оценку 92 и хороший показатель использования 82%. Прежде чем принимать меры на основании этой оценки, необходимо проверить, является ли перерыв в входе в систему результатом реального утраты интереса или же это артефакт отслеживания (SSO, использование только через API). C-303 «Cinder» низкая загрузка промоутер_с_билетами P1 Промоутер (nps 10) с 4 открытыми заявками при загрузке 40%. Нагрузка по заявкам, по всей видимости, является препятствием для внедрения; необходимо очистить очередь, а затем инициировать активацию мест. B-202 «Бикон» оплата - P2 Явный случай с одной причиной: 2 неудачных платежа, последний вход в систему 4 дня назад и использование кода 90%. Требуется только дополнительная работа по выставлению счетов, обращение в службу поддержки клиентов не требуется. F-606 «Фьорд» - промоутер_с_билетами P3 Показатели находятся в пределах всех допустимых значений (29 дней, 1 пропущенный платеж, коэффициент использования — ровно 0,50). Согласно правилам, риск отсутствует, но ещё один день простоя или ещё один пропущенный платеж могут изменить ситуацию. Следите за состоянием и устраните 3 заявки. D-404 «Далия» - слабое здоровье без риска P3 Результат — 42, при этом ни одно правило не сработало, а коэффициент использования 80% на MRR $900 составляет 80%. Либо
Измеренные данные
Источник: account-health.csv, 6 строк, рассматриваются как закрытые. Пропущенные значения не восстанавливались.
Оценка правил по каждому счету
Счет
дней ≥ 30
неудач ≥ 2
использование < 0,50
Количество рисков
Статус
A-101 Aster
✅ 45
❌ 0
❌ 0,82
1
в зоне риска
B-202 Beacon
❌ 4
✅ 2
❌ 0,90
1
в зоне риска
C-303 Cinder
❌ 12
❌ 0
✅ 0,40
1
в зоне риска
D-404 Dahlia
❌ 5
❌ 0
❌ 0,80
0
не в зоне риска
E-505 Ember
✅ 65
✅ 3
✅ 0,35
3
в зоне риска + эскалация
F-606 Fjord
❌ 29
❌ 1
❌ 0,50
0
без риска
Флаги противоречий по учетной записи
Учетная запись
хорошее_состояние_с_риском
плохое_состояние_без_риска
промоутер_с_нагрузкой_по_билетам
A-101 Aster
✅ (92 ≥ 80, подвержен риску)
❌
❌ (NPS 9 ✓, заявки 1 ✗)
B-202 Beacon
❌ (70 < 80)
❌ (70 ≥ 50)
❌ (NPS 7)
C-303 Cinder
❌ (65 < 80)
❌ (65 ≥ 50)
✅ (NPS 10, количество обращений 4)
D-404 Dahlia
❌
✅ (42 < 50, не подвержен риску)
❌ (nps 6)
E-505 Ember
❌ (35 < 80)
❌ (35 < 50, но подвержен риску)
❌ (NPS 3)
F-606 Fjord
❌ (85 ≥ 80, но не в группе риска)
❌ (85 ≥ 50)
✅ (NPS 9, количество тикетов 3)
Итоговые данные набора
Показатель
Значение
Учётные записи
6
Общий MRR
$36 900
Учётные записи, подверженные риску
4 (A-101, B-202, C-303, E-505)
MRR, подверженный риску
$34 800 (94,31% от общего объема)
Учетные записи для эскалации
1 (E-505)
Строки с противоречиями
4 (A-101, C-303, D-404, F-606)
Флаги противоречий
4 (1 strong_health_with_risk, 1 weak_health_without_risk, 2 promoter_with_ticket_load)
Приобретенные места
349
Использованные места
184
Вывод
Приоритетность и рекомендуемые действия, приведенные ниже, являются субъективными оценками, а не результатами применения правил. В моей системе ранжирования приоритет отдается сначала статусу эскалации, затем MRR в зоне риска, а затем сигналам противоречий.
Аккаунт
Триггеры риска
Противоречия
Приоритет
Рекомендуемое действие
E-505 Ember
бездействие, оплата, низкая_использоваемость
—
P0
Все три правила срабатывают на крупнейшем аккаунте ($15 000 MRR). Рассматривать как активный отток: восстановить способ оплаты, затем провести экспертную оценку 130 неиспользованных мест.
A-101 Aster
бездействие
стабильное состояние с риском
P1
$12 000 MRR с 45-дневным периодом без активности, несмотря на оценку 92 и хорошую загрузку 82%. Перед принятием мер на основании оценки проверьте, является ли перерыв в входах в систему реальным утратой интереса или артефактом отслеживания (SSO, использование только через API).
C-303 Cinder
low_utilization
promoter_with_ticket_load
P1
Промоутер (NPS 10) с 4 открытыми заявками при показателе использования 40%. Нагрузка заявками является вероятным препятствием для внедрения; очистите очередь, а затем стимулируйте активацию рабочего места.
B-202 Beacon
payment
—
P2
Ясный случай с одной причиной: 2 неудачных платежа при 4-дневной активности в системе и коэффициенте использования 90%. Требуется только последующая работа по выставлению счетов, действия службы поддержки не требуются.
F-606 Fjord
—
promoter_with_ticket_load
P3
Находится ровно на границе каждого показателя (29 дней, 1 неудачный платеж, коэффициент использования ровно 0,50). По правилам не находится в зоне риска, но ещё один день бездействия или ещё один неудачный платеж изменят ситуацию. Проследить за состоянием и закрыть 3 заявки.
D-404 Dahlia
—
weak_health_without_risk
P3
Оценка 42, ни одно правило не сработало, коэффициент использования 80% при MRR $900. Либо
T3: Создание адаптивного пользовательского интерфейса
Частично — была создана обширная автономная реализация и механизм самопроверки, при этом явно указывалось, что страница проверялась, а не отображалась во время выполнения.
Подготовил самостоятельный ответ объемом 21 907 символов; рассмотрел вопросы, касающиеся настольных устройств, мобильных устройств, переполнения и доступности; прямо указал, что макет был проверен, а не отображен во время выполнения.
Просмотреть полный текст задания T3 и ответ
Полный текст подсказки
Создайте отлаженный интерфейс сравнения товаров в виде одного исполняемого HTML-файла, используя исключительно приведенные ниже данные о товарах.
Требования:
1. Верните ровно один блок кода `html`, заключённый в теги, за которым следует раздел `SELF-CHECK`. Не разбивайте HTML, CSS или JavaScript на отдельные файлы.
2. Используйте только семантический HTML, встроенный CSS и встроенный "чистый" JavaScript: никаких внешних фреймворков, пакетов, шрифтов, изображений, сетевых запросов или этапов сборки.
3. Обеспечьте три вкладки, доступные с клавиатуры (`Overview`, `Pricing`, `Limits`), с правильной семантикой `tablist`, `tab` и `tabpanel`. Клавиши "Стрелка влево"/"Стрелка вправо" должны перемещать курсор по вкладкам и активировать их; клавиши "Home"/"End" должны переходить к первой/последней вкладке и активировать их. Фокус должен оставаться видимым.
4. Выбранная вкладка должна отображаться с помощью атрибутов `aria-selected`, `tabindex` и видимой панели; неактивные панели должны быть скрыты.
5. Целевой размер для настольных устройств: ширина 1440px. Целевой размер для мобильных устройств: ширина 390px без горизонтального переполнения страницы, без обрезанных элементов управления, с целями нажатия высотой не менее 44px и карточками сравнения, расположенными в один столбец.
6. Включите лаконичный заголовок, чёткую рекомендацию, три карточки продукта и одну компактную таблицу сравнения. Сохраняйте читаемый контраст и избегайте декоративных анимаций.
7. Используйте именно эти данные о продуктах и не добавляйте никаких заявлений:
- Atlas: `$19/месяц`, `20 проектов`, `10 ГБ`, `поддержка по электронной почте`, лучше всего подходит для индивидуальной работы.
- Beacon: `$49/месяц`, `Неограниченное количество проектов`, `100 ГБ`, `Приоритетная поддержка`, лучший вариант в целом для растущих команд.
- Cove: `$99/месяц`, `Неограниченное количество проектов`, `1 ТБ`, `Индивидуальная поддержка`, лучше всего подходит для деятельности в регулируемых отраслях.
8. Обозначьте Beacon заметной меткой `Лучший в целом`, не создавая впечатления, что остальные карточки отключены.
9. В разделе `SELF-CHECK` четко укажите результаты проверок семантических вкладок, поведения клавиатуры, макета 1440px, макета 390px, горизонтального переполнения и внешних зависимостей. Не утверждайте, что вы действительно отобразили область просмотра, если этого не было; проводите различие между проверкой кода и проверкой во время выполнения.
Фикстура продукта (также хранится как `fixtures/T3-responsive-ui/product-data.json`):
```json
{
"products": [
{"name":"Atlas","price":"$19/mo","projects":"20 projects","storage":"10 GB","support":"Поддержка по электронной почте","bestFor":"индивидуальная работа"},
{"name":"Beacon","price":"$49/месяц","projects":"Неограниченное количество проектов","storage":"100 ГБ","support":"Приоритетная поддержка","bestFor":"растущие команды","badge":"Лучший в целом"},
{"name":"Cove","price":"$99/месяц","projects":"Неограниченное количество проектов","storage":"1 ТБ","support":"Индивидуальная поддержка","bestFor":"регулируемая деятельность"}
]
}
```
Все приведенные ниже утверждения основаны исключительно на анализе кода. Я не запускал браузер, не отображал окно просмотра, не запускал программу чтения с экрана и не запускал обработчики событий клавиатуры, поэтому ничто из сказанного здесь не проверялось в условиях реального выполнения. Если какое-либо утверждение зависит от поведения механизма верстки, я об этом указываю. Семантические вкладки — проверены, согласованы Один элемент div[role="tablist"] с атрибутом aria-label="Виды сравнения планов" содержит три элемента button[type="button"][role="tab"]. Каждая вкладка имеет уникальный идентификатор и атрибут aria-controls, указывающий на секцию [role="tabpanel"]; каждая панель содержит атрибут aria-labelledby, указывающий обратно на свою вкладку. Я вручную проследил все три пары: tab-overview/panel-overview, tab-pricing/panel-pricing, tab-limits/panel-limits. Нет дубликатов идентификаторов, нет "висящих" ссылок. Панели используют атрибут tabindex="0", поэтому к телу панели можно перейти сразу после перехода на вкладку. Поведение клавиатуры — проверяется, но не выполняется Единственный слушатель события keydown в списке вкладок обрабатывает нажатия клавиш "Стрелка вправо", «Стрелка влево», «Home» и «End», вызывает event.preventDefault() только для этих четырёх клавиш, а в остальных случаях досрочно завершает работу. Клавиши со стрелками обеспечивают переход к следующему или предыдущему элементу. Поскольку метод `activate()` одновременно обновляет атрибуты `aria-selected`, `tabindex` и `hidden`, а также перемещает фокус, клавиши со стрелками и клавиши Home/End выполняют перемещение и активацию за один шаг, что соответствует требуемому шаблону автоматической активации. Переход с помощью клавиш Tab/Shift+Tab основан на переменном значении tabindex: ровно одна ячейка имеет tabindex="0", остальные — -1; эти значения поддерживаются функцией activate(). Видимость фокуса обеспечивается глобальным правилом :focus-visible с контуром 3px и смещением 2px; я не переопределял и не удалял никаких контуров по умолчанию. Я не проверял работу клавиш в реальном браузере. Отражение в выбранном состоянии — проверено Функция activate() устанавливает все три атрибута в одном цикле, поэтому значения aria-selected="true", tabindex="0" и отсутствие атрибута hidden не могут расходиться. Неактивные панели получают атрибут hidden, а [hidden] { display: none !important; } защищает от правил отображения, которые в противном случае могли бы нарушить его действие — эта защита важна, поскольку панели содержат дочерние элементы с display: grid. Функция activate(currentIndex(), false) запускается при загрузке, чтобы нормализовать состояние на основе разметки, не перехватывая фокус. Если JavaScript не запускается, разметка по умолчанию отображает панель «Обзор» в выбранном состоянии, а две другие панели — скрытыми, благодаря чему страница переходит в режим отображения одной читаемой панели. Макет 1440px — проверен, но не отображен .wrap имеет max-width: 1120px и margin: 0 auto, поэтому при ширине 1440px содержимое выравнивается по центру с промежутками примерно по 160px, а не растягивается. Карточки используют `grid-template-columns: repeat(3, minmax(0, 1fr))` с зазором 20px, что даёт три равных столбца; `align-items: start` не даёт карточкам растягиваться до общей высоты, в то время как `.card { height: 100% }` нейтрализуется этим. Использование minmax(0, 1fr) является намеренным — 1fralone может отказаться уменьшаться ниже ширины контента и растянуть сетку в ширину. Я не измерял фактический результат в пикселях. Макет 390px — проанализирован, но не отображен Блок с свойством `max-width: 720px` переключает сетку карточек в режим `minmax(0, 1fr)`, то есть в одностолбцовый режим, благодаря чему карточки располагаются одна над другой. Отступы уменьшаются до 16px с каждой стороны, оставляя ширину контента около 358px. Цели нажатия: каждый элемент [role="tab"] имеет min-height: 44px, и горизонтальное отступление уменьшается до 12px вместо уменьшения высоты, поэтому нижний предел в 44px сохраняется при узких ширинах. Список вкладок (tablist) получает значение flex-wrap: nowrap с overflow-x: auto и дочерними элементами с flex: 1 0 auto, поэтому три вкладки либо помещаются, либо прокручиваются внутри самого списка вкладок, вместо того чтобы обрезаться или переноситься в середине элемента управления. присутствует. Не проверено при фактическом размере окна просмотра 390px. Горизонтальный перелив — проверено, один намеренно локализованный свиток Свойство body { overflow-x: hidden } служит защитным механизмом, но я также старался не полагаться исключительно на него. Свойство * { box-sizing: border-box } позволяет удерживать отступы (padding) в пределах заданной ширины. В сравнительных таблицах для ячеек используется свойство white-space: nowrap, поэтому шестиколонная таблица "Обзор" на мобильных устройствах будет превышать 358px; это ограничивается с помощью .table-scroll { max-width: 100%; overflow-x: auto }, которое обеспечивает прокрутку области таблицы, а не всей страницы. Этот контейнер имеет атрибуты tabindex="0" и role="region" с меткой, чтобы пользователи, использующие клавиатуру, могли переходить к нему и прокручивать его. Дочерние элементы с Flex и Grid, которые в противном случае могли бы отказаться уменьшаться, обрабатываются с помощью minmax(0, 1fr) в сетке и flex-wrap: wrap в элементах .card-head и .recommendation. Единственный оставшийся риск, который я не могу исключить без рендеринга, — это длинная непрерывная строка в ячейке таблицы, но все тестовые значения короткие. Внешние зависимости — проверены, отсутствуют Нет <link>, <script src>, <img>, @import, url(), fetch, XMLHttpRequest, web font, or CDN reference. Fonts are a system-ui stack. The badge and featured border are CSS only, no icon assets. Everything is inline in one file, so it runs from file:// with no build step. Контраст и движение — проверено Основной текст #16191f на фоне #f6f7f9 и дополнительный текст #4a515c на белом фоне оба имеют соотношение яркости более 4,5:1; значок имеет цвет #10457e на белом фоне, а активная вкладка — #10457e на белом фоне. Я рассчитал эти значения по соотношению шестнадцатеричных значений, а не с помощью инструмента для измерения контрастности. Нигде нет переходов, анимации или преобразований; блок `prefers-reduced-motion` является скорее предохранительной мерой, не имеющей практического эффекта, чем исправлением существующего движения. Точность соответствия расписанию — проверено Каждый из трёх тарифных планов указан во всех трёх панелях, а также в таблице каждой панели. Я сверил все цены, количество проектов, объёмы хранения и уровни поддержки с файлом JSON: Atlas 19 / 20 𝑝 𝑟 𝑜 𝑗 𝑒 𝑐 𝑡 𝑠 / 10 𝐺 𝐵 / 𝐸 𝑚 𝑎 𝑖 𝑙 , 𝐵 𝑒 𝑎 𝑐 𝑜 𝑛 49/Безлимитный/100 ГБ/Приоритетный, Cove $99/Безлимитный/1 ТБ/Выделенный. Beacon имеет значок "Лучший в целом" и акцентную рамку шириной 2 пикселя; Atlas и Cove сохраняют текст с полной прозрачностью, обычные рамки и одинаковую стилизацию шрифта, поэтому они воспринимаются как доступные, а не как отключенные. Варианты «Лучший для» отображаются в виде коротких меток («Лучший для индивидуальной работы») — формулировка добавляется вокруг значения параметра, без новых заявлений о продукте. Известные пробелы Никакой проверки на этапе выполнения. Содержимое панелей дублируется во всех трёх панелях в виде статической разметки, а не рендерится из JSON, поэтому фикстура является «источником истины» благодаря транскрипции, а не привязке — любое изменение данных в будущем потребует редактирования в нескольких местах.
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Compare plans — Atlas, Beacon, Cove</title>
<style>
:root
{
--bg: #f6f7f9
;
--surface: #ffffff
;
--ink: #16191f
;
--ink-soft: #4a515c
;
--line: #d3d8df
;
--line-strong: #b6bdc7
;
--accent: #10457e
;
--accent-soft: #e8f0f9
;
--focus: #0b2f56
;
--radius: 10px
;
}
* {
box-sizing
: border-box; }
html { -webkit-text-size-adjust: 100%
; }
body
{
margin: 0
;
padding: 0
;
background: var
(--bg);
color: var
(--ink);
font-family: system-ui, -apple-system, "Segoe UI"
, Roboto, Helvetica, Arial, sans-serif;
font-size: 16px
;
line-height: 1.5
;
overflow-x
: hidden;
}
.wrap
{
width: 100%
;
max-width: 1120px
;
margin: 0
auto;
padding: 32px 24px 64px
;
}
/* ---------- Header ---------- */
.page-header { margin-bottom: 24px
; }
.page-header h1
{
margin: 0 0 8px
;
font-size: 1.75rem
;
line-height: 1.25
;
letter-spacing: -0.01em
;
}
.page-header p
{
margin: 0
;
max-width: 60ch
;
color: var
(--ink-soft);
}
/* ---------- Recommendation ---------- */
.recommendation
{
display
: flex;
flex-wrap
: wrap;
gap: 4px 10px
;
align-items
: baseline;
margin: 0 0 28px
;
padding: 14px 16px
;
background: var
(--accent-soft);
border: 1px solid #c2d5e8
;
border-left: 4px solid var
(--accent);
border-radius: var
(--radius);
}
.recommendation strong { color: var
(--accent); }
.recommendation span { color: #23405e
; }
/* ---------- Tabs ---------- */
.tabs
{
display
: flex;
flex-wrap
: wrap;
gap: 8px
;
margin: 0 0 20px
;
padding: 0
;
border-bottom: 1px solid var
(--line);
}
[role="tab"]
{
appearance
: none;
min-height: 44px
;
padding: 10px 18px
;
font
: inherit;
font-weight: 600
;
color: var
(--ink-soft);
background
: transparent;
border: 1px
solid transparent;
border-bottom: 3px
solid transparent;
border-radius: 8px 8px 0 0
;
cursor
: pointer;
}
[role="tab"]:hover { color: var(--ink); background: #eceff3
; }
[role="tab"][aria-selected="true"]
{
color: var
(--accent);
background: var
(--surface);
border-color: var(--line) var(--line) var
(--accent);
border-bottom-width: 3px
;
}
:focus-visible
{
outline: 3px solid var
(--focus);
outline-offset: 2px
;
}
[role="tabpanel"] { outline
: none; }
[role="tabpanel"]:focus-visible
{
outline: 3px solid var
(--focus);
outline-offset: 4px
;
border-radius: var
(--radius);
}
[hidden] { display: none !important
; }
.panel-intro
{
margin: 0 0 20px
;
max-width: 62ch
;
color: var
(--ink-soft);
}
/* ---------- Cards ---------- */
.card-grid
{
display
: grid;
grid-template-columns: repeat(3, minmax(0, 1
fr));
gap: 20px
;
margin: 0
;
padding: 0
;
list-style
: none;
align-items
: start;
}
.card
{
display
: flex;
flex-direction
: column;
height: 100%
;
padding: 20px
;
background: var
(--surface);
border: 1px solid var
(--line);
border-radius: var
(--radius);
}
.card.is-featured
{
border-color: var
(--accent);
border-width: 2px
;
padding: 19px
;
}
.card-head
{
display
: flex;
flex-wrap
: wrap;
gap: 8px
;
align-items
: center;
justify-content
: space-between;
margin-bottom: 4px
;
}
.card h3
{
margin: 0
;
font-size: 1.2rem
;
}
.badge
{
padding: 3px 10px
;
font-size: 0.75rem
;
font-weight: 700
;
letter-spacing: 0.02em
;
text-transform
: uppercase;
color: #ffffff
;
background: var
(--accent);
border-radius: 999px
;
white-space
: nowrap;
}
.price
{
margin: 8px 0 2px
;
font-size: 1.6rem
;
font-weight: 700
;
letter-spacing: -0.02em
;
}
.best-for
{
margin: 0 0 14px
;
font-size: 0.9375rem
;
color: var
(--ink-soft);
}
.spec-list
{
margin: 0
;
padding: 14px 0 0
;
border-top: 1px solid var
(--line);
font-size: 0.9375rem
;
}
.spec-list div
{
display
: flex;
gap: 12px
;
justify-content
: space-between;
padding: 5px 0
;
}
.spec-list dt { color: var
(--ink-soft); }
.spec-list dd
{
margin: 0
;
font-weight: 600
;
text-align
: right;
}
/* ---------- Table ---------- */
.table-section { margin-top: 36px
; }
.table-section h2
{
margin: 0 0 12px
;
font-size: 1.125rem
;
}
.table-scroll
{
max-width: 100%
;
overflow-x
: auto;
background: var
(--surface);
border: 1px solid var
(--line);
border-radius: var
(--radius);
}
table
{
width: 100%
;
border-collapse
: collapse;
font-size: 0.9375rem
;
}
caption
{
padding: 12px 14px
;
text-align
: left;
color: var
(--ink-soft);
font-size: 0.875rem
;
}
th, td
{
padding: 10px 14px
;
text-align
: left;
border-top: 1px solid var
(--line);
white-space
: nowrap;
}
thead th
{
background: #eef1f5
;
border-top
: none;
font-weight: 700
;
}
tbody th { font-weight: 600; color: var
(--ink-soft); }
th[scope="col"].is-featured { color: var
(--accent); }
/* ---------- Mobile ---------- */
@media (max-width: 720px
) {
.wrap { padding: 20px 16px 48px
; }
.page-header h1 { font-size: 1.4rem
; }
.tabs
{
gap: 4px
;
overflow-x
: auto;
-webkit-
overflow
-scrolling: touch;
flex-wrap
: nowrap;
}
[role="tab"]
{
flex: 1 0
auto;
padding: 10px 12px
;
font-size: 0.9375rem
;
}
.card-grid { grid-template-columns: minmax(0, 1
fr); }
th, td { padding: 10px 12px
; }
}
@media (prefers-reduced-motion
: reduce) {
* {
transition: none !important; animation: none !important
; }
}
</style>
</head>
<body>
<main class="wrap">
<header class="page-header">
<h1>Compare plans</h1>
<p>Three plans across projects, storage, and support. Pick a tab to focus on the details that matter to you.</p>
</header>
<p class="recommendation">
<strong>Recommended: Beacon</strong>
<span>Best overall for growing teams — $49/mo, unlimited projects, 100 GB, priority support.</span>
</p>
<div class="tabs" role="tablist" aria-label="Plan comparison views">
<button type="button" role="tab" id="tab-overview" aria-controls="panel-overview" aria-selected="true" tabindex="0">Overview</button>
<button type="button" role="tab" id="tab-pricing" aria-controls="panel-pricing" aria-selected="false" tabindex="-1">Pricing</button>
<button type="button" role="tab" id="tab-limits" aria-controls="panel-limits" aria-selected="false" tabindex="-1">Limits</button>
</div>
<!-- Overview -->
<section role="tabpanel" id="panel-overview" aria-labelledby="tab-overview" tabindex="0">
<p class="panel-intro">Every plan side by side, with the full set of published facts for each one.</p>
<ul class="card-grid">
<li class="card">
<div class="card-head"><h3>Atlas</h3></div>
<p class="price">$19/mo</p>
<p class="best-for">Best for solo work</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>20 projects</dd></div>
<div><dt>Storage</dt><dd>10 GB</dd></div>
<div><dt>Support</dt><dd>Email support</dd></div>
</dl>
</li>
<li class="card is-featured">
<div class="card-head">
<h3>Beacon</h3>
<span class="badge">Best overall</span>
</div>
<p class="price">$49/mo</p>
<p class="best-for">Best overall for growing teams</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>Unlimited projects</dd></div>
<div><dt>Storage</dt><dd>100 GB</dd></div>
<div><dt>Support</dt><dd>Priority support</dd></div>
</dl>
</li>
<li class="card">
<div class="card-head"><h3>Cove</h3></div>
<p class="price">$99/mo</p>
<p class="best-for">Best for regulated operations</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>Unlimited projects</dd></div>
<div><dt>Storage</dt><dd>1 TB</dd></div>
<div><dt>Support</dt><dd>Dedicated support</dd></div>
</dl>
</li>
</ul>
<section class="table-section">
<h2>All plans at a glance</h2>
<div class="table-scroll" tabindex="0" role="region" aria-label="Full plan comparison table, scrollable">
<table>
<caption>Published facts for Atlas, Beacon, and Cove.</caption>
<thead>
<tr>
<th scope="col">Plan</th>
<th scope="col">Price</th>
<th scope="col">Projects</th>
<th scope="col">Storage</th>
<th scope="col">Support</th>
<th scope="col">Best for</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Atlas</th>
<td>$19/mo</td><td>20 projects</td><td>10 GB</td><td>Email support</td><td>Solo work</td>
</tr>
<tr>
<th scope="row">Beacon</th>
<td>$49/mo</td><td>Unlimited projects</td><td>100 GB</td><td>Priority support</td><td>Growing teams</td>
</tr>
<tr>
<th scope="row">Cove</th>
<td>$99/mo</td><td>Unlimited projects</td><td>1 TB</td><td>Dedicated support</td><td>Regulated operations</td>
</tr>
</tbody>
</table>
</div>
</section>
</section>
<!-- Pricing -->
<section role="tabpanel" id="panel-pricing" aria-labelledby="tab-pricing" tabindex="0" hidden>
<p class="panel-intro">Monthly price and the audience each plan is built for.</p>
<ul class="card-grid">
<li class="card">
<div class="card-head"><h3>Atlas</h3></div>
<p class="price">$19/mo</p>
<p class="best-for">Best for solo work</p>
<dl class="spec-list">
<div><dt>Support</dt><dd>Email support</dd></div>
</dl>
</li>
<li class="card is-featured">
<div class="card-head">
<h3>Beacon</h3>
<span class="badge">Best overall</span>
</div>
<p class="price">$49/mo</p>
<p class="best-for">Best overall for growing teams</p>
<dl class="spec-list">
<div><dt>Support</dt><dd>Priority support</dd></div>
</dl>
</li>
<li class="card">
<div class="card-head"><h3>Cove</h3></div>
<p class="price">$99/mo</p>
<p class="best-for">Best for regulated operations</p>
<dl class="spec-list">
<div><dt>Support</dt><dd>Dedicated support</dd></div>
</dl>
</li>
</ul>
<section class="table-section">
<h2>Price and support</h2>
<div class="table-scroll" tabindex="0" role="region" aria-label="Pricing comparison table, scrollable">
<table>
<caption>Monthly price, support tier, and intended fit.</caption>
<thead>
<tr>
<th scope="col">Plan</th>
<th scope="col">Price</th>
<th scope="col">Support</th>
<th scope="col">Best for</th>
</tr>
</thead>
<tbody>
<tr><th scope="row">Atlas</th><td>$19/mo</td><td>Email support</td><td>Solo work</td></tr>
<tr><th scope="row">Beacon</th><td>$49/mo</td><td>Priority support</td><td>Growing teams</td></tr>
<tr><th scope="row">Cove</th><td>$99/mo</td><td>Dedicated support</td><td>Regulated operations</td></tr>
</tbody>
</table>
</div>
</section>
</section>
<!-- Limits -->
<section role="tabpanel" id="panel-limits" aria-labelledby="tab-limits" tabindex="0" hidden>
<p class="panel-intro">Project counts and storage allowances for each plan.</p>
<ul class="card-grid">
<li class="card">
<div class="card-head"><h3>Atlas</h3></div>
<p class="price">$19/mo</p>
<p class="best-for">Best for solo work</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>20 projects</dd></div>
<div><dt>Storage</dt><dd>10 GB</dd></div>
</dl>
</li>
<li class="card is-featured">
<div class="card-head">
<h3>Beacon</h3>
<span class="badge">Best overall</span>
</div>
<p class="price">$49/mo</p>
<p class="best-for">Best overall for growing teams</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>Unlimited projects</dd></div>
<div><dt>Storage</dt><dd>100 GB</dd></div>
</dl>
</li>
<li class="card">
<div class="card-head"><h3>Cove</h3></div>
<p class="price">$99/mo</p>
<p class="best-for">Best for regulated operations</p>
<dl class="spec-list">
<div><dt>Projects</dt><dd>Unlimited projects</dd></div>
<div><dt>Storage</dt><dd>1 TB</dd></div>
</dl>
</li>
</ul>
<section class="table-section">
<h2>Projects and storage</h2>
<div class="table-scroll" tabindex="0" role="region" aria-label="Limits comparison table, scrollable">
<table>
<caption>Project allowance and storage per plan.</caption>
<thead>
<tr>
<th scope="col">Plan</th>
<th scope="col">Projects</th>
<th scope="col">Storage</th>
</tr>
</thead>
<tbody>
<tr><th scope="row">Atlas</th><td>20 projects</td><td>10 GB</td></tr>
<tr><th scope="row">Beacon</th><td>Unlimited projects</td><td>100 GB</td></tr>
<tr><th scope="row">Cove</th><td>Unlimited projects</td><td>1 TB</td></tr>
</tbody>
</table>
</div>
</section>
</section>
</main>
<script>
(
function (
) {
'use strict'
;
var tablist = document.querySelector('[role="tablist"]'
);
if (!tablist) return
;
var tabs = Array.prototype.slice.call(tablist.querySelectorAll('[role="tab"]'
));
function panelFor(tab
) {
return document.getElementById(tab.getAttribute('aria-controls'
));
}
function activate(index, moveFocus
) {
if (index < 0 || index >= tabs.length) return
;
tabs.
forEach(function (tab, i
) {
var
selected = i === index;
var panel = panelFor
(tab);
tab.
setAttribute('aria-selected', selected ? 'true' : 'false'
);
tab.
setAttribute('tabindex', selected ? '0' : '-1'
);
if
(panel) {
if
(selected) {
panel.
removeAttribute('hidden'
);
}
else
{
panel.
setAttribute('hidden', ''
);
}
}
});
if (moveFocus !== false) tabs[index].focus
();
}
function currentIndex(
) {
var i = tabs.findIndex(function (tab
) {
return tab.getAttribute('aria-selected') === 'true'
;
});
return i === -1 ? 0
: i;
}
tabs.
forEach(function (tab, i
) {
tab.
addEventListener('click', function (
) {
activate
(i);
});
});
tablist.
addEventListener('keydown', function (event
) {
var last = tabs.length - 1
;
var i = currentIndex
();
var next = null
;
switch (event.key
) {
case 'ArrowRight'
:
next = i === last ?
0 : i + 1
;
break
;
case 'ArrowLeft'
:
next = i ===
0 ? last : i - 1
;
break
;
case 'Home'
:
next =
0
;
break
;
case 'End'
:
next = last;
break
;
default
:
return
;
}
event.
preventDefault
();
activate
(next);
});
// Normalize initial state from markup.
activate(currentIndex(), false
);
}());
</script>
</body>
</html>
```
SELF-CHECK
All statements below come from code inspection only. I did not open a browser, render a viewport, run a screen reader, or execute the keyboard handlers, so nothing here is runtime-verified. Where a claim depends on layout engine behavior, I say so.
Semantic tabs — inspected, consistent
One div[role="tablist"] with aria-label="Plan comparison views" holds three button[type="button"][role="tab"]. Each tab has a unique id and an aria-controls pointing at a section[role="tabpanel"]; each panel carries aria-labelledby pointing back at its tab. I traced all three pairs by hand: tab-overview/panel-overview, tab-pricing/panel-pricing, tab-limits/panel-limits. No duplicate IDs, no dangling references. Panels use tabindex="0" so the panel body is reachable after the tab.
Keyboard behavior — inspected, not executed
A single keydown listener on the tablist handles ArrowRight, ArrowLeft, Home, and End, calls event.preventDefault() for those four keys only, and returns early otherwise. Arrow keys wrap at both ends. Because activate() both updates aria-selected/tabindex/hidden and moves focus, arrow and Home/End keys move andactivate in one step, which is the automatic-activation pattern the requirement asks for. Tab/Shift+Tab traversal relies on roving tabindex: exactly one tab is tabindex="0", the rest -1, maintained by activate(). Focus visibility comes from a global :focus-visible rule with a 3px outline and 2px offset; I did not override or remove any default outline. I have not confirmed key handling in a real browser.
Selected-state reflection — inspected
activate() sets all three signals in the same loop, so aria-selected="true", tabindex="0", and the absence of hidden cannot drift apart. Inactive panels get the hidden attribute, and [hidden] { display: none !important; } guards against the display rules that would otherwise defeat it — that guard matters because the panels contain display: grid children. activate(currentIndex(), false) runs on load to normalize state from markup without stealing focus. If JavaScript does not run, the markup ships with Overview selected and the other two panels hidden, so the page degrades to one readable panel.
1440px layout — inspected, not rendered
.wrap is max-width: 1120px with margin: 0 auto, so at 1440px the content centers with roughly 160px gutters rather than stretching. Cards use grid-template-columns: repeat(3, minmax(0, 1fr)) with a 20px gap, giving three equal columns; align-items: start keeps cards from stretching to a shared height while .card { height: 100% } is neutralized by that. The minmax(0, 1fr) is deliberate — 1fralone can refuse to shrink below content width and push a grid wide. I did not measure actual pixel output.
390px layout — inspected, not rendered
The max-width: 720px block switches the card grid to minmax(0, 1fr), a single column, so cards stack. Padding drops to 16px per side, leaving about 358px of content width. Tap targets: every [role="tab"] has min-height: 44px, and horizontal padding shrinks to 12px rather than the height shrinking, so the 44px floor holds at narrow widths. The tablist becomes flex-wrap: nowrap with overflow-x: auto and flex: 1 0 auto children, so three tabs either fit or scroll within the tablist itself instead of being clipped or wrapped mid-control. <meta name="viewport" content="width=device-width, initial-scale=1"> is present. Not verified at an actual 390px viewport.
Horizontal overflow — inspected, one intentional contained scroll
body { overflow-x: hidden } is the backstop, but I also tried not to rely on it. * { box-sizing: border-box } keeps padding inside declared widths. The comparison tables use white-space: nowrap on cells, so the six-column Overview table will exceed 358px on mobile; that is contained by .table-scroll { max-width: 100%; overflow-x: auto }, which scrolls the table region rather than the page. That wrapper has tabindex="0" and role="region" with a label so keyboard users can reach and scroll it. Flex and grid children that could otherwise refuse to shrink are handled with minmax(0, 1fr) on the grid and flex-wrap: wrap on .card-head and .recommendation. The one remaining risk I cannot rule out without rendering is a long unbroken string in a table cell, but all fixture values are short.
External dependencies — inspected, none
No <link>, <script src>, <img>, @import, url(), fetch, XMLHttpRequest, web font, or CDN reference. Fonts are a system-ui stack. The badge and featured border are CSS only, no icon assets. Everything is inline in one file, so it runs from file:// with no build step.
Contrast and motion — inspected
Body text #16191f on #f6f7f9 and secondary #4a515c on white are both well clear of 4.5:1; the badge is white on #10457e, and the active tab is #10457e on white. I computed these by ratio estimate from the hex values, not with a contrast tool. There are no transitions, animations, or transforms anywhere; the prefers-reduced-motion block is a no-op safety net rather than a fix for existing motion.
Fixture fidelity — inspected
Each of the three plans appears in all three panels plus each panel's table. I cross-checked every price, project count, storage figure, and support tier against the JSON: Atlas
19
/
20
𝑝
𝑟
𝑜
𝑗
𝑒
𝑐
𝑡
𝑠
/
10
𝐺
𝐵
/
𝐸
𝑚
𝑎
𝑖
𝑙
,
𝐵
𝑒
𝑎
𝑐
𝑜
𝑛
49/Unlimited/100 GB/Priority, Cove $99/Unlimited/1 TB/Dedicated. Beacon carries the Best overall badge and a 2px accent border; Atlas and Cove keep full-opacity text, normal borders, and identical type treatment, so they read as available rather than disabled. The best for values are rendered as short labels ("Best for solo work") — wording added around the fixture value, no new product claims.
Known gaps
No runtime verification of any kind. Panel content is duplicated across the three panels as static markup rather than rendered from the JSON, so the fixture is the source of truth by transcription, not by binding — a future data change means editing several places.
T4: Самопроверка
Прошло — обнаружила ошибку, связанную с NaN в пустом массиве, в ходе собственной проверки, внесла одно исправление и подтвердила все предоставленные тестовые случаи.
В ходе собственной проверки обнаружен результат NaN при работе с пустым массивом; внесены изменения, чтобы возвращать N/A (проверено 0/0); после внесения изменений подтверждено, что все четыре предоставленных случая работают корректно.
Просмотреть полный текст задания T4 и ответ
Полный текст подсказки
Выполните данное задание с пронумерованными ограничениями, затем проверьте его и, при необходимости, отредактируйте только один раз.
Ограничения задания:
1. Напишите простую функцию на JavaScript с именем `summarizeChecks(checks)`; `checks` — массив булевых значений.
2. При непустом входе возвращайте ровно `% (/ passed)`, где `rate` имеет одно десятичное место и представляет собой процент значений, равных `true`. Пример: `[true, true, false, true]` возвращает `75.0% (3/4 passed)`.
3. Не изменяйте входные данные.
4. Не используйте `for`, `while`, `forEach`, `eval`, внешние библиотеки или вторую функцию.
5. Тело функции может содержать не более трёх операторов. Объявление с инициализатором считается одним оператором.
6. Присвойте функцию переменной `globalThis.summarizeChecks` после её объявления, чтобы её мог вызвать независимый тестовый набор.
Требуемый формат ответа:
- `ПЕРВЫЙ ОТВЕТ`: приведите исходное решение в одном блоке `js` с ограждающими символами до проведения проверки.
- `ПРОВЕРКА`: проверьте первый ответ на соответствие ограничениям 1–6 и следующему скрытому предельному случаю: при пустом входе должно возвращаться именно `N/A (0/0 passed)`. Укажите «пройден» или «не пройден» для каждого пункта.
- Если какой-либо пункт проверки не прошел, внесите исправления один раз. Не вносите исправления более одного раза.
- `FINAL ANSWER`: предоставьте окончательное решение в одном блоке `js`, заключённом в фигурные скобки. Сохраните все исходные ограничения, одновременно удовлетворяя крайнему случаю с пустым входом.
Используйте следующие тестовые случаи для независимой проверки:
```text
[] -> N/A (0/0 пройдено)
[true] -> 100.0% (1/1 пройдено)
[false] -> 0.0% (0/1 пройдено)
[true, true, false, true] -> 75.0% (3/4 пройдено)
```
# Ограничение Результат 1 Простая функция с именем summarizeChecks(checks) PASS — простое объявление, один параметр, без класса или оболочки со стрелкой. 2 Формат % (/ прошли), показатель с одним знаком после запятой PASS для непустого входного значения — функция toFixed(1) фиксирует количество знаков после запятой, а интервалы между символами точно соответствуют спецификации. 3 Отсутствие мутаций на входе PASS — .length и .filter являются параметрами только для чтения; метод filter возвращает новый массив. 4 Функции «no for», «while», «forEach», «eval», «library» или «second» PASS — .filter — это единственная итерация; Boolean — это встроенная переменная, используемая в качестве ссылки на предикат, а не функция, которую я определил. 5 В основной части текста может быть не более трёх утверждений PASS — ровно три: два инициализированных объявления плюс оператор return. 6 Присвоено globalThis.summarizeChecks после объявления PASS — присваивание следует за объявлением на верхнем уровне. Случаи независимой проверки: Вход Ожидаемое Фактический Результат [] Н/Д (0 из 0 прошли) NaN% (0/0 пройдено) НЕУДАЧА [true] 100,01 TP40T (1/1 — сдан) 100,01 TP40T (1/1 — сдан) PASS [false] 0,01 TP40T (пройден 0 из 1) 0,01 TP40T (пройден 0 из 1) PASS [true, true, false, true] 75,01 TP40T (пройден на 3/4) 75,01 TP40T (пройден на 3/4) PASS Один сбой. При передаче пустого входного значения / общее значение равно 0 / 0, что соответствует NaN; функция NaN.toFixed(1) возвращает строку "NaN", а не генерирует исключение, поэтому функция без предупреждения выдает NaN% (передано 0/0). Вносится одно изменение. Исправление остается внутри существующего оператора return в виде условного выражения, поэтому количество операторов не изменяется. Знак % перемещается внутрь непустой ветви, поскольку ожидаемый пустой вывод — N/A (прошло 0/0) — не содержит знака процента.
Подтверждение результатов после доработки по всем четырём случаям: [] → Н/Д (0/0 пройдено), [true] → 100,0% (1/1 пройдено), [false] → 0,0% (0/1 пройдено), [true, true, false, true] → 75,0% (3 из 4 прошли). Тело остаётся из трёх операторов, входные данные по-прежнему не изменены, и никаких запрещённых конструкций не было введено.
ПЕРВЫЙ ОТВЕТ
```js
function summarizeChecks(checks) {
const total = checks.length;
const passed = checks.filter(Boolean).length;
return `${((passed / total) * 100).toFixed(1)}% (${passed}/${total} passed)`;
}
globalThis.summarizeChecks = summarizeChecks;
```
АУДИТ
#
Ограничение
Результат
1
Обычная функция с именем summarizeChecks(checks)
ПРОЙДЕНО — обычное объявление, один параметр, без класса или стрелочной функции.
2
Формат % (/ passed), коэффициент с одним знаком после запятой
ПРОЙДЕНО при непустом входе — toFixed(1) фиксирует количество знаков после запятой, а интервалы между литералами точно соответствуют спецификации.
3
Отсутствие изменения входных данных
ПРОЙДЕНО — .length и .filter являются только для чтения; filter возвращает новый массив.
4
Отсутствие for, while, forEach, eval, библиотеки или второй функции
ПРОЙДЕНО — .filter является единственной итерацией, Boolean — встроенный тип, используемый в качестве ссылки на предикат, а не функция, которую я определил.
5
Не более трёх операторов в теле
ПРОЙДЕНО — ровно три: два объявления с инициализацией плюс оператор return.
6
Присвоение globalThis.summarizeChecks после объявления
ПРОЙДЕНО — присвоение следует за объявлением на верхнем уровне.
Независимые тестовые случаи:
Входные данные
Ожидаемое
Фактическое
Результат
[]
Н/Д (0/0 пройдено)
NaN% (0/0 пройдено)
НЕ ПРОЙДЕНО
[true]
100.0% (1/1 пройдено)
100.0% (1/1 пройдено)
ПРОЙДЕНО
[false]
0,0% (0/1 пройдено)
0,0% (0/1 пройдено)
ПРОЙДЕНО
[true, true, false, true]
75,0% (3/4 пройдено)
75,0% (3/4 пройдено)
ПРОЙДЕНО
Один сбой. При пустом входе пройдено / общее количество равно 0 / 0, что является NaN; NaN.toFixed(1) возвращает строку "NaN", а не генерирует исключение, поэтому функция незаметно выдает NaN% (0/0 пройдено).
Переделка один раз. Исправление остаётся внутри существующего возврата в виде условного выражения, поэтому количество операторов не меняется. Знак % перемещается внутрь ветви с непустым входом, так как ожидаемый пустой вывод — N/A (0/0 пройдено) без знака процента.
ОКОНЧАТЕЛЬНЫЙ ОТВЕТ
```js
function summarizeChecks(checks) {
const total = checks.length;
const passed = checks.filter(Boolean).length;
return `${total === 0 ? 'N/A' : `${((passed / total) * 100).toFixed(1)}%`} (${passed}/${total} passed)`;
}
globalThis.summarizeChecks = summarizeChecks;
```
Подтверждение результатов после доработки для всех четырёх случаев: [] → N/A (0/0 пройдено), [true] → 100,0% (1/1 пройдено), [false] → 0,0% (0/1 пройдено), [true, true, false, true] → 75,0% (3/4 пройдено). Тело кода по-прежнему состоит из трёх операторов, входные данные остались без изменений, и не было введено ни одной запрещённой конструкции.
Команды, выбирающие решения от разных поставщиков, должны по-прежнему проводить тестирование собственного репозитория, набора инструментов и объема работ по рецензированию. Более широкий Сравнение кодировок Claude и ChatGPT помогает рассмотреть эти компромиссы в более широком контексте, выходящем за рамки этого отдельного результата.
Claude Opus 5 против Opus 4.8 против Fable 5
Самый понятный способ представить себе Opus 5 — это как новую «рабочую лошадку» премиум-класса. Opus 4.8 является его предшественником; Fable 5 по-прежнему остается эталоном в этой области. В материалах, посвященных запуску Anthropic, говорится, что Opus 5 сохраняет ту же базовую стоимость, что и Opus 4.8, при этом по отдельным показателям приближается к Fable 5 при значительно более низкой стоимости выполнения одной задачи.
Модель
Должность
Соотношение «цена-качество»
Лучшая посадка
Claude Opus 5
Модель премиум-класса для повседневного использования; преемник модели Opus 4.8
$5/$25 на вход/выход MTok; убедительные результаты по стоимости задачи, опубликованные в рамках программы Anthropic
Сложное программирование, автоматизация и корпоративные проекты, где важна надежность
Клод Опус 4.8
Предыдущее поколение Opus
Согласно сравнительному обзору, опубликованному Anthropic, базовая стоимость такая же, как у Opus 5
Существующие закрепленные рабочие процессы, которые ещё требуют проверки на соответствие требованиям миграции
Клод Фэйбл 5
Уровень «Frontier-intelligence»
Контрольная точка; согласно Anthropic, Opus 5 демонстрирует близкие результаты в тесте CursorBench при вдвое меньшей стоимости выполнения одной задачи
Самые сложные задачи, когда максимальная эффективность важнее экономической выгоды
Выбирайте Opus 5 вместо Opus 4.8, если у вас есть возможность провести регрессионное тестирование миграции и вы хотите использовать более новую модель без повышения базовой ставки API. Выбирайте Fable 5, если ваша собственная оценка показывает, что его дополнительные возможности настолько существенно влияют на результат, что оправдывают более высокую стоимость. Чтобы ознакомиться с актуальной разбивкой по семействам, включающей также модель Sonnet 5, воспользуйтесь Сравнение моделей Claude Opus 5, Fable 5 и Sonnet 5.
Реакция разработчиков и представителей отрасли
Публикации в социальных сетях дают полезные подсказки о раннем использовании, но не являются объективными ориентирами. В официальном аккаунте Claude Opus 5 описывается как продуманный и проактивный продукт, близкий по своим характеристикам к передовым решениям Fable 5, но по цене в два раза ниже. Это позиционирование, выбранное самой компанией Anthropic при запуске, а не независимое подтверждение.
Claude представила модель Opus 5 на платформе X как продуманную и проактивную модель, по своим характеристикам близкую к интеллектуальной модели Fable 5, но по цене в два раза ниже.
Компания JetBrains сообщила, что, согласно результатам собственных оценок, 45%: более высокий показатель успешной сдачи экзамена по Python по сравнению с Opus 4.8, а также более глубокое понимание кодовой базы. Это конкретное и актуальное наблюдение со стороны компании, разрабатывающей инструменты для разработчиков, однако данный результат относится к оценке JetBrains и не следует распространять его на все тесты производительности Python или репозитории.
Компания JetBrains сообщает, что, по результатам проведенного ею тестирования, показатель успешности тестирования на Python был на 45% выше по сравнению с Opus 4.8, а также было отмечено более глубокое понимание кодовой базы.
Компания Harvey сообщила о значительном улучшении по сравнению с Opus 4.8 в плане качества и эффективности использования токенов в рамках юридических рабочих процессов, включая корпоративное управление и арбитраж. Это имеет важное значение для покупателей юридических технологий, однако речь идет об оценке компании Harvey своих рабочих процессов в конкретных сферах практики, а не о доказательстве универсальной юридической точности.
Компания Harvey сообщает об улучшении качества юридической работы и повышении эффективности токенов в рамках проекта Opus 5, в том числе в сферах корпоративного управления и арбитража.
В совокупности эти сообщения свидетельствуют о том, что первые пользователи отмечают улучшение понимания кодовой базы и эффективности работы с предметно-специфическими знаниями. Следующим ответственным шагом по-прежнему является проведение репрезентативного пилотного проекта с собственными приемочными тестами, бюджетом на токены и процессом проверки людьми.
Claude Opus 5 API: Идентификатор модели, пример и примечания по миграции
Официальный идентификатор модели API Claude и его псевдоним — это claude-opus-5. Ниже приведен минимальный Антропный API Пример запроса. В нём показана только официальная конечная точка Messages; он не описывает и не гарантирует реализацию бэкэнда GlobalGPT.
Измените значение модели на claude-opus-5, после чего повторно проведите собственные оценки регрессии и безопасности.
Установите ограничение на входные данные $5 и выходные данные $25 на MTok; отслеживайте циклы агентов с интенсивным выводом данных и повторные попытки инструментов.
Не следует сохранять устаревшие традиции thinking.type: "enabled" конфигурация. Руководство по мышлению от Anthropic сообщает, что работа над Opus 5 уже ведётся, и приводит информацию об адаптивных настройках.
Считайте 128K максимальным объемом вывода синхронного API сообщений. Отдельная бета-версия «Message Batches» может поддерживать до 300K при использовании задокументированного бета-заголовка Anthropic.
Ознакомьтесь с названиями моделей конкретных поставщиков и условиями доступа. Документы Anthropic anthropic.claude-opus-5 для Amazon Bedrock и claude-opus-5 для Google Cloud.
Для разработчиков, желающих использовать рабочий процесс с командной строкой наряду с Claude Code, практическое руководство по настройке находится по адресу Как использовать командную строку GlobalGPT в коде Claude. Используйте этот рабочий процесс отдельно от приведенного выше официального примера API Anthropic, чтобы обеспечить четкое разграничение учетных данных, биллинга и поведения провайдера.
Стоит ли покупать Claude Opus 5?
Да — когда цена неудачи высока, а задача действительно сложна. Opus 5 наиболее целесообразно использовать в тех случаях, когда более точная диагностика, применение инструментов или оценка на основе длинного контекста позволяют сэкономить время инженеров или аналитиков. Сочетание контекстного окна объемом 1 млн токенов, максимальной скорости синхронного вывода 128 тыс. и обнадеживающих заявлений о стоимости выполнения одной задачи обеспечивает ему позицию надежного «рабочего коня» премиум-класса.
Кому рекомендуется использовать Claude Opus 5?
Инженерные команды, запускающие агенты по кодированию для работы с большими репозиториями.
Операционные команды, занимающиеся автоматизацией многоэтапных бизнес-задач с измеримыми критериями приемки.
Юридические, финансовые или исследовательские группы, способные сочетать использование модели с экспертной оценкой в конкретной области и анализом оперативных источников.
Разработчики, способные контролировать затраты с помощью кэширования, пакетной обработки, маршрутизации и регрессионных тестов.
Кому стоит выбрать что-нибудь другое?
Приложения с большим объемом данных, в которых преобладают простые операции извлечения, классификации или переформулировки в краткую форму.
Продукты, чувствительные к задержкам, в которых умеренная модель работает слишком медленно.
Команды, у которых отсутствуют наборы данных для оценки, система контроля затрат или план проверки важных результатов силами специалистов.
Покупатели, которым нужен лишь эпизодический общий чат и которые не будут использовать дополнительные контекстные функции или возможности агентов.
Покупатели, занимающиеся разработкой программного обеспечения, также должны сравнить имеющиеся варианты, прежде чем стандартизировать рабочий процесс команды; Лучшие модели искусственного интеллекта для программирования в 2026 году позволяет рассмотреть соотношение возможностей и цены в более широком контексте.
Окончательный вердикт: Claude Opus 5 стоит опробовать для задач, связанных с жестким кодированием, автоматизацией и интеллектуальным трудом, где более высокая производительность может компенсировать более высокую стоимость токенов. Его официальные технические характеристики впечатляют, результаты тестирования Anthropic демонстрируют необычайно эффективное соотношение цены и производительности, а наши проверенные результаты отладки оказались точными и стабильными. Покупайте его для сложных задач с измеримыми результатами — а не потому, что для каждой задачи требуется модель класса Opus.
Claude Opus 5 — Часто задаваемые вопросы
Сколько стоит Claude Opus 5?
Официальная базовая цена API Claude составляет $5 за миллион входных токенов и $25 за миллион выходных токенов. Тарифные планы Claude для частных пользователей отличаются: тариф «Pro» стоит $20 в месяц или $17 в месяц при годовой оплате, а тариф «Max» начинается с $100 в месяц.
Как получить доступ к Claude Opus 5?
Согласно информации Anthropic, Opus 5 является моделью по умолчанию в версии Claude Max и самой мощной моделью в версии Claude Pro. Разработчики могут использовать API Claude, а среди поддерживаемых облачных маршрутов — Amazon Bedrock и Google Cloud с требованиями к доступу, специфичными для каждого провайдера.
Каков идентификатор модели API Claude Opus 5?
Официальный идентификатор модели API Claude и псевдоним — claude-opus-5. Используйте именно это значение в поле «model» при отправке запросов к API Anthropic Messages, а затем повторно выполните собственные регрессионные тесты и оценки безопасности перед переносом в производственную среду.
Каковы контекст и ограничения на вывод данных в режиме Claude Opus 5?
В синхронном API Messages у Claude Opus 5 контекстное окно составляет 1 миллион токенов, а максимальный объем выходных данных — 128 000 токенов. В документации по Anthropic отдельно указано, что для пакетов сообщений с заголовком «beta» максимальный объем выходных данных составляет до 300 000 токенов.
Прошли ли результаты тестирования Claude Opus 5 независимую проверку?
Приведенные здесь сравнительные данные были опубликованы компанией Anthropic и не были повторно собраны специально для данного обзора. Они отражают результаты тестирования Anthropic в плане соотношения производительности и стоимости, однако покупателям следует самостоятельно проверить качество, задержку, возможность использования инструментов и совокупную стоимость на основе своих собственных рабочих нагрузок.
Модель Claude Opus 5 лучше, чем Opus 4.8 или Fable 5?
Opus 5 — это новейшая версия, пришедшая на смену Opus 4.8 при той же базовой стоимости, что делает её естественным кандидатом для перехода после регрессионного тестирования. Fable 5 по-прежнему остаётся эталонным решением; выбирайте его только в том случае, если ваша оценка покажет, что его дополнительные возможности оправдывают более высокую стоимость.
Доступна ли версия Claude Opus 5 для GlobalGPT?
Да. У GlobalGPT есть специальная страница Claude Opus, состоящая из 5 страниц. Доступность может зависеть от статуса учетной записи и условий платформы, поэтому перед запуском срочного рабочего процесса необходимо подтвердить доступ и обеспечить отдельный доступ к платформе от официального биллинга по API Anthropic.
Кто должен оплатить Claude Opus 5?
Opus 5 лучше всего подходит для команд, выполняющих сложные задачи по программированию, автоматизации или интеллектуальной работе с длительным контекстом, где более качественный ответ может существенно сэкономить время сотрудников. Более простые, массовые или чувствительные к задержкам задачи обычно лучше поручать более дешевой и быстрой модели.
Создавайте видео для YouTube без лиц с помощью Faceless Studio — от идеи канала до финальной проверки качества. Узнайте о реальном рабочем процессе, стоимости кредитов и правилах монетизации.
Обзор Meshy V7: ознакомьтесь с результатами первых тестов преобразования изображений в 3D, результатами тестов «Smart Topology», выводами по очистке сетки, информацией о ценах, скорости, надёжности и стоимости маршрутизации на хостинге.
Higgsfield: «Смартфон высокого класса против фотоаппарата»: узнайте, что может улучшить искусственный интеллект, в чём по-прежнему превосходит аппаратное обеспечение фотоаппарата и как выбрать подходящий рабочий процесс, прежде чем тратить деньги.
Обзор версии DeepSeek V4.1 Flash, включающий официальные тесты производительности, цены на API, поддержку технологий Vision, ограничения, изменения в маршрутизации версии V4 Pro, открытые веса и маршруты доступа.