Мониторинг отзывов через OpenAI Agents API: еженедельный отчёт об отзывах с низкими оценками на пяти сайтах
Еженедельный агент для мониторинга отзывов через OpenAI Agents API: 21 реальный вызов по пяти сайтам с отзывами, $0,0069 в неделю на бренд за данные, конфигурация и ограничения.

1 ноября 2026 г. с 00:47 до 15:45 по сингапурскому времени (SGT) мы вызывали эндпоинты отзывов EveryInfra для Notion и ClickUp. В 19:22–19:23 SGT мы провели 4 повторных теста. Сайты: Trustpilot, G2, Capterra, App Store и Google Play. Еженедельная проверка одного бренда требует пяти вызовов и стоит $0,006945 за данные. Сложность в охвате, а не в цене. В Google Play 200 новейших отзывов о Notion охватывают всего 22 дня, а 20 отзывов о Notion с низкой оценкой на Trustpilot охватывают период с июня.
Основная статья расходов — токены модели. Плата за данные у нас взимается за каждый вызов, поэтому 200 записей стоят столько же, сколько 20. Но каждая дополнительная запись попадает в контекст модели.
При рекомендуемых нами лимитах недельный объём отзывов о Notion составляет около 421 КБ сырых данных, или около 105 тыс. токенов. В первом прогоне объём составил 652 КБ из-за кода страницы, о котором мы расскажем ниже. По ценам OpenAI на 1 ноября 2026 г. токены модели для такой недели обойдутся примерно от $0,03 до $2,9. Цены по прайс-листу у самой дешёвой и самой дорогой моделей различаются в 100 раз, поэтому итоговый счёт зависит от выбора модели.
Реальные вызовы выявили ещё две ловушки. Capterra не сортирует отзывы по дате. При раннем запуске 1 ноября у некоторых отзывов Capterra поле pros содержало около 100 000 символов кода страницы. Вечером того же дня шлюз стал удалять код страницы и ввёл ограничение в 5 000 символов на поле. Наша повторная проверка в 19:23 SGT вернула те же 86 отзывов, а самое длинное поле содержало 1 154 символа.
OpenAI открыла Agents API в статусе публичной беты 10 сентября 2026 г. Можно ли с его помощью запустить агента, который каждый понедельник активируется, запускает отдельного субагента для каждого сайта с отзывами и пишет короткий отчёт об отзывах с низкими оценками? Все названия полей, значения по умолчанию и лимиты OpenAI в статье взяты из документации OpenAI, которую мы скачали и проверили 1 ноября 2026 г. Мы не запускали агента в аккаунте OpenAI, поэтому часть про OpenAI — пример конфигурации. Все цифры EveryInfra взяты из сырых ответов реальных вызовов, включая вызовы, завершившиеся ошибкой.

Задача: еженедельный отчёт об отзывах с низкими оценками на пяти сайтах
Сначала определим задачу, потому что от неё зависят все цифры ниже. На вход подаётся список брендов. Для каждого бренда вы храните по одному идентификатору для каждого сайта. Trustpilot принимает домен компании, например notion.so. G2 принимает URL страницы отзывов или слаг, а Capterra — URL страницы продукта. App Store принимает числовой ID приложения, а Google Play — имя пакета.
На выходе один еженедельный отчёт. Для каждого бренда в нём есть раздел с новыми отзывами и отзывами с низкой оценкой по каждому сайту, а также с основными темами жалоб. В отчёте также перечислены проблемы, появившиеся с прошлой недели, со ссылками на исходные отзывы для службы поддержки.
Почему именно эти пять сайтов? Они охватывают две разные аудитории. На Trustpilot, G2 и Capterra покупатели читают отзывы перед покупкой ПО, поэтому среди читателей часто бывают лица, принимающие решения. В App Store и Google Play отзывы оставляют текущие пользователи, поэтому жалобы там конкретные и часто содержат номер версии.
В нашей предыдущей схеме мониторинга репутации на нескольких платформах объясняется, как фиксировать охват, прежде чем делать выводы о негативном тренде. Наш тест 30 компаний с Exa, G2 и Trustpilot показывает разовое сравнение конкурентов. В этой статье проверка превращается в агента, который работает каждую неделю без участия человека. Кроме того, на реальных данных мы проверяем, достаточно ли одного запуска в неделю.
Задача хорошо ложится на четыре функции Agents API. Пять сайтов не зависят друг от друга, поэтому работу с каждым из них можно поручить субагенту, который возвращает только сводку. Расписание реализуется через автоматизации, которые открывают сессии по cron-выражению в заданном часовом поясе. API-ключ можно хранить в хранилище секретов, чтобы он не попадал в инструкции. Источник данных — удалённый MCP-сервер, к которому Agents API может подключаться со стороны OpenAI без песочницы.
OpenAI Agents API в сравнении с Agents SDK
OpenAI выпустила Agents API в статусе публичной беты 10 сентября 2026 г. В анонсе сказано, что один вызов API с задачей, моделью, инструментами и окружением создаёт агента для продакшена. Агент использует тот же исполнительный цикл, что и Codex (анонс OpenAI; история изменений). Исполнительный цикл вызывает модель, запускает инструменты и управляет контекстом. На обзорной странице продукт разделён на четыре понятия: агент (Agent), окружение (Environment), сессия (Session), а также события и элементы (Events and items) (обзор Agents API). В анонсе также сказано, что отдельной платы за Agents API нет: вы платите за токены и инструменты, которые использует агент (анонс OpenAI).
Название легко спутать с Agents SDK. SDK — это фреймворк оркестрации с открытым исходным кодом, который OpenAI выпустила 11 марта 2025 г., а исполнительный цикл агента работает внутри вашего приложения (история изменений; openai-agents-python на GitHub). В руководстве OpenAI «Agents» есть сравнительная таблица. Таблица ниже составлена по материалам этой страницы (руководство «Agents», раздел «Compare agent runtime options»).
| Пункт | Agents API | Agents SDK | Responses API |
|---|---|---|---|
| Для чего | Долгие задачи, в которых OpenAI управляет агентом и сохраняет прогресс | Агенты с собственными инструментами и процессами в вашем приложении | Прямые вызовы модели или агент, собранный с нуля |
| Где работает агент | OpenAI управляет исполнительным циклом Codex | SDK работает внутри вашего приложения | В вашем приложении, по желанию с хостируемой оркестрацией |
| Трудоёмкость интеграции | Низкая | Средняя | Высокая |
| Состояние между задачами | Конфигурация сессии, ходы диалога и элементы сохраняются | Ваше хранилище и сессии SDK или состояние диалога Responses | История, управляемая вручную, связывание ответов в цепочку или Conversations |
| Запуск инструментов | Инструменты, подключённые со стороны сервиса, обработчики функций в приложении, необязательная песочница | Инструменты и интеграции в вашем приложении | Хостируемые инструменты и инструменты, которые запускает ваше приложение |
Для мониторинга отзывов вывод из таблицы простой. Если вы не хотите держать долгоживущий процесс для исполнительного цикла агента, хранения сессий и повторных попыток, эту работу берёт на себя Agents API. Обратная сторона состоит в том, что состояние агента хранится у OpenAI, а продукт всё ещё находится в статусе беты. Если компании нужно, чтобы данные оставались в её регионе, безопаснее выбрать SDK. На обзорной странице сказано, что Agents API поддерживает хранение данных только в США и не поддерживает Zero Data Retention (ZDR), даже при самостоятельно размещённой песочнице (обзор Agents API).
Шаг 1: добавьте EveryInfra как MCP-подключение
В Agents API MCP-сервер — это одна запись в agent.tools с type: "mcp". Подключение можно устанавливать из двух мест. При connection_origin: "service" (значение по умолчанию) к серверу подключается OpenAI, поэтому сервер должен быть доступен через интернет. Этот режим работает как с окружением, так и без него. При connection_origin: "environment" подключение устанавливается из песочницы сессии; этот вариант предназначен для серверов в частной сети (документация по MCP-подключениям).
MCP-эндпоинт EveryInfra публично доступен по адресу https://api.everyinfra.com/mcp, поэтому заданный по умолчанию адрес сервиса подходит, а для окружения сессии можно указать none. На странице об архитектуре сказано, что без окружения агент всё равно может вызывать удалённые MCP-инструменты. Он лишается только доступа к Bash, файлам рабочей области и MCP-серверам исполнителя (архитектура Agents API). Это важно для стоимости: без песочницы плата за контейнер не взимается.
Ниже приведён пример конфигурации инструмента. Каждое поле мы сверили с документацией.
В allowed_tools указаны только everyinfra_call_api и everyinfra_get_job. Второй инструмент читает результат асинхронного вызова (см. тест 3). При required: true ход завершается ошибкой, если сервер не удаётся запустить. Нам нужно именно это, иначе агент мог бы написать отчёт без данных. В документации сказано, что по умолчанию инициализация MCP необязательна (документация по MCP-подключениям).
{
"type": "mcp",
"server_label": "everyinfra",
"transport": { "type": "http", "server_url": "https://api.everyinfra.com/mcp" },
"connection_origin": "service",
"allowed_tools": ["everyinfra_call_api", "everyinfra_get_job"],
"required": true
}Почему только два инструмента? 1 ноября 2026 года в 15:45 SGT мы отправили tools/list MCP-серверу EveryInfra. Он вернул 12 инструментов, а их JSON-описания в сумме занимают 16 669 байт. Описания everyinfra_call_api и everyinfra_get_job вместе занимают 2 505 байт. Если считать, что в английском тексте на один токен приходится около 4 символов, это примерно 4 167 токенов против примерно 626 токенов (OpenAI Help Center: tokens).
Описания инструментов попадают в контекст при каждом ходе, и у каждого из пяти субагентов есть своя копия. Разница составляет около 18 тыс. токенов за запуск. Кроме того, список инструментов меняется, когда сервис добавляет или удаляет инструменты, а более ранняя проверка в тот же день дала другое число. Список разрешённых инструментов фиксирует эти затраты. В документации allowed_tools описан как способ ограничить набор инструментов, которые агент может обнаруживать и вызывать (документация по MCP-соединениям).
| Список инструментов | Инструменты | Размер JSON-описаний (байт) | Примерное число токенов (÷ 4) | Пять субагентов |
|---|---|---|---|---|
Без allowed_tools | 12 | 16,669 | 4,167 | около 20 835 |
Только everyinfra_call_api и everyinfra_get_job | 2 | 2,505 | 626 | около 3 130 |
В анонсе сказано, что в Agents API также есть функция поиска инструментов (tool search), которая загружает определения инструментов, только когда они нужны агенту (анонс OpenAI; документация по поиску инструментов). Это полезно, когда список инструментов большой, а задача не имеет жёстких рамок. Здесь задаче нужны два инструмента, поэтому проще использовать список разрешённых инструментов: так затраты легче прогнозировать.
Шаг 2: храните ключ в хранилище, а не в инструкциях
Для MCP-соединения нужен ключ EveryInfra. В документации описаны три места для учётных данных. Для одной сессии передайте значение в transport.authorization или transport.headers. Agents API шифрует эти значения и не включает их в возвращаемую сессию.
Для повторного использования сохраните учётные данные в хранилище и подключите его через vault_ids. Для stdio-серверов используйте переменные окружения, но тогда значение сможет прочитать код в песочнице (документация по MCP-соединениям, раздел «Add authentication»). Еженедельной задаче подходит второй вариант.

