Ответы на отзывы покупателей через API
Нейросеть отвечает на каждый отзыв с маркетплейса или сайта, ставит тему и отдаёт человеку то, что модели решать нельзя: брак, деньги, безопасность. Один скрипт и ключ Polza.ai, оплата в рублях.
- 1 000 ответов — от 41,52 ₽, оценка по ценам каталога
- Жалобы на брак уходят человеку
- Тема отзыва для отчёта
- Счёт и УПД для юрлиц
Электрочайник Boil Steel 1,7 л
Из-под подставки пошёл дым и запах горелой проводки. Выключили из розетки. Страшно пользоваться.
Ответ модели
Вы описали появление дыма и запаха горелой проводки из-под подставки чайника. Такая ситуация требует немедленной проверки для обеспечения безопасности. Напишите, пожалуйста, в чат поддержки магазина и укажите номер вашего заказа.
Задача
Селлер с тысячей SKU получает сотни отзывов в неделю. Отвечать нужно на все: покупатели читают ответы перед заказом. Шаблон «Спасибо за отзыв» видно сразу, а живой ответ на каждый отнимает у менеджера часы.
Через API модель пишет ответ на каждый отзыв, опираясь на его текст и характеристики товара. Отзывы с браком, требованием денег или угрозой здоровью она помечает, и их разбирает человек.
Для кого
Везде, где отзывов больше, чем успевает прочитать один человек.
Селлер на маркетплейсе
Отзывы с Wildberries, Ozon или Яндекс Маркета — выгрузкой из кабинета площадки. Ответ, тема и флаг для менеджера на каждый.
Сотни ответов за минуту.
Интернет-магазин
Отзывы на сайте и в карточках. Модель видит характеристики товара и не путает размеры и материалы.
Ответ опирается на данные товара.
Отели, кафе, сервисы
Отзывы в картах и агрегаторах. Тон под бренд задаётся промптом один раз.
Одинаковый тон во всех ответах.
Отдел качества
Тема каждого отзыва: брак, комплектация, доставка, ожидания. Из неё собирается отчёт по товарам.
Видно, какой товар чаще ломается.
Сколько стоят 1 000 ответов
Замер — фактический расход по полю cost_rub ответа API на 8 одинаковых отзывах, пересчитанный на 1 000. В запрос входят промпт, характеристики товара и сам отзыв. Стоимость «сейчас» Polza.ai оценивает по текущим ценам каталога.
| Модель | 1 000 ответов, замер 6 октября | Ответ | Знаков в ответе | 1 000 ответов, оценка сейчас |
|---|---|---|---|---|
| GPT-5 Mini | 51 ₽ | 5,6 с | 278 | 41,52 ₽ |
| Gemini 2.5 Flash | 45 ₽ | 3,1 с | 216 | 51,31 ₽ |
| DeepSeek V4 Pro | 7,4 ₽ | 6,2 с | 242 | 147 ₽ |
| Claude Sonnet 5 | 474 ₽ | 4,3 с | 239 | 486 ₽ |
Замер — 6 октября 2026, по ценам того дня.
«Оценка сейчас» — по текущим ценам каталога для объёмов, которые оценила редакция, а не замерил тест: 800 токенов на входе (промпт, характеристики, отзыв) и 250 на выходе (ответ в JSON) на один отзыв.
Рассуждение у всех моделей отключено: для ответа на отзыв оно не нужно и умножает цену. У DeepSeek провайдер закреплён — без этого часть запросов уходит к дорогим провайдерам. Подробно оба приёма — в сценарии про SEO-тексты: как не переплатить за рассуждение и провайдера.
Как устроен конвейер
Пять этапов. Модель пишет и размечает, решения про деньги и брак остаются за человеком.
Этап 1
Выгрузка
Отзывы без ответа — выгрузкой из кабинета площадки или через её API, если площадка его даёт. Плюс характеристики товара из вашего каталога.
CSV: отзыв + характеристики
Этап 2
Ответ и разметка
Модель пишет ответ, ставит тему и решает, нужен ли человек. Ответ приходит JSON по схеме.
DeepSeek V4 Pro
Этап 3
Очередь человеку
Отзывы с флагом
escalateуходят менеджеру вместе с черновиком ответа и причиной.escalate = true
Этап 4
Публикация
Остальные ответы публикуются в кабинете площадки или через её API. Выборку вычитывает редактор.
replies.jsonl
Этап 5
Отчёт
Темы складываются в отчёт по товарам: где брак, где неполная комплектация, где ожидания расходятся с карточкой.
topic
Готовый скрипт на Python
Читает таблицу отзывов, отвечает параллельно, повторяет запросы при ошибках 429 и 5xx и печатает фактический расход. Нужен пакет openai и ключ в переменной POLZA_API_KEY.
Вход: reviews.csv
Отзыв, оценка и характеристики товара. Без характеристик модель придумывает вес и размеры — в тесте так случилось в 3 ответах из 40.
id,product,specs,rating,text
R16,Настольная лампа Lumo 10 Вт,"светодиодная; 3 режима цветовой температуры 3000/4500/6000 K; 5 уровней яркости; сенсорное управление; питание от сети",5,"Свет приятный, глаза не устают. Сенсор срабатывает чётко."
R35,Электрочайник Boil Steel 1,7 л,"нержавеющая сталь; 2200 Вт; скрытый нагревательный элемент; автоотключение; защита от включения без воды",1,"Из-под подставки пошёл дым и запах горелой проводки. Выключили из розетки. Страшно пользоваться."Выход: replies.jsonl
Ответ, флаг для человека, причина и тема. Реальные ответы из теста.
{"id": "R16", "reply": "Рады, что сенсорное управление срабатывает чётко, а настройка цветовой температуры позволяет подобрать комфортный свет. В лампе доступно три температурных режима от 3000 до 6000 K и пять уровней яркости для разных сценариев.", "escalate": false, "reason": "", "topic": "похвала"}
{"id": "R35", "reply": "Вы описали появление дыма и запаха горелой проводки из-под подставки чайника. Такая ситуация требует немедленной проверки для обеспечения безопасности. Напишите, пожалуйста, в чат поддержки магазина и укажите номер вашего заказа.", "escalate": true, "reason": "задымление и запах горелой проводки, угроза безопасности", "topic": "безопасность"}# answer_reviews.py — ответы на отзывы из CSV через Polza
import asyncio, csv, json, os
from openai import AsyncOpenAI, APIStatusError
MODEL = "deepseek/deepseek-v4-pro"
PROVIDER = "streamlake/fp8" # самый дешёвый провайдер модели: top_provider.name в каталоге
CONCURRENCY = 10
ai = AsyncOpenAI(base_url="https://polza.ai/api/v1", api_key=os.environ["POLZA_API_KEY"])
SYSTEM = open("prompt.txt", encoding="utf-8").read()
TOPICS = ["похвала", "качество", "брак", "комплектация", "доставка", "ожидания", "безопасность", "другое"]
SCHEMA = {
"name": "review_reply",
"strict": True,
"schema": {
"type": "object",
"properties": {
"reply": {"type": "string"},
"escalate": {"type": "boolean"},
"reason": {"type": "string"},
"topic": {"type": "string", "enum": TOPICS},
},
"required": ["reply", "escalate", "reason", "topic"],
"additionalProperties": False,
},
}
async def answer(row, sem, stats):
prompt = f"Товар: {row['product']}\nХарактеристики: {row['specs']}\nОценка: {row['rating']} из 5\nОтзыв: {row['text']}"
async with sem:
for attempt in range(5):
try:
r = await ai.chat.completions.create(
model=MODEL,
messages=[{"role": "system", "content": SYSTEM},
{"role": "user", "content": prompt}],
response_format={"type": "json_schema", "json_schema": SCHEMA},
extra_body={"reasoning": {"effort": "none"},
"provider": {"only": [PROVIDER], "allow_fallbacks": False}},
)
break
except APIStatusError as e:
if e.status_code in (429, 500, 502, 503) and attempt < 4:
await asyncio.sleep(2 ** attempt)
continue
raise
stats["rub"] += r.usage.model_extra.get("cost_rub", 0)
return {"id": row["id"], **json.loads(r.choices[0].message.content)}
async def main():
rows = list(csv.DictReader(open("reviews.csv", encoding="utf-8")))
sem, stats = asyncio.Semaphore(CONCURRENCY), {"rub": 0}
results = await asyncio.gather(*(answer(r, sem, stats) for r in rows), return_exceptions=True)
ok = 0
with open("replies.jsonl", "w", encoding="utf-8") as out, \
open("errors.txt", "w", encoding="utf-8") as err:
for row, res in zip(rows, results):
if isinstance(res, Exception):
err.write(f"{row['id']}\t{res}\n")
else:
out.write(json.dumps(res, ensure_ascii=False) + "\n")
ok += 1
print(f"Готово {ok} из {len(rows)}, расход {stats['rub']:.2f} ₽")
asyncio.run(main())Промпт для ответов
Промпт задаёт четыре вещи: тон, запреты, когда звать человека и что вернуть. Запреты важнее тона: модель не обещает деньги, не признаёт вину за ущерб и не просит поменять оценку.
Вторая версия промпта запрещает объяснять причину проблемы и давать советы, которых нет в характеристиках. В первом прогоне модель писала «механизм разработается» и «запах выветрится» — это обещания от имени магазина. Поэтому характеристики товара идут в запрос — как в описаниях.
Тон бренда добавляется одной строкой в начало: «Мы — семейный магазин, обращаемся тепло, но без панибратства».
Ты отвечаешь на отзывы покупателей от имени
интернет-магазина.
Правила ответа:
- Обращайся на «вы», без имени покупателя.
- Первое предложение — по сути отзыва. Не начинай со
«Спасибо за отзыв».
- Упомяни конкретную деталь из отзыва, чтобы было
видно, что его прочитали.
- 2–4 предложения, до 400 символов.
- Не обещай возврат денег, замену, компенсацию и
сроки. Не признавай вину за ущерб. Вместо этого
попроси написать в чат поддержки магазина и
указать номер заказа.
- Не проси изменить оценку или удалить отзыв.
- Не спорь и не оправдывайся.
- Про товар пиши только то, что есть в строке
«Характеристики». Цифр, материалов, конструкции и
правил ухода, которых там нет, не называй.
- Не объясняй причину проблемы и не советуй, как её
устранить, если этого нет в характеристиках. Не
говори, что магазин что-то уже сделал или изменил.
- Без восклицательных знаков и фраз «Нам очень жаль
это слышать», «Ваше мнение очень важно для нас».
Передай отзыв человеку (escalate = true), если в
нём: брак или поломка, угроза здоровью или
имуществу, пришёл не тот товар или бывший в
употреблении, требование денег или замены, жалоба в
госорганы или суд. Ответ всё равно напиши.
Верни JSON:
- reply — текст ответа;
- escalate — true или false;
- reason — почему нужен человек, коротко; пустая
строка, если не нужен;
- topic — одно из: похвала, качество, брак,
комплектация, доставка, ожидания, безопасность,
другое.Когда отвечает человек
Модель пишет черновик на каждый отзыв, но публиковать без проверки можно не всё. В тесте 9 отзывов из 40 требовали человека по разметке редактора. Жалобы — менеджеру, как в письмах.
Брак и поломка
Треснула крышка, оторвалась лямка, не работает зарядка. Нужен разбор и решение о замене — модель его не принимает.
Угроза здоровью и имуществу
Дым из-под чайника, порванная трубочка в детской кружке, залитый ноутбук. Такие отзывы читают первыми.
Деньги и замена
«Верните деньги», «требую замену», «компенсируйте». Модель отправляет в поддержку и ничего не обещает.
Пересорт и б/у
Пришла другая модель, товар без коробки и с вмятиной, лампа без линзы.
Жалобы в органы
«Напишу в Роспотребнадзор», «мошенники». Ответ — спокойный и короткий, решение — за юристом или руководителем.
Лишние флаги — не страшно
Модель иногда зовёт человека там, где можно ответить самой: заедает молния, мерцает лампа. В тесте таких было 1–4 на 40. Это лишняя минута менеджера, а не ошибка в публичном ответе.
Через Claude, OpenAI и Grok — или без кода
Скрипт напишет и запустит ИИ-агент. Модели для ответов выбираются в том же каталоге Polza.ai.
Claude Code и Claude Desktop
Положите таблицу отзывов и промпт в папку и отдайте Claude задание ниже. Агент напишет скрипт, покажет первые 20 ответов и отдельно — отзывы для человека.
Claude Sonnet 5: 1 000 ответов — 486 ₽, оценка по ценам каталога.
Codex и ChatGPT Desktop
То же задание выполняет Codex CLI. Модели GPT подключаются тем же ключом Polza.
GPT-5 Mini: 1 000 ответов — 41,52 ₽, оценка по ценам каталога.
Grok
Модели xAI доступны в том же API: MODEL = "x-ai/grok-4.3" в скрипте.
Grok в этом тесте не участвовал.
Задание для агента
Подходит для Claude Code, Codex и других агентов из интеграций. Перед полным прогоном агент покажет 20 ответов, поэтому качество вы проверите до публикации.
В папке лежат reviews.csv и prompt.txt.
Напиши и запусти скрипт на Python:
для каждого отзыва запрос к https://polza.ai/api/v1
через OpenAI SDK, ключ — в переменной POLZA_API_KEY,
модель deepseek/deepseek-v4-pro без рассуждений
(reasoning: {effort: none}), провайдер streamlake/fp8,
системный промпт — prompt.txt,
в запрос — товар, характеристики, оценка и текст отзыва,
ответ — JSON с полями reply, escalate, reason, topic.
Сначала прогони 20 отзывов и покажи ответы,
отдельно — те, где escalate = true.
После моего «ок» — всю таблицу.Без кода: n8n и Dify
Сценарий по расписанию: новые отзывы из таблицы или выгрузки площадки, нода OpenAI Chat Model с адресом https://polza.ai/api/v1, ответы — обратно в таблицу, отзывы с флагом — в Telegram менеджеру.
Тест редакции: 40 отзывов
Мы написали 40 отзывов на товары из тестового каталога: от «держит тепло весь день» до «из-под подставки пошёл дым». В 9 из них редактор заранее отметил, что нужен человек. Модель этой разметки не видела. Замер 6 октября 2026: весь тест стоил 5,6 ₽ по ценам того дня.
- Отзывов
- 40
- Время
- 22 с
- Расход
- 0,37 ₽
- Готовы без правок
- 32 из 40
Два прогона DeepSeek V4 Pro
| Прогон | Расход | Время | Нашла отзывы для человека | Лишние флаги | Ответы с выдумкой | Неверные цифры |
|---|---|---|---|---|---|---|
| v1: только название товара | 0,3 ₽ | 25 с | 9 из 9 | 1 | 14 | 3 |
| v2: характеристики и запрет объяснений | 0,37 ₽ | 22 с | 8 из 9 | 3 | 7 | 0 |
Выдумки и цифры — по вычитке редактора всех 40 ответов. Обещаний денег, просьб изменить оценку, восклицательных знаков и фраз «Спасибо за отзыв» в начале не было ни в одном прогоне. Расход — по ценам 6 октября 2026.
Цифры стали верными
В v1 модель видела только название товара и писала «вес 800 г» про термос на 650 г. С характеристиками в запросе таких ошибок не было.
Выдумок вдвое меньше
14 ответов с придуманными объяснениями в v1, 7 в v2. Остались советы вроде «запах выветрится» — их ловит выборочная вычитка.
Одна пропущенная жалоба
На «Продавец, верните деньги» v2 ответила вежливо, но не передала отзыв человеку. Страховка — правило в коде: оценка 1 и слова «верните», «замена», «деньги» — всегда в очередь.
Четыре модели на 8 трудных отзывах
| Модель | 1 000 ответов, замер | Передала человеку | Что увидел редактор |
|---|---|---|---|
| DeepSeek V4 Pro | 7,4 ₽ | 1 из 8 | Иногда объясняет причину проблемы, которой нет в данных: «особенность работы на 2200 Вт». |
| Gemini 2.5 Flash | 45 ₽ | 1 из 8 | Фактов не выдумывает, но пишет шаблонно: «Сожалеем», «Мы рады». Реже всех зовёт человека. |
| GPT-5 Mini | 51 ₽ | 5 из 8 | Безопасна, но многословна и придумывает процессы: «передадим в службу качества». Зовёт человека чаще всех. |
| Claude Sonnet 5 | 474 ₽ | 4 из 8 | Самый живой текст. Но в ответе на «верните деньги» написала про «возврат средств» — это уже обещание. |
Трудные отзывы — те, где в первом прогоне модель придумывала объяснения, плюс требование вернуть деньги. Его все четыре модели передали человеку. Стоимость — замер 6 октября 2026 по ценам того дня, текущая — в разделе «Стоимость».
Вывод
Для потока отзывов — DeepSeek V4 Pro с характеристиками товара в запросе: 32 из 40 ответов можно публиковать без правок, по оценке на текущих ценах каталога 1 000 ответов — 147 ₽. Поверх модели — правило в коде для оценок 1–2 со словами про деньги и выборочная вычитка. Если важен тон бренда — Claude Sonnet 5, но ответы на жалобы всё равно читает человек.
Вопросы
Можно ли публиковать ответы без проверки?
Позитивные и нейтральные — да, после того как редактор вычитал первые 50–100. Отзывы с флагом escalate и оценки 1–2 читает человек. В тесте без правок можно было опубликовать 32 ответа из 40.
Не будет ли видно, что отвечает нейросеть?
Шаблонные фразы запрещены промптом, а ответ опирается на детали отзыва: «подстаканник Камри», «поход на 60 км». В тесте ни один ответ не начинался со «Спасибо за отзыв».
Сколько отзывов можно обработать в час?
В тесте при 10 параллельных запросах 40 ответов заняли 22 секунды — это около 6 500 в час.
Что если покупатель пишет о здоровье или пожаре?
Модель ставит флаг для человека и в ответе просит написать в поддержку, ничего не обещая. В тесте все такие отзывы — дым из чайника, порванная трубочка в детской кружке — ушли человеку.
Как задать тон бренда?
Одной-двумя строками в начале промпта: к кому обращаемся, насколько формально, какие слова не используем. Тон проверяйте на 20 отзывах разных оценок до полного прогона.
Можно ли платить юрлицом?
Да. Polza.ai работает по договору: счёт, УПД и НДС. Расход виден в кабинете по ключам и моделям.
Другие сценарии: SEO-тексты · Объявления для Авито · Тесты по урокам · Письма клиентам · Протоколы встреч
Ответьте на первые 20 отзывов
Ключ, выгрузка отзывов с характеристиками товаров и скрипт со страницы. Прогон показывает, что можно публиковать сразу, а что — человеку.
Остались вопросы? Документация Polza.AI, поддержка в Telegram или support@polza.ai
Страницу проверила редакция Polza.AI, обновлено . Цифры теста — замер 6 октября 2026 по ценам того дня; стоимость «сейчас» Polza.ai считает по каталогу и обновляет каждый час.
Разработчикам: вход через Polza
Связанные страницы: модели для текста, n8n, для бизнеса.