Нужные вызовы показаны на странице Vaults. Сначала client.beta.agents.vaults.create создаёт хранилище. Затем vaults.credentials.create добавляет учётные данные, указывая auth.type: "static_bearer", URL MCP-сервера в mcp_server_url и ключ в token. Значение mcp_server_url привязывает учётные данные к этому серверу (документация по Vaults). При чтении хранилища или учётных данных API не возвращает секрет. Чтобы управлять хранилищами, ключу вашего приложения нужны разрешения api.vaults.read и api.vaults.write (документация по Vaults; документация по безопасности песочницы).
Два правила из документации легко упустить. Во-первых, учётные данные MCP из хранилища применяются только к соединениям, инициированным OpenAI. Соединение с connection_origin: "environment" их не использует. Во-вторых, удаление учётных данных не отзывает исходный токен и не останавливает работающую сессию (документация по Vaults, раздел «Rotate or remove credentials»). Чтобы отозвать ключ EveryInfra, отключите его в консоли EveryInfra.
Шаг 3: по субагенту на каждый сайт, а главный агент только объединяет результаты
В Agents API мультиагентный режим включается одним параметром. При создании сессии задайте agent.multi_agent.enabled: true. Тогда среда выполнения даёт агенту инструменты для создания и прерывания субагентов, отправки им сообщений и ожидания их завершения; отдельно объявлять эти инструменты не нужно (документация по мультиагентному режиму). max_concurrent_subagents ограничивает число субагентов, работающих одновременно. По умолчанию это 6, не считая главного агента, а в нашей задаче 5 сайтов, так что значения по умолчанию достаточно.
На той же странице есть три правила, важные для этой задачи. Субагенты наследуют настроенные MCP-инструменты, их учётные данные и списки разрешённых инструментов. Субагенты не поддерживают function tools. Субагенты используют общую файловую систему, только если у сессии есть окружение (документация по мультиагентному режиму).
Из первого правила следует, что ключ из хранилища доступен каждому субагенту без дополнительной настройки. Из второго следует, что субагент не может записывать данные в вашу базу через функцию. Результаты должен вернуть главный агент, а сохраняет их ваше приложение.
В документации также сказано, когда стоит разделять работу. Независимые задачи передаются субагентам. Короткие задачи и зависимые шаги остаются у главного агента (документация по мультиагентному режиму, раздел «When to use subagents»). Пять сайтов с отзывами независимы друг от друга.
Сравнению с прошлой неделей и итоговой сводке нужны все пять результатов, поэтому они остаются у главного агента. На странице об автоматизациях есть раздел именно про этот шаблон. При работе над долгосрочной целью главный агент хранит цель и расписание, передаёт каждую задачу по расписанию субагенту и сохраняет краткий результат. Благодаря этому подробные результаты вызовов инструментов при каждой проверке не попадают в основной контекст (документация по автоматизациям по расписанию, раздел «Keep repeated work out of the main context»).
Ниже приведены инструкции для главного агента, которые мы используем в примере. Каждая строка соответствует реальному тесту, описанному далее в статье.
You run a weekly review check for the brands listed in the input.
Delegate each platform (trustpilot, g2, capterra, app_store, google_play) to its own subagent.
Each subagent calls everyinfra_call_api once per brand with the parameters given below,
uses mode=async when limit is 100 or more (read the rows with everyinfra_get_job),
keeps only reviews posted in the last 7 days (filter by posted_at yourself),
cuts every text field to 2,000 characters, and returns JSON:
{platform, brand, new_reviews, low_star, themes:[{name,count,example_url}], new_issue_vs_last_week}.
Do not return raw reviews. The main agent merges the five results into one report.
If a call returns an error with retryable=true, wait retry_after seconds and retry at most twice.
Never invent reviews. If a platform failed, say so in the report.Входные данные каждого запуска содержат параметры для каждого сайта. В таблице показаны значения для Notion. Каждое значение выбрано на основе теста, описанного далее в статье. Задавайте limit так, чтобы один вызов охватывал не меньше двух недель. Не ставьте максимум на всех сайтах. Причины показаны в тестах 1 и 4.
| Субагент | Параметры для каждого бренда | Правило для низких оценок | Причина |
|---|---|---|---|
| Trustpilot | company: "notion.so", stars: ["1","2"], sort: "recency", limit: 20, без date | Все записи, потому что вызов запрашивает 1–2 звезды | 20 записей охватывают 129 дней, примерно 1 отзыв с низкой оценкой в неделю, поэтому читайте все 20 записей и фильтруйте по posted_at; для sort используйте значение из каталога (тест 3) |
| G2 | url, sort: "newest", limit: 100, mode: "async" | rating не выше 2,5; пропускайте запись record_type: summary | Фильтра по звёздам нет; ClickUp получает около 47 отзывов в неделю (тест 1); синхронный вызов занял 50 секунд |
| Capterra | company — URL продукта, limit: 100, mode: "async" | rating не выше 2 | Сортировки нет; берите все записи и сравнивайте значения id со значениями за прошлую неделю (тест 1) |
| App Store | app_id: "1232780281", country: "us", sort: "newest", limit: 50 | rating не выше 2; подсчёт по app_version | 50 записей охватывают 39 дней; жалобы появляются вслед за релизами (тест 2) |
| Google Play | app_id: "notion.id", sort: "newest", language: "en", limit: 200 | score не выше 2 | 40 записей охватили всего 4,2 дня, 200 записей — 22 дня (тест 1) |
Обратите внимание на названия полей. Google Play возвращает оценку в поле score, а остальные четыре сайта используют rating.
Шаг 4: каждый понедельник автоматизация открывает новую сессию
Расписания задаются в отдельном ресурсе POST /v1/agents/automations. При type: "periodic" указываются expression (стандартная cron-строка из пяти полей) и timezone (имя из базы IANA, например America/New_York). При type: "once" значение run_at указывается в секундах с начала эпохи Unix. Поддерживаются два типа цели.
new_session открывает новую сессию при каждом запуске; для неё нужны агент или сохранённый agent_id, окружение и target.input. existing_session отправляет напоминание в уже существующую сессию: это подходит для задач, которым нужны прежние выводы (документация «Scheduled automations»). Из справочника API следует, что цель new_session принимает vault_ids, а её окружение может быть none (справочник «Create automation»). Имена часовых поясов берутся из базы IANA («IANA Time Zone Database»), а пять полей cron соответствуют Unix crontab (crontab(5)).
Ниже полный пример конфигурации на Python. SDK добавляет заголовок OpenAI-Beta: agents=v1 автоматически. При работе через curl его нужно добавить вручную («Agents API quickstart»). Расписание здесь задано по нью-йоркскому времени, потому что большая часть отзывов об этих двух брендах пишется на английском.
import os
from openai import OpenAI
client = OpenAI() # app key needs api.agents.read / api.agents.write / api.responses.write / api.vaults.write
MCP_URL = "https://api.everyinfra.com/mcp"
vault = client.beta.agents.vaults.create(name="review-check")
client.beta.agents.vaults.credentials.create(
vault.id,
name="EveryInfra read-only key",
auth={"type": "static_bearer", "mcp_server_url": MCP_URL, "token": os.environ["EVERYINFRA_API_KEY"]},
)
agent = client.beta.agents.create(
model="gpt-6.1-terra",
instructions=open("weekly_review_instructions.txt").read(),
tools=[{
"type": "mcp", "server_label": "everyinfra",
"transport": {"type": "http", "server_url": MCP_URL},
"connection_origin": "service",
"allowed_tools": ["everyinfra_call_api", "everyinfra_get_job"], "required": True,
}],
multi_agent={"enabled": True, "max_concurrent_subagents": 5},
)
automation = client.beta.agents.automations.create(
type="periodic",
name="Weekly review check",
expression="0 9 * * MON",
timezone="America/New_York",
target={
"type": "new_session",
"agent_id": agent.id,
"environment": {"type": "none"},
"vault_ids": [vault.id],
"input": [{"role": "user", "content": [{"type": "input_text",
"text": "Brands: ClickUp (clickup.com; g2 clickup; capterra https://www.capterra.com/p/158833/ClickUp/; "
"app_store 1535098836; google_play co.mangotechnologies.clickup). Write this week's report."}]}],
},
)
print(automation.id)Несколько деталей из документации меняют смысл слов «по расписанию». Новая автоматизация получает статус active, но не запускается сразу. Первый запуск происходит в ближайшее подходящее время. К периодическим запускам добавляется небольшая случайная задержка, чтобы распределить нагрузку.
Если целевая сессия занята, задача ждёт. Каждый запуск создаёт invocation, и invocation со status: completed означает лишь, что доставка прошла успешно. Это не значит, что агент закончил работу. Чтобы узнать результат, отслеживайте agent.session.turn.completed или turn.failed в событиях сессии (документация «Scheduled automations»; документация «Sessions»).
Приложение может читать отчёт из потока событий или получать его через вебхук. Вебхук agent.session.idle означает, что сессия готова принять новый ввод. Это тоже не значит, что последний ход завершился успешно (документация «Webhooks»). Чтобы проверить всё до понедельника, отправьте пустой POST /v1/agents/automations/{id}/invocations. Ручной запуск не меняет сохранённое расписание (документация «Scheduled automations»: пробный запуск).
Какая цель лучше: new_session или existing_session? Новая сессия каждую неделю начинается с чистого контекста, поэтому стоимость легко предсказать. Агент не помнит прошлую неделю, так что приложение должно передавать сводку за неё в target.input. Существующая сессия сохраняет прежние выводы, а Agents API сжимает старый контекст, когда сессия приближается к лимиту (анонс OpenAI; документация «Compaction»). Мы предпочитаем новую сессию со сводкой за прошлую неделю во входных данных: это всего одна-две тысячи токенов.
Один реальный обмен по MCP: что отправляет субагент и что получает в ответ
Субагент отправляет в EveryInfra один MCP-вызов tools/call. В 00:47:47 SGT 1 ноября 2026 года мы отправили этот вызов на https://api.everyinfra.com/mcp с нашим тестовым ключом. Именно такой вызов сделал бы субагент для Trustpilot: свежие отзывы о notion.so с 1 и 2 звёздами. Объект arguments содержит входные данные everyinfra_call_api: платформу, возможность и её параметры.
{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"everyinfra_call_api","arguments":{"platform":"trustpilot","action":"reviews","params":{"company":"notion.so","stars":["1","2"],"date":"last30days","sort":"recency","limit":20}}}}Ответ приходит текстовым блоком, который разбирается как JSON. count равен 14. Каждая запись в results содержит title, text, rating, posted_at, verification_level, country и другие поля, и они совпадают со списком response_fields для trustpilot/reviews в каталоге. billing.charged равно true, а charged_usd равно 0,001389, что соответствует цене в каталоге (каталог: trustpilot). Первый отзыв озаглавлен «I find everything in Notion a bit too chaotic» и опубликован 20 октября 2026 года. Для сравнения мы открыли публичную страницу Notion на Trustpilot: тот же отзыв с той же датой там есть (Trustpilot: Notion).

На том же скриншоте видны две ошибки, с которыми субагент столкнётся в реальной работе. В 00:51:28 SGT мы намеренно отправили параметр stars в g2/reviews, хотя эта возможность его не поддерживает. API вернул ошибку 422, где error.code имел значение unknown_param. В списке allowed были указаны url, limit и sort, а в next_steps говорилось, что stars нужно убрать и что ничего не списано.
В 00:52:47 и 00:53:46 SGT два вызова вернули 429. В это время несколько тестовых задач использовали один тестовый ключ с общим лимитом 10 запросов в минуту. В первом ответе 429 значение retry_after составляло 13 секунд, и наша повторная попытка через 37 секунд прошла успешно. Повторная попытка после второго ответа 429 последовала через 15 секунд и тоже прошла. Ни за один из ответов 429 списания не было.
Каждая ошибка сообщает модели, какой параметр изменить и сколько ждать, поэтому субагент может исправиться сам. Наше правило повторных попыток в инструкциях опирается на этот формат.
Ещё одна ошибка требует отдельного пояснения, и её причину мы нашли только в контрольном тесте. В 00:51:16 SGT sort: "newest" в trustpilot/reviews вернул 503 с retryable: true, retry_after: 20 и без списания. В ошибке говорилось, что эта возможность дала сбой 3 раза за 10 минут. Во всех 3 неудачных вызовах (два из них пришли из других тестов в то же время) было значение, которого нет в каталоге. Вызовы со значениями из каталога в те же минуты работали.
Чтобы проверить причину, мы дважды отправили одни и те же параметры, в 15:39:46 и 15:40:07 SGT. Менялся только sort: сначала newest, затем recency, то есть значение из каталога. Оба вызова вернули 200, за каждый списали 0,001389 доллара США, но записи оказались разными.
Вызов с recency вернул те же 20 записей, что и вызов в 00:54: все на английском, у каждой есть поле source. Вызов с newest совпал с ним только в 14 записях. Остальные 6 записей были на немецком, французском и нидерландском, и ни у одной не было source или verification_level. В примечании к полям в каталоге сказано, что эти поля могут отсутствовать, если результаты получены из резервного источника.
| `sort` | Время (SGT) | Ответ | Записи | Языки | Поле `source` | Списано |
|---|---|---|---|---|---|---|
newest (нет в каталоге) | 00:51:16 | 503 | — | — | — | Нет |
newest (нет в каталоге) | 15:39:46 | 200 | 20, из них только 14 совпадают с recency | 14 en, 3 de, 2 fr, 1 nl | Ни в одной записи | $0.001389 |
recency | 15:40:07 | 200 | 20, те же, что в 00:54 | 20 en | Во всех 20 записях | $0.001389 |
newest (после вечернего исправления) | 19:23:05 | 200 | 20, те же, что и для recency | 20 en | Во всех 20 записях | $0.001389 |
recency (после вечернего исправления) | 19:22:49 | 200 | 20, те же, что в 00:54 | 20 en | Во всех 20 записях | $0.001389 |
Значит, проверка параметров не останавливает newest. Основной источник на нём падает, и результат зависит от того, что в этот момент вернёт резервный. В 00:51 резервный тоже не сработал, и мы получили 503. В 15:39 он сработал, и мы получили 200 с другими данными и обычным списанием.
Это хуже ошибки, потому что субагент не может увидеть проблему.
Это были результаты, полученные утром и днём 1 ноября. Вечером того же дня шлюз изменил sort. Теперь он принимает newest (то же, что recency), recency и relevance. На другие значения возвращается 422 ещё до списания, со списком допустимых значений и подсказкой «возможно, вы имели в виду». Результаты нашей повторной проверки в 19:22–19:23 SGT приведены в таблице в конце теста 3.
Но смена сайта часто означает и смену имени параметра. Поэтому инструкции по-прежнему жёстко задают параметры для каждого сайта и не дают модели угадывать. С кратковременными сбоями помогает справиться retry_after.
Тест 1: хватит ли одного запуска в неделю? Зависит от того, за какой период один вызов получает данные
«Проверять раз в неделю» звучит очевидно, но за этим стоит допущение: один вызов на сайт должен покрывать все 7 дней. Если сайт получает 60 новых отзывов в неделю, а вы читаете 20, отчёт увидит только выходные. Поэтому до всякой настройки мы измерили, сколько дней покрывает один вызов на каждом сайте.
Для Notion и ClickUp мы один раз вызвали platform/reviews на каждом из пяти сайтов. Мы записали самую новую и самую старую дату публикации и то, идут ли записи от новых к старым. Также мы посчитали записи за период с 25 октября по 1 ноября 2026 года (UTC). Для двух брендов потребовалось 12 реальных вызовов с 00:48 до 14:38 SGT 1 ноября 2026 года.
| Сайт · бренд | Запрошено записей | Возвращено записей | Самая старая | Самая новая | Сначала новые | За последние 7 дней | С низкой оценкой |
|---|---|---|---|---|---|---|---|
| Trustpilot · Notion (только 1–2 звезды) | 20 | 20 | 2026-06-13 | 2026-10-20 | Да | 0 | 0 |
| Trustpilot · ClickUp (только 1–2 звезды) | 20 | 20 | 2026-05-16 | 2026-10-29 | Да | 2 | 2 |
| G2 · Notion | 20 | 19 отзывов + 1 сводка | 2022-11-28 | 2026-10-29 | В основном, но затесались 3 старые записи | 12 | 0 |
| G2 · ClickUp | 20 | 19 отзывов + 1 сводка | 2026-10-28 | 2026-10-31 | Да | 19 | 0 |
| Capterra · Notion | 20 | 19 | 2025-12-11 | 2026-10-09 | Нет | 0 | 0 |
| Capterra · ClickUp | 20 | 17 | 2025-11-05 | 2026-10-21 | Нет | 0 | 0 |
| App Store · Notion | 50 | 50 | 2026-09-20 | 2026-10-29 | Да | 9 | 6 |
| App Store · ClickUp | 50 | 50 | 2026-03-30 | 2026-10-29 | Да | 2 | 2 |
| Google Play · Notion | 200 | 200 | 2026-10-08 | 2026-10-30 | Да | 52 | 15 |
| Google Play · ClickUp | 200 | 200 | 2026-03-04 | 2026-10-31 | Да | 5 | 1 |
Важнее всего две крайности. На G2 все 19 отзывов о ClickUp укладываются в период с 28 по 31 октября, то есть в три дня. При таком темпе ClickUp получает около 47 отзывов на G2 в неделю, так что 20 записей показывают только последние два-три дня.
В Google Play мы сначала запросили 40 отзывов о Notion, и они покрыли только 4,2 дня. При 200 записях — максимально допустимом значении для этой возможности — вызов покрыл 22 дня. На другом полюсе — отзывы о Notion с низкой оценкой на Trustpilot: они редки. Двадцать таких отзывов охватывают период до 13 июня — примерно по одному в неделю.
Так что при одном и том же еженедельном расписании на одних сайтах нужен максимальный limit, а на других хватает 20 записей. В эндпоинтах отзывов EveryInfra оплата взимается за каждый вызов API. У вызова Google Play на 200 записей charged_usd составил 0,001389, столько же, сколько у вызова на 40 записей.
Но максимум на каждом сайте — не лучший выбор. Во время доработки статьи мы провели ещё один раунд для Notion, указав max_limit из каталога для каждого сайта (Trustpilot 200, G2 100, Capterra 100, App Store 500, Google Play 200). 500 записей из App Store охватили период до 14 февраля 2026 года, а записи Trustpilot с низкой оценкой — до апреля 2024 года. Это гораздо больше, чем нужно еженедельному отчёту, а каждая лишняя запись попадает в контекст модели (цифры приведены в тесте 4).
Наше правило: задавайте limit так, чтобы один вызов покрывал минимум две недели. Для Notion это Trustpilot 20, G2 100, Capterra 100, App Store 50 и Google Play 200. Затем субагент фильтрует записи по posted_at за последние 7 дней. У ваших брендов другие объёмы, поэтому сначала измерьте один вызов на каждом сайте, как в таблице выше.
На графике виден и третий случай. Две строки Capterra растянуты на целый год, и порядок результатов никак не связан со временем. У capterra/reviews один обязательный параметр, company, и нет параметра сортировки. 19 отзывов о Notion охватывают период с 11 декабря 2025 по 9 октября 2026 года в перемешанном порядке, и только 1 из них опубликован за последние 30 дней. 17 отзывов о ClickUp выглядят так же.
Для отчёта принцип «взять N самых новых» на Capterra не работает. Каждый раз запрашивайте 100 записей и сравнивайте id и posted_at с результатом прошлой недели. Отзывов на Capterra мало, по 1 за 30 дней на каждый бренд, так что еженедельного запуска достаточно.
У G2 тоже есть небольшая ловушка. Первая запись в ответе по Notion — не отзыв. Это запись с record_type: summary, в которой хранятся общий рейтинг 4,6, общее число отзывов 13 962 и главные плюсы и минусы. Следующие 19 отзывов идут в основном от новых к старым, но между ними затесались три отзыва 2022–2025 годов.
Субагент, который примет самую старую дату за «покрытие», решит, что вызов охватил четыре года. Правило «фильтруйте по posted_at сами» решает эту проблему. При этом сводная запись полезна: отчёт может привести общий рейтинг G2 на этой неделе без отдельного вызова g2/profile.
Тест 2: где встречаются отзывы с низкой оценкой
Зная покрытие, можно сравнить, где находятся отзывы с низкой оценкой. Мы посчитали отзывы с низкой оценкой за последние 30 дней, которые мог увидеть один вызов на сайт (на G2 2,5 звезды и ниже, на остальных сайтах 2 и ниже). У Notion их всего 67: 22 в App Store, 42 в Google Play, 3 на Trustpilot и 0 на G2 и Capterra. Значит, 64 из 67, или 95,5%, приходятся на два магазина приложений. У ClickUp всего 14, и распределение ровнее: 5 на Trustpilot, 4 в App Store, 5 в Google Play и 0 на G2 и Capterra.
Из этого распределения для отчёта следуют два вывода. Первый: на B2B-площадках с отзывами мало отзывов с низкой оценкой. Ни у одного бренда в вызове на 20 записей не нашлось отзыва на G2 с низкой оценкой за 30 дней. Во время доработки вызов на 100 записей для Notion вернул 50 отзывов: 41 за последние 30 дней, и лишь 1 из них с низкой оценкой. Это согласуется со сводным рейтингом G2 4,6. Команда, которая следит только за G2 и Capterra, может решить, что всё в порядке.
Второй: жалоб в магазинах приложений много, они конкретны, и в большинстве указан номер версии. У каждой записи App Store есть поле app_version. Из 22 отзывов о Notion с низкой оценкой за 30 дней 8 относятся к версии 1.7.345, больше, чем к любой другой. Субагент, который считает по версиям, может написать «отзывы с низкой оценкой концентрируются после 1.7.345», и с этим инженерная команда уже может работать.
Мы также сгруппировали эти отзывы с низкой оценкой с помощью правил по ключевым словам. Правила лежат в нашем скрипте пересчёта. Например, «slow», «crash» или «bug» в заголовке или тексте относят отзыв к группе «скорость и баги». Один отзыв может попасть в несколько групп.
Из 64 отзывов о Notion с низкой оценкой в двух магазинах приложений 20 касаются скорости и багов, 18 касаются работы мобильного приложения, а 12 касаются ИИ-функций. 22 отзыва правила распределить не смогли, и 18 из них опубликованы в Google Play. Большинство из них состоит из одного-двух слов.
Именно на этой последней группе модель оправдывает свою стоимость. Правила справляются с длинными и внятными жалобами. На «bad», «worst update» или сарказме они ломаются. Поэтому модель субагента должна тратить большую часть токенов на отзывы, которые правила не смогли распределить, а не на повторное чтение каждого отзыва.
Один сигнал заметен только при сравнении брендов, но выборка очень мала. За последние 30 дней 2 отзыва о Notion и 1 отзыв о ClickUp в App Store упоминают «iPhone Duo». В отзыве о Notion на 2 звезды от 26 октября говорится, что на iPhone Duo перестают работать сенсорные элементы интерфейса, выделенный текст исчезает, а приложение вылетает. Отзыв о ClickUp на 1 звезду от 29 октября озаглавлен «No iPhone Duo support». iPhone Duo стал первым складным iPhone от Apple и поступил в продажу в магазинах Apple Store 23 октября (Apple Newsroom). В первые недели после выхода нового устройства проблемы с его поддержкой в приложениях обычны.
Так что три отзыва не доказывают, что существует проблема, которую одной из команд нужно учитывать при планировании. Хорошая формулировка для отчёта: «поддержка нового устройства: наблюдать и на следующей неделе проверить, растёт ли число». Полезный вывод здесь касается распределения ролей. Внутри одного бренда это одна жалоба. При сравнении брендов видно, что всё указывает на одно устройство. Сводки всех субагентов видит главный агент, поэтому этот межбрендовый шаг относится к нему.
Как выглядит еженедельный отчёт на реальных данных этой недели
Результат проще оценить, когда его видишь. Таблица ниже охватывает неделю с 25 октября по 1 ноября 2026 года (UTC). Для каждого сайта и бренда показаны новые отзывы, которые мог увидеть один вызов, и сколько из них получили низкую оценку. Все значения взяты из необработанных ответов реальных вызовов. Именно в таком виде субагенты возвращают данные главному агенту.
| Сайт | Notion: новые / с низкой оценкой | ClickUp: новые / с низкой оценкой | Что должно быть в отчёте |
|---|---|---|---|
| Trustpilot | 0 / 0 | 2 / 2 | Два отзыва о ClickUp на 1 звезду: один про чат-бот поддержки, другой про уведомление за 30 дней об изменении числа мест и порядка оплаты. Передать оба в поддержку и биллинг. |
| G2 | 12 / 0 | 19 / 0 | Отзывов с низкой оценкой нет ни у одного бренда. ClickUp получает около 47 отзывов в неделю, поэтому задайте limit равным 100. |
| Capterra | 0 / 0 | 0 / 0 | На этой неделе новых отзывов нет. Результаты не отсортированы, поэтому сравнивайте значения id с данными прошлой недели. |
| App Store | 9 / 6 | 2 / 2 | Жалобы на Notion концентрируются на версии 1.7.345. Три отзыва о двух брендах упоминают iPhone Duo; повторить проверку на следующей неделе. |
| Google Play | 52 / 15 | 5 / 1 | Главный источник жалоб на Notion. Передать модели 22 коротких отзыва. |
Главный агент получает пять таких коротких строк и общий рейтинг каждого бренда. Один рейтинг даёт сводная запись G2, а вызов trustpilot/profile даёт Notion TrustScore 2,2 на основе 442 отзывов.
Затем главный агент принимает три решения. Какая строка заметно выросла с прошлой недели? Повторяется ли какая-то проблема на разных сайтах или у разных брендов? Какие исходные отзывы заслуживают ссылки в отчёте? Для всех трёх решений нужны все пять результатов, поэтому они остаются за главным агентом. Чтение сотен отзывов и подсчёт по версиям и ключевым словам относятся к механической работе, поэтому её передают субагентам.
Мы советуем, чтобы главный агент возвращал JSON фиксированной структуры, а ваше приложение превращало его в письмо или сообщение в чате. Сессии принимают схему вывода в agent.text.format.schema, причём общий размер входных данных и схемы должен быть меньше 4 MiB (документация по Sessions). С фиксированной схемой отчёт каждую неделю имеет одну и ту же форму, и сравнивать недели между собой просто.
Тест 3: один неверный параметр меняет результат
В предыдущих разделах уже упоминались некоторые проблемы с параметрами. В этой таблице они собраны вместе с другими случаями, которые мы наблюдали. Каждая строка соответствует реальному вызову. В последнем столбце указано правило, которое входит в инструкции для субагента.
| Что произошло | Время (SGT, 1 ноября 2026 г.) | Ответ | Списано | Как исправить |
|---|---|---|---|---|
Trustpilot с date: "last30days" вернул записи старше 30 дней | 00:47 | 14 записей с 31 июля по 20 октября, из них лишь 3 за последние 30 дней. После вечернего исправления повторная проверка в 19:22 вернула 3 записи, все за последние 30 дней. | Да, $0,001389 | После исправления пресет работает. Для еженедельного отчёта всё равно фильтруйте по posted_at. |
G2 с неподдерживаемым stars | 00:51 | 422 unknown_param, допустимые: url, limit, sort | Нет | В G2 нет фильтра по звёздам. Фильтруйте по rating сами. |
| Несколько тестовых задач использовали один ключ и исчерпали его лимит в 10 запросов в минуту | 00:52, 00:53 | 429, первое значение retry_after — 13 секунд; обе повторные попытки завершились успешно | Нет | Подождите указанное в retry_after время. |
Trustpilot с sort: "newest", значением, которого нет в каталоге | 00:51, 15:39 | Сначала ответ 503. Затем ответ 200 от резервного источника: 6 записей не на английском и без поля source. После вечернего исправления newest равнозначен recency. | 503: нет; 200: да, $0,001389 | Используйте значения из каталога. После исправления на неверное значение возвращается 422. |
| Trustpilot, 200 записей, синхронный вызов | 15:40 | Тайм-аут через 85 секунд, 503 с советом использовать mode: "async" | Нет | Для большого limit используйте асинхронный режим и читайте записи через everyinfra_get_job. Асинхронный вызов вернул 131 запись. |
Поиск на Capterra по названию Notion | 00:49 | 20 записей, 3 из них без даты и ссылки, от надстройки для экспорта в Google Sheets | Да, $0,001389 | Используйте URL страницы продукта /p/186596/Notion/. |
| Поиск на Capterra по URL продукта | 00:50 | 19 записей без сортировки, одно поле pros длиной 98 725 символов. После вечернего исправления каждое поле содержит не более 5 000 символов. | Да, $0,001389 | Ограничивайте длину каждого текстового поля, например 2 000 символами. |
| Первая запись G2 оказалась сводкой | 00:48 | record_type: summary, рейтинг 4,6, 13 962 отзыва | Да, $0,001389 | Обрабатывайте сводку отдельно. Не считайте её отзывом. |
Строка о Trustpilot требует более подробного разбора. В каталоге date описан как временной пресет, где last30days означает последние 30 дней. Мы отправили запрос с этим параметром и фильтром только по оценкам 1 и 2 звезды и получили 14 записей с 31 июля по 20 октября, из них лишь 3 в пределах последних 30 дней. Тот же запрос без date вернул 20 записей вплоть до 13 июня, причём первые 14 совпали с этими 14 записями.
Значит, в раннем прогоне 1 ноября вызов с пресетом охватил примерно три месяца вместо 30 дней. Отчёт, который просто считает записи, показал бы 14 отзывов с низкой оценкой за 30 дней, хотя на деле их было 3.
Вечером того же дня шлюз изменил пресеты: теперь они ограничивают выборку по дате публикации последними 7, 30, 92, 183 или 366 днями. При неверном пресете ошибка 422 возвращается ещё до списания. Наша повторная проверка в 19:22 SGT вернула 3 записи с 3 по 20 октября. Это те самые 3 записи, которые при раннем прогоне относились к последним 30 дням. Так что теперь last30days можно использовать как фильтр по дате. Для еженедельного отчёта мы всё равно читаем все 20 записей и фильтруем по posted_at, потому что субагент сравнивает новые отзывы со старыми.
Поиск по названию на Capterra иллюстрирует общий принцип. На сайтах отзывов много продуктов с одинаковыми или похожими названиями, поэтому поиск по названию может подмешать другой продукт. В примечании к company в каталоге сказано, что во избежание этого по возможности нужно передавать ссылку на продукт. С URL продукта все 19 записей оказались отзывами о Notion. В вашем списке брендов для каждого сайта должна храниться ссылка или ID, а не название. Решите это ещё на этапе проектирования входных данных.
В таблице ниже сведены результаты наших повторных проверок после вечернего исправления 1 ноября (19:22–19:23 SGT) с теми же параметрами, что и днём:
| Пункт | Ранний запуск или запуск во второй половине дня, 1 ноября | Повторная проверка вечером | Списано |
|---|---|---|---|
Trustpilot sort: "newest" | 503 в 00:51; 200 в 15:39, но 6 записей не на английском и без source | 200, те же записи, что и с recency, и в 00:54, все на английском | $0.001389 |
Trustpilot date: "last30days" | 14 записей, из них лишь 3 за последние 30 дней | 3 записи, все за последние 30 дней | $0.001389 |
URL продукта на Capterra, limit: 100 | 86 записей, 375 315 байт, самое длинное поле 103 138 символов | Те же 86 записей, 144 341 байт, самое длинное поле: 1 154 символа | $0.001389 |
| Рекомендуемый еженедельный запуск (Notion) | 651 907 байт, около 163 тыс. токенов | 420 933 байта, около 105 тыс. токенов | — |
Тест 4: объём сырых отзывов за неделю определяет стоимость работы модели
Модели тарифицируются по токенам, поэтому нужно знать объём сырых отзывов за неделю. Каждая запись, которую возвращает вызов API, попадает в контекст субагента как результат работы инструмента. Значит, limit определяет, сколько читает модель. Мы провели замеры для трёх конфигураций Notion по реальным ответам, а также одну вечернюю повторную проверку Capterra. Число токенов рассчитано исходя из примерно 4 символов на токен для английского текста (Справочный центр OpenAI: токены).
| Настройка (Notion, один вызов API для каждого сайта) | `limit` на сайт | Сырой ответ | Примерное число токенов | Текстовые поля обрезаны до 2 000 символов | Примерное число токенов |
|---|---|---|---|---|---|
| Первый раунд (00:47–00:57) | Trustpilot 20 (с last30days), G2 20, Capterra 20, App Store 50, Google Play 200 | 359 497 байт | 89,874 | 246 387 байт | 61,597 |
| Рекомендуемая | Trustpilot 20, G2 100, Capterra 100, App Store 50, Google Play 200 | 651 907 байт | 162,977 | 422 892 байта | 105,723 |
| Рекомендуемая, с вечерней повторной проверкой Capterra (19:23) | То же, что выше | 420 933 байта | 105,233 | 420 732 байта | 105,183 |
max_limit везде | Trustpilot 200, G2 100, Capterra 100, App Store 500, Google Play 200 | 1 021 087 байт | 255,272 | 786 452 байта | 196,613 |
В рекомендуемой настройке данные G2 и Capterra взяты из двух новых вызовов в 15:42 и 15:43 SGT. Для G2 мы запросили 100 записей и получили 50 отзывов плюс 1 сводную запись. Для Capterra запросили 100 и получили 86. Остальные три вызова взяты из первого раунда с теми же параметрами. Раунд с max_limit после обрезки занимает около 197 тыс. токенов — в 1,86 раза больше, чем при рекомендуемой настройке. Основная часть разницы приходится на 450 дополнительных записей App Store и 111 дополнительных записей Trustpilot, почти все из которых намного старше недели.
В раннем прогоне 1 ноября больше трети из 652 КБ пришлось на два отзыва. В первом раунде ответ Capterra на 20 записей занимал 148 915 байт, а один отзыв в нём — 114 983 байта. Поле pros этого отзыва содержало 98 725 символов. Оно начинается с обычного комментария пользователя, после которого идёт длинный блок данных скриптов со страницы. В ответе на 100 записей таких отзывов было два: их поля pros содержали 100 712 и 103 138 символов. В ответе Capterra по ClickUp тоже был такой отзыв: его поле pros содержало 103 556 символов.
Парсер захватил вместе с отзывом данные страницы.
После обрезки каждого текстового поля до 2 000 символов ответ Capterra на 100 записей уменьшился с 375 315 до 146 501 байт. Рекомендуемый еженедельный прогон сократился примерно со 163k до 106k токенов. Без обрезки субагент читал на 54% больше.
Вечером того же дня шлюз исправил парсер. Теперь он удаляет код страницы из pros, cons и text, и каждое поле содержит не более 5 000 символов. Наша повторная проверка в 19:23 SGT вернула те же 86 отзывов объёмом 144 341 байт, чуть меньше, чем 146 501 байт после ранней обрезки (см. таблицу в конце теста 3). Рекомендуемый еженедельный прогон теперь занимает около 105k токенов, что всего на 0.5% отличается от прежнего значения после обрезки. Поэтому приведённая ниже оценка стоимости модели не меняется.
Ограничивать длину текстовых полей перед передачей данных модели по-прежнему полезно. Это ничего не стоит и защитит вас, если позже такая же проблема возникнет на другом сайте.
Именно здесь субагенты окупаются. Без них главный агент сам читает все 106 тыс. токенов. С пятью субагентами каждый читает только свой сайт (самый объёмный, Capterra, после обрезки занимает около 37 тыс. токенов), а главный агент получает JSON-сводку на несколько сотен токенов по каждому сайту. В документации по автоматизациям сказано то же самое: делегируйте каждую задачу по расписанию субагенту, и подробный вывод инструментов не попадёт в основной контекст (документация «Scheduled automations»). В нашем тесте субагентов Claude Code на аккаунтах брендов в TikTok сырые данные и сводки различались по объёму примерно в 100 раз.
Итоговый счёт: цены OpenAI Agents API и плата за данные
Начнём с данных. За использование эндпоинтов отзывов EveryInfra взимается плата за каждый вызов API, а число записей на цену не влияет. У всех пяти возможностей значение price_usd — 0,001389 (каталог; страница тарифов). Один бренд при пяти вызовах API в неделю обходится в $0,006945 в неделю и $0,3611 в год. Десять брендов — ваш и девять конкурентов — обойдутся в $3,61 в год.
Это фактические цифры, а не оценки. Для этой статьи мы сделали 21 платный вызов, 6 из них — во время доработки. Каждый вызов вернул charged_usd со значением 0,001389; общая сумма составила $0,029169. За 6 неудачных вызовов (три с кодом 503, один с кодом 422 и два с кодом 429) ничего не списали. После вечернего исправления мы провели 4 повторных теста (3 на Trustpilot и 1 на Capterra). За каждый было списано $0,001389, всего — $0,005556.
Теперь расходы на стороне OpenAI. На обзорной странице указано, что использование моделей оплачивается по тарифам API, инструментов — по стандартным тарифам, а размещённых песочниц — по тарифам контейнеров (обзор Agents API: цены). В нашей конфигурации не используются ни песочница (environment: none), ни веб-поиск, поэтому остаётся только плата за токены моделей. Ниже приведены стандартные цены по прайс-листу за миллион токенов по состоянию на 1 ноября 2026 года (цены OpenAI API):
| Модель | Входные данные | Кешированный ввод | Запись в кеш на 30 минут | Вывод |
|---|---|---|---|---|
| gpt-6-astra | $10.00 | $1.00 | $12.50 | $50.00 |
| gpt-6.1-sol | $2.00 | $0.10 | $2.50 | $10.00 |
| gpt-6.1-terra | $1.00 | $0.05 | $1.25 | $5.00 |
| gpt-6-luna | $0.10 | $0.01 | $0.125 | $0.50 |

Ниже описан метод, чтобы вы могли подставить собственные числа. Входные данные состоят из трёх частей. Отзывы за одну неделю с рекомендуемыми лимитами после обрезки занимают около 105 723 токенов. Каждый из 5 субагентов добавляет около 8 000 токенов на инструкции, описание инструментов и контекст. Главный агент добавляет около 20 000 токенов.
Первое чтение мы считаем по тарифу 30-минутной записи в кеш. Для GPT-5.6 и более поздних моделей стоимость 30-минутной записи в кеш рассчитывается с коэффициентом 1,25 к цене входных токенов, поэтому такая оценка взята с запасом (документация по кешированию промптов).
За один ход субагент вызывает модель больше одного раза. Поэтому мы добавляем ещё два чтения отзывов и накладных расходов по тарифу кешированных токенов. Выходные данные составляют 1 500 токенов на каждого субагента и 3 000 для главного агента.
Измерен только объём отзывов. Остальные параметры расчёта основаны на допущениях, поэтому мы округляем результат до двух значащих цифр. Оценка: около $0,029 на gpt-6-luna, около $0,27 на gpt-6.1-terra, около $0,55 на gpt-6.1-sol и около $2,9 на gpt-6-astra. Разница между моделями в 100 раз отражает только соотношение цен по прайс-листу. Цена входных токенов astra составляет $10,00 — в 100 раз больше цены входных токенов luna при любой задаче.
| Один бренд, одна неделя | Сумма | Один год (×52) | Обоснование |
|---|---|---|---|
| Вызовы API EveryInfra для получения данных (5) | $0.006945 | $0.3611 | Списано в нашем тесте |
| Модель gpt-6-luna | около $0,029 | около $1,5 | Оценка по прейскурантным ценам |
| Модель gpt-6.1-terra | около $0,27 | около $14 | Оценка по прейскурантным ценам |
| Модель gpt-6.1-sol | около $0,55 | около $29 | Оценка по прейскурантным ценам |
| Модель gpt-6-astra | около $2,9 | около $150 | Оценка по прейскурантным ценам |
Какое допущение важнее всего? В этой таблице меняются накладные расходы и число повторных чтений — по три значения для каждого параметра. Используется модель gpt-6.1-terra и рекомендуемые лимиты; остальные допущения те же, что и выше.
| Накладные расходы на субагента | 1 повторное чтение | 2 повторных чтения | 4 повторных чтения |
|---|---|---|---|
| 4 000 токенов | $0.24 | $0.25 | $0.26 |
| 8 000 токенов | $0.27 | $0.27 | $0.29 |
| 16 000 токенов | $0.32 | $0.33 | $0.35 |
Все девять результатов укладываются в диапазон от $0,24 до $0,35. Повторные чтения почти ничего не меняют, потому что цена кешированных входных токенов составляет 5 % от цены обычных входных токенов. Накладные расходы влияют чуть сильнее. Главное влияние оказывает объём отзывов. При тех же допущениях max_limit везде обходится примерно в $0,40, а небольшой первый раунд — примерно в $0,21. Поэтому сначала задайте limit и ограничение длины текстовых полей, а затем выбирайте модель.
Таблица показывает соотношение. Плата за данные — малая часть общей суммы, а главная переменная — выбор модели. Отчёт по отзывам с низкими оценками обрабатывает много текста, но принимает простые решения. Поэтому для субагентов мы выбрали бы gpt-6-luna или gpt-6.1-terra. Используйте более сильную модель для главного агента, только если этого требует сводка.
Позже в сессии можно изменить model, reasoning.effort и service_tier. А вот tools, instructions и multi_agent изменить нельзя (документация по настройке). Поэтому продумайте набор моделей ещё при создании агента.
Стоит отметить две детали биллинга. Во-первых, поле usage в Agents API заполняется по мере возможности. Оно может иметь значение null, его значение может измениться позже, и счётом оно не является. В нём также нет отдельного счётчика токенов, записанных в кеш, поэтому для моделей с отдельной ценой записи в кеш одного usage недостаточно для точного расчёта стоимости модели (документация по наблюдаемости).
Во-вторых, если позже вы добавите размещённую песочницу, для контейнеров действуют цены по прайс-листу: для 4 ГБ — $0,12 за 20 минут; с 2 июня 2026 года оплата поминутная, минимум — 5 минут. С 9 октября 2026 года размещённые песочницы тарифицируются только во время активных ходов, а не за простой между ними (цены OpenAI API; история изменений). В нашей конфигурации песочницы нет, поэтому таких расходов нет.
Ограничения публичной бета-версии, которые нужно проверить до запуска
Agents API находится на этапе публичного бета-тестирования. В запросах необходимо передавать заголовок OpenAI-Beta: agents=v1, а в SDK OpenAI используется пространство имён beta.agents (Быстрый старт). В анонсе сказано, что OpenAI будет быстро менять продукт во время бета-тестирования вплоть до выхода общедоступной версии (анонс OpenAI). В таблице перечислены только ограничения, указанные в документации, и каждое из них влияет на мониторинг отзывов.
| Ограничение | Что сказано в документации | Влияние на мониторинг отзывов | Источник |
|---|---|---|---|
| Размещение данных и сроки их хранения | Данные размещаются только в США. Режим Zero Data Retention недоступен даже с самостоятельно размещённой песочницей. | Для публичных отзывов риск низкий. Если в отчёт попадают обращения в поддержку, сначала проверьте соответствие требованиям. | «Overview», «Your data» |
| Расписание не гарантирует точного времени запуска | Регулярные запуски выполняются с небольшой случайной задержкой. Если целевая сессия занята, задача ожидает её освобождения. | Отчёт приходит через несколько минут после 9:00. Не связывайте его с этапом, который должен запускаться в строго заданное время. | «Automations» |
| Доставлено — не значит выполнено | Запуск со статусом completed означает лишь, что доставка прошла успешно. | Ориентируйтесь на turn.completed или turn.failed и настройте оповещение при сбое. | «Automations», «Webhooks» |
| Учётные данные из хранилищ доступны только для подключений со стороны OpenAI | HTTP-подключения, инициированные из окружения, не используют учётные данные из хранилища. | MCP-сервер EveryInfra публичный, поэтому подходит источник по умолчанию — service. | «MCP connections» |
| Субагентам недоступны инструменты-функции | Субагенты наследуют MCP-инструменты и учётные данные, но не могут использовать инструменты-функции. | Данные возвращает только основной агент. Сохраняет их ваше приложение. | «Multi-agent» |
| Данные об использовании — это не счёт | Заполняется по мере возможности, может быть null, может меняться, нет счётчика записи в кеш. | Стоимость смотрите по счёту, а не по usage. | «Observability» |
| Ограничения по размеру | Общий размер инструкций и конфигурации инструментов — менее 4 МиБ. Размер каждого элемента входных данных — менее 4 МиБ. | Для длинных списков брендов отправляйте сводку за прошлую неделю, а не все данные за неё. | «Configuration», «Sessions» |
| Сбой при запуске MCP-сервера | При required: true неудачный запуск завершает ход ошибкой mcp_server_startup_failed (424). | Именно это нам и нужно: нет данных — нет отчёта. | «Errors» |
Чего эта схема не умеет и за чем нужно следить
Во-первых, эта схема читает публичные отзывы, но не отвечает на них. Ответы в App Store и Google Play публикуются через консоли разработчиков Apple и Google (Apple: «Ratings, reviews and responses»; Справка Google Play Console: «Ratings and reviews»). В ответах нашего API есть поле reply_text для Google Play и Trustpilot и поле vendor_response для Capterra. Поэтому отчёт может отметить, на какие отзывы уже ответили, но сам ответ по-прежнему пишет человек.
Во-вторых, не используйте эту схему для манипуляции отзывами. Окончательное правило Федеральной торговой комиссии США (FTC) от августа 2024 года запрещает поддельные отзывы и вознаграждения, предоставляемые в зависимости от того, является отзыв положительным или отрицательным. В правиле отдельно упомянуты поддельные отзывы, созданные ИИ (пресс-релиз FTC, 2024-08-14). Отчёт по низким оценкам нужен, чтобы замечать проблемы заранее, а не для того, чтобы влиять на сами отзывы.
В-третьих, задавайте порог низкой оценки отдельно для каждого сайта. На G2 есть половинные звёзды, поэтому низкими мы считаем оценки 2,5 и ниже. На остальных сайтах — 2 и ниже. Ни у одного из двух брендов за 30 дней не было отзывов на G2 с низкой оценкой. Если у вашего продукта так же, поднимите порог для G2 до 3 звёзд. Иначе в строке G2 всегда будет 0, и читатели перестанут на неё смотреть.
В-четвёртых, пусть субагент сначала применяет правила по ключевым словам. Модели отправляйте только те отзывы, которые правила не смогли классифицировать, например 22 отзыва из теста 2. Программный вызов инструментов предназначен именно для этого: он фильтрует результаты в коде и возвращает в контекст только нужную часть (анонс OpenAI; документация по программному вызову инструментов).
Последние изменения
Во время беты Agents API меняется раз в несколько недель. Ниже — изменения, которые влияют на эту схему, в хронологическом порядке.
| Дата | Изменение | Что это значит для этой схемы |
|---|---|---|
| 10 сентября 2026 г. | Публичная бета-версия с песочницами на стороне OpenAI, субагентами и сжатием контекста, без платы за платформу (история изменений; анонс на форуме) | Нужно поддерживать меньше кода агента, поэтому первую версию можно собрать быстро |
| 9 октября 2026 г. | Песочницы на стороне OpenAI тарифицируются только во время активных ходов; их можно предварительно прогревать (история изменений) | За время простоя монитора, запускающего скрипты, больше не нужно платить |
| 16 октября 2026 г. | Режим Ultrafast; в состав песочниц на стороне OpenAI входит Artifact SDK для таблиц и документов (история изменений) | Отчёт можно формировать как файл электронной таблицы, но для этого нужна песочница |
| 20 октября 2026 года | Кеширование промптов на 12 часов; запись в кеш тарифицируется в 2,5 раза дороже обычного ввода (история изменений; документация по кешированию промптов) | Между еженедельными запусками проходит намного больше 12 часов, поэтому кеширование помогает только внутри одного запуска |
| 26 октября 2026 г. | Вышла GPT-6.1 Terra (история изменений) | GPT-6.1 Terra стоит между luna и sol; недельная оценка в $0,2154 рассчитана для этой модели |
| 28 октября 2026 г. | Подписчики ChatGPT Pro и Business, отвечающие условиям, могут получить до $500 в месяц в виде API-кредитов (история изменений) | Небольшая команда может покрыть этими кредитами стоимость модели для этого монитора |
| 30 ноября 2026 г. | Плановое отключение Agent Builder, объявленное 3 июня 2026 г. (список устаревших функций) | Перенесите старые сценарии в Agents API или Agents SDK до этой даты. На форуме разработчиков сотрудники OpenAI также посоветовали пользователю использовать хранилища Agents API для сценариев с ротацией учётных данных (форум разработчиков OpenAI) |
FAQ
Как устроены тарифы OpenAI Agents API и есть ли плата за платформу?
Отдельной платы за платформу нет. В анонсе OpenAI сказано, что дополнительных сборов за Agents API нет: вы платите за токены и инструменты, которые используют агенты. На странице обзора указано, что модели тарифицируются по ставкам выбранной модели, инструменты — по стандартным ставкам, а песочницы на стороне OpenAI — по тарифам для контейнеров.
Без песочницы наша оценка стоимости модели на один бренд в неделю — от примерно $0,029 (gpt-6-luna) до примерно $2,9 (gpt-6-astra). Вызовы API данных увеличивают стоимость ещё на $0,006945. (Источник вопроса: подсказки Google «openai agents api pricing» и «openai agents api cost». Основание: анонс, обзор, цены.)
OpenAI Agents API или SDK: что выбрать?
Выбирайте Agents API, если хотите, чтобы цикл агента выполняла OpenAI, она же хранила сессии и запускала задачи по расписанию. Agents SDK нужен, если агент должен работать в вашем собственном приложении с вашим собственным хранилищем. В сравнении OpenAI трудоёмкость интеграции у Agents API — «низкая», у SDK — «средняя». Командам, которым нужен Zero Data Retention, пока придётся использовать SDK. (Источник вопроса: подсказка Google «openai agents api vs sdk». Основание: руководство по агентам, обзор.)
Может ли MCP-клиент OpenAI Agents SDK подключиться к тому же MCP-серверу EveryInfra?
Да. Согласно документации SDK по MCP, Streamable HTTP поддерживается. Используйте https://api.everyinfra.com/mcp со своим API-ключом: имя инструмента и параметры те же, что в этой статье. Разница в том, что расписание, повторные попытки и хранение учётных данных вам нужно реализовать самостоятельно. (Источник вопроса: подсказки Google «openai agents sdk mcp» и «openai agents sdk mcp server». Основание: документация Agents SDK по MCP, спецификация транспортов MCP.)
Какие разрешения нужны API-ключу для OpenAI Agents API?
В Быстром старте указаны api.agents.read и api.agents.write для сессий и api.responses.write для инференса модели. Для управления хранилищами добавьте api.vaults.read и api.vaults.write. Храните этот API-ключ OpenAI на своём сервере и не помещайте его ни в инструкции агента, ни в песочницу. (Источник вопроса: подсказка Google «openai agents api key». Основание: Быстрый старт, безопасность песочниц.)
Может ли функция computer use в OpenAI Agents API читать сайты с отзывами напрямую?
Функция computer use появилась в Agents API 29 сентября 2026 года. Агент может работать в браузере на стороне OpenAI, а ваше приложение обрабатывает запросы на подтверждение и вход в систему. Но постраничный просмотр отзывов в браузере требует песочницы, занимает больше времени и расходует намного больше токенов.
Кроме того, страницы Trustpilot, G2 и Capterra блокируют автоматизированный доступ: в нашем тесте обычные запросы curl ко всем трём сайтам вернули 403. Для структурированных отзывов API данных стабильнее и дешевле. (Источник вопроса: подсказка Google «openai agents api computer use». Основание: история изменений.)
Безопасно ли давать API-ключ ИИ-агенту?
В ветке r/artificial, посвящённой запуску, один из комментариев гласит: «Удачи с попытками доверить ИИ пароли и секреты». В архитектуре OpenAI хранилище не возвращает секрет при чтении. OpenAI добавляет аутентификацию MCP в момент подключения, поэтому код агента ключа не видит.
На странице о безопасности песочниц также сказано, что значения переменных окружения доступны коду агента. Поэтому храните ключ в хранилище, а не в env, и выдайте этому агенту отдельный ключ. (Источник вопроса: ветка на r/artificial. Основание: хранилища, безопасность песочниц.)
С чего начать
- Зарегистрируйтесь в EveryInfra, получите API-ключ и по инструкции из раздела Быстрый старт один раз вызовите бесплатный каталог. Убедитесь, что для
trustpilot/reviews,g2/reviews,capterra/reviews,app_store/reviewsиgoogle_play/reviewsуказаноavailable: true. Параметры и поля описаны на страницах возможностей: отзывы Trustpilot, отзывы G2, отзывы Capterra, отзывы App Store, отзывы Google Play. - Найдите ссылку или ID каждого бренда на каждом сайте и сведите их в одну таблицу. Обзоры сайтов — на страницах Trustpilot API, G2 API, Capterra API, App Store API и Google Play API.
- Прежде чем подключать Agents API, выполните по одному REST-запросу к API каждого сайта для своего бренда. Измерьте, сколько дней покрывает один вызов, и задайте
limit, как в тесте 1. - На стороне OpenAI создайте хранилище, агента и автоматизацию по примеру из шага 4. Один раз запустите её вручную и изучите отчёт и события сессии.
- Через две недели сравните стоимость модели со счётом. Если качество не падает, переведите субагентов на более дешёвую модель.
Чтобы превратить данные об отзывах в продукт для клиентов, прочитайте, как данные отзывов становятся платным продуктом. О похожем решении на основе запланированных задач ChatGPT читайте в статье Запланированные задачи ChatGPT как радар спроса. Все возможности и цены — на маркетплейсе данных.
Источники
- «Agents API overview», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/overview
- «Agents API quickstart», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/quickstart
- «Agents API architecture», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/architecture
- «Configuring agents», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/configuration
- «Sessions», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/sessions
- «Scheduled automations», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/sessions/automations
- «Webhooks», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/sessions/webhooks
- «Multi-agent», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/multi-agent
- «Vaults», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/tools/vaults
- «MCP connections», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/tools/mcp
- «OpenAI-hosted sandboxes», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/environments/openai-hosted
- «Sandbox security», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/environments/security
- «Errors and recovery», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/errors
- «Observability and usage», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents-api/observability
- «API pricing», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/pricing
- «Changelog» (записи с 2025-03-11 по 2026-10-30), документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/changelog
- «Deprecations» (Agent Builder), документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/deprecations
- «Agents» (сравнение вариантов среды выполнения агентов), документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/agents
- «Your data», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/your-data
- «Prompt caching», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/prompt-caching
- «Tool search», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/tools-tool-search
- «Programmatic tool calling», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/tools-programmatic-tool-calling
- «Compaction», документация OpenAI для разработчиков, дата обращения: 2026-11-01, https://developers.openai.com/api/docs/guides/compaction
- «Create automation» (справочник API), OpenAI, дата обращения: 2026-11-01, https://developers.openai.com/api/reference/resources/beta/subresources/agents/subresources/automations/methods/create
- «Agents» (справочник API), OpenAI, дата обращения: 2026-11-01, https://developers.openai.com/api/reference/resources/beta/subresources/agents
- «Introducing the Agents API», OpenAI, 2026-09-10, https://openai.com/index/introducing-the-agents-api/
- «Introducing the Agents API and hosted sandboxes», форум разработчиков OpenAI, 2026-09-10, https://community.openai.com/t/introducing-the-agents-api-and-hosted-sandboxes/1396481
- «Agent Builder MCP Secrets API», форум разработчиков OpenAI, дата обращения: 2026-11-01, https://community.openai.com/t/agent-builder-mcp-secrets-api/1368113
- «OpenAI launches Agents API public beta built on Codex harness», Reddit r/artificial, дата обращения: 2026-11-01, https://www.reddit.com/r/artificial/comments/1wctpbu/openai_launches_agents_api_public_beta_built_on/
- openai/openai-agents-python, GitHub, дата обращения: 2026-11-01, https://github.com/openai/openai-agents-python
- «Model context protocol» (документация Agents SDK), OpenAI, дата обращения: 2026-11-01, https://openai.github.io/openai-agents-python/mcp/
- «MCP specification: Transports» (2025-06-18), Model Context Protocol, https://modelcontextprotocol.io/specification/2025-06-18/basic/transports
- «RFC 6750: OAuth 2.0 Bearer Token Usage», IETF, 2012-10, https://datatracker.ietf.org/doc/html/rfc6750
- «Time Zone Database», IANA, дата обращения: 2026-11-01, https://www.iana.org/time-zones
- crontab(5), Linux man-pages, дата обращения: 2026-11-01, https://man7.org/linux/man-pages/man5/crontab.5.html
- «Ratings, reviews, and responses», Apple Developer, дата обращения: 2026-11-01, https://developer.apple.com/app-store/ratings-and-reviews/
- «View & analyze your app's ratings & reviews», Справка Google Play Console, дата обращения: 2026-11-01, https://support.google.com/googleplay/android-developer/answer/138230
- «Understanding and counting tokens», Справочный центр OpenAI, дата обращения: 2026-11-01, https://help.openai.com/en/articles/4936856-what-are-tokens-and-how-to-count-them
- «Federal Trade Commission Announces Final Rule Banning Fake Reviews and Testimonials», Федеральная торговая комиссия США, 2024-08-14, https://www.ftc.gov/news-events/news/press-releases/2024/08/federal-trade-commission-announces-final-rule-banning-fake-reviews-testimonials
- «Notion Reviews», Trustpilot, дата обращения: 2026-11-01, https://www.trustpilot.com/review/notion.so
- «Notion Reviews», G2, дата обращения: 2026-11-01, https://www.g2.com/products/notion/reviews
- «Notion», Capterra, дата обращения: 2026-11-01, https://www.capterra.com/p/186596/Notion/
- Страница приложения Notion, App Store, дата обращения: 2026-11-01, https://apps.apple.com/us/app/notion-notes-tasks-ai/id1232780281
- Страница приложения Notion, Google Play, дата обращения: 2026-11-01, https://play.google.com/store/apps/details?id=notion.id
- Каталог данных EveryInfra (trustpilot), EveryInfra, дата обращения: 2026-11-01, https://api.everyinfra.com/api/v1/social/catalog?platform=trustpilot
- Каталог данных EveryInfra (полный), EveryInfra, дата обращения: 2026-11-01, https://api.everyinfra.com/api/v1/social/catalog
- «ClickUp», Capterra, дата обращения: 2026-11-01, https://www.capterra.com/p/158833/ClickUp/
- Страница приложения ClickUp, Google Play, дата обращения: 2026-11-01, https://play.google.com/store/apps/details?id=co.mangotechnologies.clickup
- «iPhone Duo arrives at Apple Store locations worldwide», Apple Newsroom, 2026-10, https://www.apple.com/newsroom/2026/10/iphone-duo-arrives-at-apple-store-locations-worldwide/
Справка BL-59