Наша собственная статистика посещений включена всегда. Google Analytics помогает нам понять, как пользуются нашими публичными страницами (но не вашим рабочим пространством после входа), и включается только с вашего разрешения. См. нашу политику конфиденциальности.

Разделы · 22
  1. 01Что умеет API веб-поиска DeepSeek: по документации на 3 ноября
  2. 02Цены на DeepSeek Search API: что стало платным 1 ноября
  3. 03Веб-результаты DeepSeek Search API и данные внутри платформ: сравнительная таблица полей
  4. 04Время снимка и время вызова: цифры одной заметки меняются
  5. 05Критерии, которые мы записали до теста
  6. 06Схема: один вопрос о продукте, два маршрута данных
  7. 07Определения инструментов: четыре функции в полном JSON (пример конфигурации)
  8. 08Код цикла: обработка tool_calls DeepSeek на Python (пример конфигурации)
  9. 09Один реальный цикл: что отправляет модель и что приходит в ответ
  10. 10Тест 1: что вернуло каждое приложение
  11. 11Тест 2: при сортировке по голосам свежих записей Zhihu — 0 из 20
  12. 12Тест 3: какие записи отфильтровать в первую очередь
  13. 13Как выглядит ответ: образец формата на основе реальных записей
  14. 14Тест 4: сколько токенов можно сэкономить до передачи модели
  15. 15Стоимость: DeepSeek Search API по $0.75 за 1 000, Xiaohongshu по $0.005556 за вызов
  16. 16Как ограничить вызовы Xiaohongshu: три плана
  17. 17Другой путь: DeepSeek Harness с удалённым MCP-сервером (пример конфигурации)
  18. 18Что не работает и за чем следить
  19. 19Последние изменения
  20. 20FAQ
  21. 21С чего начать
  22. 22Источники

DeepSeek Search API и данные непосредственно из китайских соцсетей

DeepSeek Search API стоит $0.75 за 1 000 вызовов и не возвращает лайки и комментарии. Добавьте данные Xiaohongshu, Zhihu и Weibo: 8 реальных вызовов обходятся в $0.014.

Иллюстрация: длинный светло-серый стол. Слева — прозрачный каркасный глобус, по поверхности которого плавают пустые карточки веб-страниц; они обозначают открытый интернет. Справа — три высоких закрытых шкафа. В каждом есть небольшое окошко со значком сердца, облачка реплики или закладки; они обозначают лайки, комментарии и сохранения внутри каждого приложения. В центре на пюпитре лежит раскрытый блокнот. Бирюзовые закладки на его страницах тонкими нитями связаны и с глобусом, и со шкафами, а от ящика одного шкафа к пюпитру тянется бирюзовая трубка. Картинка показывает, что источники ответа берутся и из интернета, и из данных внутри приложений.

17 октября 2026 года DeepSeek открыла всем пользователям API два новых эндпоинта: Search и Fetch. Каждый стоит $0.75 за 1 000 успешных запросов. Результат Search содержит заголовок, URL, два саммари, текст страницы, название сайта, дату и две оценки. Лайков, комментариев и сохранений в нём нет (руководство DeepSeek по Search и Fetch).

Мы запустили в EveryInfra xiaohongshu/search, zhihu/search и weibo/search по одной теме, «робот-пылесос», 3 ноября с 00:15 до 00:19 SGT. Во всех 98 записях были число лайков, число комментариев и время публикации. На Xiaohongshu 12 из 33 записей к тому же содержали признак платного контента бренда. Команде бренда, которая спрашивает «на что жалуются китайские покупатели», нужны именно эти поля, а в результатах веб-поиска их нет.

Стоимость определяет один явный фактор. Одна страница поиска Xiaohongshu стоит $0.005556, это в 7.4 раза дороже одного вызова DeepSeek Search. С лимитами вызовов из этой статьи стоимость данных на 1 000 вопросов снижается с $20.89 до $4.53.

Эта статья предназначена для команд за пределами Китая, которые продают на китайском рынке или конкурируют с китайскими брендами. Типичные примеры: европейский бренд бытовой техники, американский производитель роботов-пылесосов или агентство, которое отслеживает для клиента обсуждения среди китайских потребителей. Вам нужен небольшой ассистент, который отвечает на вопросы о продукте со ссылками на источники. У DeepSeek теперь есть собственный эндпоинт веб-поиска, так что с открытым вебом всё просто. В статье показано, что делает этот эндпоинт, чего он не возвращает и как добавить данные непосредственно из трёх китайских приложений. Кроме того, указана стоимость каждого вызова.

Все факты о DeepSeek в статье взяты с api-docs.deepseek.com по состоянию на 3 ноября 2026 г. У нас нет API-ключа DeepSeek, поэтому настройка на стороне DeepSeek — это пример конфигурации, а не тест. Все цифры EveryInfra взяты из необработанных ответов реальных вызовов.

Ранее мы опубликовали статью «DeepSeek V4 и Claude Code для очистки комментариев». В ней DeepSeek использовалась как модель в Claude Code, и мы измеряли стоимость очистки комментариев. Эндпоинтам Search и Fetch там был посвящён лишь один короткий раздел. Эта статья начинается с самого эндпоинта Search и разбирает, как распределить задачи между ним и источниками данных внутри платформ.

Иллюстрация в два слоя. Верхний слой — ряды парящих пустых карточек веб-страниц, похожих на поисковый индекс. Под ними тонкий стеклянный пол. Под стеклом много маленьких карточек, и на каждой есть сердечко, облачко реплики, закладка и маленький значок часов. На стекле лежит бирюзовая лупа, и под ней значки на нижних карточках видны чётко. На верхних карточках таких значков нет.
Веб-поиск видит верхний слой страниц. Лайки, комментарии, сохранения и время публикации доступны во внутреннем слое данных каждого приложения.

Что умеет API веб-поиска DeepSeek: по документации на 3 ноября

Прежде чем распределять работу, нужно чётко понимать возможности DeepSeek. Руководство по Search и Fetch называет оба эндпоинта «raw JSON APIs». Они используют тот же API-ключ, что и чат-модели, с заголовком Authorization: Bearer. Search принимает один запрос и возвращает структурированные результаты из собственной поисковой системы DeepSeek.

Fetch принимает один URL и возвращает содержимое страницы в формате Markdown. Ни один из эндпоинтов не обращается к модели, поэтому их использование не тарифицируется по токенам. Каждую строку таблицы ниже мы сверили со справочником Search API и справочником Fetch API.

ПунктПоисковый запросFetch
Эндпоинт (хост api.deepseek.com)POST /v1/tools/searchPOST /v1/tools/fetch
Поля запросаquery (от 1 до 128 символов, поддерживает site:, lang:, after:, before: и другие операторы), count (от 1 до 50, по умолчанию 10), ori_question, localization (IP-адрес), need_contenturl (до 8 192 символов, http или https, без имени пользователя и пароля)
Реагированиемассив results; у каждого результата 10 полей: rerank_score, title, url, snippet, summary, content, site_name, site_icon, date, authoritytitle, content (Markdown)
Цена$0.75 за 1 000 успешных запросов; count не влияет на ценуsame
Плата не списываетсясбои, пустой массив results, тайм-аутысбои, отсутствие содержимого страницы, тайм-ауты
Лимит запросов100 запросов в секунду на аккаунт25 запросов в секунду на аккаунт плюс лимит на каждый целевой домен

Для разработчиков важны три детали. Во-первых, summary содержит длинное саммари для модели, обычно от 600 до 800 символов. snippet содержит короткое описание для пользовательского интерфейса, от 100 до 200 символов. Десять результатов с полными саммари добавляют в контекст от 6 000 до 8 000 символов на каждый поиск.

Во-вторых, date — время публикации страницы в UTC; если оно неизвестно, значение равно null. authority — оценка от 0 до 4, где -1 означает «неизвестно». rerank_score — оценка релевантности от 0 до 3; хорошим результатом руководство считает 1,5 и выше.

В-третьих, Search передаёт query поисковому сервису как есть. Поэтому в запросе можно написать site:xiaohongshu.com. Но число результатов зависит от того, сколько страниц этого сайта есть в индексе DeepSeek. Кроме того, индекс хранит каждую страницу в том виде, в каком она была при обходе. Почему это важно для контента приложений, показано ниже в разделе «Время снимка и время вызова».

Ошибки руководство тоже описывает понятно. Формат совпадает с форматом ошибок OpenAI, а поле param всегда равно null. После паузы можно повторить запрос при ошибках 408, 429 и 5xx. Код 402 означает, что на балансе недостаточно средств.

При других ошибках 4xx не следует повторять запрос, не изменив его. EveryInfra работает похожим образом. Если передать недопустимое значение, EveryInfra возвращает ошибку 422, в которой указаны поле с ошибкой и допустимые значения. Реальный пример приведён в разделе «Один реальный цикл запроса и ответа».

Скриншот раздела Billing англоязычного руководства DeepSeek по Search и Fetch. Бирюзовой рамкой выделена таблица цен: Search и Fetch стоят по $0.75 за 1 000 успешных запросов. В абзаце ниже сказано, что запрос оплачивается, только если он возвращает HTTP 200 и даёт результат, что неудачные запросы, пустые результаты и тайм-ауты не оплачиваются и что count не влияет на цену. Второй бирюзовой рамкой выделено примечание: серверные вызовы инструментов из DeepSeek Harness, Claude Code или Codex уже обращаются к Search и Fetch, пока бесплатны, а оплата за каждый запрос начинается в 00:00 по пекинскому времени 1 ноября 2026 года.
Таблица цен и примечание об оплате с 1 ноября в руководстве DeepSeek (бирюзовыми рамками отмечены цитируемые фрагменты). Скриншот сделан в 00:45 SGT 3 ноября 2026 г. Скриншот руководства DeepSeek по Search и Fetch

Цены на DeepSeek Search API: что стало платным 1 ноября

Сама цена устроена просто. На англоязычной странице тарифов Search и Fetch стоят $0.75 за 1 000 успешных запросов. На китайской странице за ту же единицу указано 5 юаней. count меняет только количество результатов, но не цену. Поэтому один запрос на 50 результатов стоит столько же, сколько один запрос на 10 результатов. В пересчёте на 1 000 результатов это $0.015 при count=50 и $0.075 при count=10.

Одно предложение в примечании к выпуску от 17 октября легко пропустить. Claude Code, Codex и DeepSeek Harness при работе с DeepSeek API уже вызывают Search и Fetch через серверные инструменты. Эти вызовы были бесплатными, а оплата за каждый запрос начинается в 16:00 UTC 31 октября 2026 г. Это 00:00 1 ноября и в Пекине, и в Сингапуре.

3 ноября страница тарифов и руководство всё ещё указывали рядом с этой датой формулировку «currently free of charge». Дата прошла, так что эти вызовы уже оплачиваются. Если ваша команда использует DeepSeek внутри Claude Code (руководство DeepSeek по Claude Code), каждый веб-поиск теперь добавляет к стоимости токенов $0.75 за 1 000.

Стоит посмотреть и на цены моделей, потому что результаты поиска попадают в модель. На той же странице тарифов deepseek-flash теперь указывает на DeepSeek-V4.1-Flash-1017. В пиковые часы входные токены при промахе кеша стоят $0,30 за миллион, выходные — $1,20. Вне пиковых часов цены вдвое ниже.

Пиковые часы: с 01:00 до 04:00 и с 06:00 до 10:00 UTC по будням. Для команды в Лондоне это раннее и позднее утро. Для команды в Нью-Йорке пиковые часы приходятся на ночь. Размер контекстного окна — 1 млн токенов, обе модели поддерживают вызовы инструментов и вывод в JSON.

ПунктЕдиницаUSD (английская страница)Подробнее
Searchза 1 000 успешных запросов$0.752026-11-03
Fetchза 1 000 успешных запросов$0.752026-11-03
Вход deepseek-flash (промах кеша, пиковые часы)за 1 млн токенов$0.302026-11-03
Выход deepseek-flash (пиковые часы)за 1 млн токенов$1.202026-11-03
EveryInfra zhihu/searchза 1 000 успешных запросов$0.5562026-11-03
EveryInfra weibo/searchза 1 000 успешных запросов$0.8062026-11-03
EveryInfra xiaohongshu/searchза 1 000 успешных запросов$5.5562026-11-03

Три цены EveryInfra взяты из поля price_usd бесплатного каталога. Правило то же, что у DeepSeek: сбои и пустые результаты бесплатны.

Веб-результаты DeepSeek Search API и данные внутри платформ: сравнительная таблица полей

Разницу лучше всего видно, если поставить поля рядом. У результата DeepSeek Search 10 полей. Они помогают найти страницу, дать модели выжимку и показать результат пользователю. Результаты поиска внутри приложения отвечают на другой вопрос: как пользователи этого приложения отреагировали на пост? В них тоже есть заголовок, текст, ссылка и время публикации.

Кроме того, в них есть лайки, комментарии, сохранения и репосты, а также признаки автора и контента. Левый столбец ниже составлен по документации DeepSeek. Остальные три столбца показывают поля, которые присутствовали в наших реальных ответах 3 ноября.

ВопросDeepSeek Search (поля из документации)`xiaohongshu/search``zhihu/search``weibo/search`
О чём пост?title, summary, contenttitle, text (около 60 символов)title, texttext
Где его открыть?urlurl (с токеном доступа)urlurl
Когда это было опубликовано?date (может быть null)posted_at, updated_atposted_atposted_at
Сколько человек поставили лайк или сохранили публикацию?nonelike_count, collect_countlike_count, collect_countlike_count
Насколько активно идёт обсуждение?nonecomment_count, share_countcomment_countcomment_count, repost_count
Кто автор?site_name, authorityauthor_name, author_idauthor_name, author_follower_count, текст значкаauthor_follower_count, author_verified, причина верификации
Это платный брендовый контент?noneis_cooperation_note, is_goods_notenoneнет (используйте причину верификации)
Тепловая карта из четырёх столбцов и восьми строк. Первый столбец, DeepSeek Search по списку полей из документации, показывает «нет в документации» для лайков, комментариев, сохранений, отправок или репостов, числа подписчиков автора, верификации автора и отметки платного контента, а для времени публикации — «есть в документации, может быть null». Второй столбец, xiaohongshu/search с 33 записями, показывает 100% для лайков, комментариев, сохранений, отправок, времени публикации и отметки платного контента и 0% для числа подписчиков и верификации автора. Третий столбец, zhihu/search с 40 записями, показывает 100% для лайков, комментариев, времени публикации и числа подписчиков автора, 57% для сохранений и 0% для отправок, верификации и отметки платного контента. Четвёртый столбец, weibo/search с 25 записями, показывает 100% для лайков, комментариев, репостов, времени публикации, числа подписчиков и верификации автора и 0% для сохранений и отметки платного контента. Заголовок: в результатах веб-поиска нет показателей вовлечённости, а в результатах поиска внутри платформ они есть.

У этой диаграммы есть два ограничения. Во-первых, «нет в документации» не означает, что DeepSeek никогда не сможет увидеть эти числа. Поле content содержит текст страницы. Если в нём написано «12 000 лайков», модель может прочитать этот текст.

Но это текст со страницы, а не поле, по которому можно сортировать или значения которого можно суммировать. Кроме того, это значение зафиксировано на момент обхода. Во-вторых, показатель 0% в столбце приложения может объясняться двумя причинами. Некоторые поля отсутствуют в каталоге для соответствующей возможности, например поле отправок в поиске Zhihu.

Другие поля в каталоге есть, но в этот раз не вернулись. Каталог указывает author_is_verified для поиска Xiaohongshu, но ни в одной из наших 33 записей его не было. Поэтому пишите код по response_fields из каталога и допускайте отсутствие полей в любой записи.

Время снимка и время вызова: цифры одной заметки меняются

Есть и разница во времени. Веб-поиск возвращает страницы из своего индекса, то есть в том виде, в котором они были на момент обхода. В документации DeepSeek перечислено 10 полей результата. Одно из них — date, время публикации. Поля со временем обхода нет, поэтому узнать день снимка нельзя.

Поиск внутри приложения возвращает значения на момент вашего вызова. Лайки, комментарии и сохранения — это текущие счётчики. Xiaohongshu также возвращает updated_at. Каталог описывает его как время последней правки заметки.

Для товарных тем эта разница велика. Мы взяли 20 заметок с жалобами в Xiaohongshu, отсортированных по числу лайков. У 13 из них последнее редактирование было позже чем через 30 дней после публикации. У 5 из них прошло больше года. Одну заметку отредактировали через 1 154 дня после даты публикации.

Интервал от публикации до последней правкиЗаметки (из 20)
Меньше 30 дней7
От 30 до 365 дней8
Больше 365 дней5

Авторы часто возвращаются к заметкам. Они правят текст, добавляют продолжение или меняют название модели. Если веб-снимок сделан до правки, модель читает старую версию. У заметки о пылесборнике на скриншоте ниже было 992 лайка и 571 комментарий. На момент нашего вызова ей было всего около недели. Если её до сих пор лайкают и комментируют, более старый снимок покажет меньшие цифры.

Weibo ещё актуальнее. Все 25 постов в двух наших поисках были опубликованы за 4 дня до вызова. На вопрос вроде «не появилась ли на этой неделе новая проблема с сервисом» ответ находится именно в этих постах.

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

Верно и обратное. Поиск внутри приложения не заменит веб-поиск. В нём нет сайтов брендов, страниц с характеристиками, обзоров в СМИ и форумов за пределами этих приложений. Для западного бренда веб-поиск также охватывает англоязычные и европейские источники, например обзор в немецком журнале. Эти два вида данных решают разные задачи и дополняют друг друга. Ни один из них не заменяет другой.

Критерии, которые мы записали до теста

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

КритерийКритерий прохожденияКритерий не выполнен
Добавляют ли данные изнутри платформ поля, которых нет в веб-результатах?лайки, комментарии и время публикации есть минимум в 90% записей во всех трёх приложенияхменьше 90% хотя бы в одном приложении
Отвечают ли все три приложения в пределах 85 секунд без перехода в асинхронную задачу?все 6 вызовов возвращают 200тайм-аут или 503
Может ли модель сама исправить неверное значение?ошибка 422 указывает поле и перечисляет допустимые значения, при этом ничего не списываетсяневнятная ошибка или списание
Можно ли контролировать стоимость данных Xiaohongshu?один тариф снижает стоимость данных до уровня ниже $5 за 1 000 вопросовединственный способ — задавать меньше вопросов
Можно ли вставлять записи прямо в ответ как «голос покупателя»?фильтрация требуется максимум для 20% записейбольше 20% хотя бы в одном приложении (здесь мы ожидали провал)

Забегая вперёд: первые четыре критерия выполнены. Пятый не выполнен ни для одного из трёх приложений, поэтому фильтрам посвящён отдельный раздел ниже.

Схема: один вопрос о продукте, два маршрута данных

Анимация схемы, которая повторяется каждые 8 секунд. Слева вопрос пользователя «Buying a robot vacuum for 11.11: top complaints?», он соединён с блоком в центре «DeepSeek model, deepseek-flash, tools: 4 functions». Серая точка движется от модели к блоку справа вверху «Web search, POST /v1/tools/search, $0.75 per 1,000». Бирюзовая точка движется к блоку справа внизу «In-platform data, POST /api/v1/social, xiaohongshu, zhihu, weibo». Подписи рядом с обоими блоками гласят «your code calls». Затем серый и бирюзовый квадраты по пунктирным линиям возвращаются к модели с подписью «role: tool returns». В конце бирюзовая точка движется от модели к крайнему правому блоку «Cited answer: each claim with a url, likes and post time».

В схеме четыре шага, и ключевой из них второй. Модель DeepSeek не выполняет никаких функций. Она возвращает tool_calls, то есть указания «вызови эту функцию с такими аргументами». Реальные вызовы DeepSeek Search и EveryInfra делает ваш код.

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

На первом шаге пользователь задаёт вопрос. На втором модель читает вопрос и описания четырёх функций. Она решает, что искать, и может отправить сразу четыре вызова: один веб-поиск и три поиска в приложениях. На третьем шаге ваш код вызывает оба эндпоинта. Он возвращает необработанный JSON или его сокращённую версию в сообщении role: tool с соответствующим tool_call_id.

На четвёртом шаге модель читает все результаты и пишет ответ. Системный промпт велит ей после каждого утверждения указывать URL источника, число лайков и дату публикации. Уточняющий вопрос, например «что говорят о бренде A по сравнению с брендом B», запускает новый раунд вызовов. Цикл завершается, когда модель не возвращает tool_calls.

В этой схеме у каждого маршрута данных своя задача. Веб-поиск находит сайты брендов, страницы с характеристиками, обзоры в СМИ и новости. Он отвечает на вопрос «что умеет эта модель и что говорит бренд?». Данные изнутри платформ показывают, что говорят реальные пользователи Xiaohongshu, Zhihu и Weibo. Они отвечают на вопрос «как покупатели оценивают продукт и какие проблемы всплывают снова и снова?». Когда в ответе есть оба вида источников, читатель видит заявления бренда и отзывы покупателей рядом. Там, где они расходятся, часто и находится самый полезный вывод.

Определения инструментов: четыре функции в полном JSON (пример конфигурации)

Ниже приведены четыре функции для модели DeepSeek. Для трёх функций приложений все названия параметров, значения enum и описания взяты из полей param_meanings и allowed_values каталога EveryInfra. Функция веб-поиска соответствует справочнику DeepSeek Search API. Мы используем режим strict. Руководство DeepSeek по вызовам инструментов указывает, что для режима strict нужен базовый URL бета-версии (api.deepseek.com/beta с префиксом https). Каждое свойство каждого объекта должно быть в required, а additionalProperties должно быть false.

Поэтому необязательный параметр нельзя просто опустить. Мы решаем это двумя способами. Для enum со значением по умолчанию мы включаем это значение в enum и даём модели его выбрать. Например, relevance для sort и any_time для date_range. Для строки без значения по умолчанию, например токена страницы, мы используем anyOf с null.

json
[
  {
    "type": "function",
    "function": {
      "name": "web_search",
      "strict": true,
      "description": "Search the open web with DeepSeek Search. Use for brand sites, spec pages, media reviews and news. Returns title, url, summary and date; no likes or comments.",
      "parameters": {
        "type": "object",
        "properties": {
          "query": {"type": "string", "description": "1-128 characters. Supports site:, -site:, lang:, after:, before:."},
          "count": {"type": "integer", "minimum": 1, "maximum": 50, "description": "Results to return. Price per call does not change with count."}
        },
        "required": ["query", "count"],
        "additionalProperties": false
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "xiaohongshu_search",
      "strict": true,
      "description": "Search Xiaohongshu notes. One page = 20 rows = USD 0.005556. Rows include like_count, collect_count, comment_count, share_count, posted_at, is_cooperation_note. text is a ~60-char excerpt.",
      "parameters": {
        "type": "object",
        "properties": {
          "keyword": {"type": "string", "description": "Note search keyword in Chinese, e.g. a product name plus a pain point."},
          "sort": {"type": "string", "enum": ["relevance", "newest", "most_liked", "most_commented", "most_collected"]},
          "date_range": {"type": "string", "enum": ["any_time", "last_24_hours", "last_7_days", "last_30_days", "last_6_months", "last_1_year"]},
          "content_type": {"type": "string", "enum": ["all", "image", "video"]},
          "page_token": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "next_page_token from the previous page, or null for page 1."}
        },
        "required": ["keyword", "sort", "date_range", "content_type", "page_token"],
        "additionalProperties": false
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "zhihu_search",
      "strict": true,
      "description": "Search Zhihu answers, articles and videos. USD 0.000556 per call, up to 20 rows by default. Rows include like_count, comment_count, posted_at, author_follower_count.",
      "parameters": {
        "type": "object",
        "properties": {
          "keyword": {"type": "string"},
          "content_type": {"type": "string", "enum": ["all", "answer", "article", "video"]},
          "sort": {"type": "string", "enum": ["general", "upvote_count_descending", "time_descending"]}
        },
        "required": ["keyword", "content_type", "sort"],
        "additionalProperties": false
      }
    }
  },
  {
    "type": "function",
    "function": {
      "name": "weibo_search",
      "strict": true,
      "description": "Search public Weibo posts. USD 0.000806 per call, up to 20 rows by default. Rows include like_count, comment_count, repost_count, posted_at, author_verified, author_verified_reason.",
      "parameters": {
        "type": "object",
        "properties": {"keyword": {"type": "string"}},
        "required": ["keyword"],
        "additionalProperties": false
      }
    }
  }
]

Зачем указывать цену в описании? Потому что модель читает description. Напишите в функции Xiaohongshu «one page = USD 0.005556». Затем напишите в системном промпте «at most one Xiaohongshu page per question, try Zhihu and Weibo first».

Теперь при выборе функции модель учитывает информацию о стоимости. Это не жёсткое ограничение. Жёсткое ограничение должно быть задано в коде цикла, показанном в следующем разделе.

Для команды за пределами Китая важна ещё одна деталь. Ключевое слово для трёх функций приложений должно быть на китайском, потому что посты написаны на китайском. Это сказано в описании. Модель вроде deepseek-flash хорошо составляет китайские ключевые слова по английскому вопросу, так что пользователи могут спрашивать на английском. Мы сверили приведённые выше значения enum с версией каталога от 3 ноября с помощью скрипта.

Параметр функции`allowed_values` в каталогеEnum в определении инструментаСовпадает
xiaohongshu_search.sort5: relevance, newest, most_liked, most_commented, most_collectedте же 5yes
xiaohongshu_search.date_range6: от any_time до last_1_yearте же 6yes
xiaohongshu_search.content_type3: all, image, videoте же 3yes
zhihu_search.content_type4: all, answer, article, videoте же 4yes
zhihu_search.sort3: general, upvote_count_descending, time_descendingте же 3yes
web_search.countДокументация DeepSeek: от 1 до 50минимум 1, максимум 50yes

Почему эта таблица важна? На неверное значение enum EveryInfra возвращает 422, и ничего не списывается. Но модели нужен ещё один раунд, чтобы исправить ошибку. Если указать в определении корректные значения enum, вы сэкономите один цикл обмена с моделью и токены, которые он потребовал бы.

Каталог доступен для бесплатного просмотра в любое время — например, можно открыть запись каталога для Xiaohongshu. Когда возможность меняется, определения можно сгенерировать заново. Поля также описаны на странице возможности поиска Xiaohongshu.

Параметры и поля двух других приложений перечислены в записи каталога для Zhihu и записи каталога для Weibo. У поиска Weibo всего один параметр, keyword, поэтому его функция самая короткая. Модель почти никогда в ней не ошибается.

Код цикла: обработка tool_calls DeepSeek на Python (пример конфигурации)

Приведённый ниже код на Python использует Python SDK OpenAI из пакета openai на PyPI. Чат-API DeepSeek использует формат OpenAI, а руководство OpenAI по вызову функций описывает ту же структуру инструментов. Оба эндпоинта данных вызываются через requests с тайм-аутом 90 секунд, потому что у EveryInfra на синхронный вызов отводится 85 секунд. Перед возвратом результатов модели мы оставляем 12 полей. ensure_ascii=False сохраняет китайские иероглифы как есть (документация Python по json). Экранирование символов увеличило бы расход токенов в несколько раз.

python
import json, os, requests
from openai import OpenAI

ds = OpenAI(api_key=os.environ["DEEPSEEK_API_KEY"], base_url="https://api.deepseek.com/beta")
EI = "https://api.everyinfra.com/api/v1/social"
KEEP = ["url", "title", "text", "like_count", "comment_count", "collect_count", "share_count",
        "repost_count", "posted_at", "author_follower_count", "author_verified", "is_cooperation_note"]
BUDGET = {"xiaohongshu_search": 1}          # at most 1 Xiaohongshu page per question

def web_search(query, count):
    r = requests.post("https://api.deepseek.com/v1/tools/search", timeout=60,
                      headers={"Authorization": f"Bearer {os.environ['DEEPSEEK_API_KEY']}"},
                      json={"query": query, "count": count})
    r.raise_for_status()
    hits = r.json()["results"]
    return [{k: x.get(k) for k in ("title", "url", "summary", "date", "site_name")} for x in hits]

def social(platform, params):
    params = {k: v for k, v in params.items() if v is not None}
    r = requests.post(EI, timeout=90, json={"platform": platform, "action": "search", "params": params},
                      headers={"Authorization": f"Bearer {os.environ['EVERYINFRA_API_KEY']}"})
    body = r.json()
    if r.status_code != 200:                  # a 422 has param, allowed, did_you_mean: give it to the model
        return {"error": body.get("error", body)}
    rows = body["results"]
    return [{k: x[k] for k in KEEP if x.get(k) is not None} for x in rows]

def run(question, tools):
    used = {}
    msgs = [{"role": "system", "content": "Answer in English. After each claim, give the source url, like count and post date. "
                                          "Search Zhihu and Weibo first; use Xiaohongshu only when needed. Keywords for the apps in Chinese."},
            {"role": "user", "content": question}]
    while True:
        m = ds.chat.completions.create(model="deepseek-flash", messages=msgs, tools=tools,
                                       extra_body={"thinking": {"type": "enabled"}}).choices[0].message
        msgs.append(m)                        # keeps reasoning_content; required when tools are present
        if not m.tool_calls:
            return m.content
        for c in m.tool_calls:
            a = json.loads(c.function.arguments)
            used[c.function.name] = used.get(c.function.name, 0) + 1
            if used[c.function.name] > BUDGET.get(c.function.name, 99):
                out = {"error": "budget reached for this question; answer with what you have"}
            elif c.function.name == "web_search":
                out = web_search(**a)
            else:
                out = social(c.function.name.removesuffix("_search"), a)
            msgs.append({"role": "tool", "tool_call_id": c.id, "content": json.dumps(out, ensure_ascii=False)})

Два момента следуют из документации DeepSeek. Во-первых, режим рассуждений включён по умолчанию. Руководство по режиму рассуждений говорит, что запрос с tools должен передавать обратно reasoning_content всех предыдущих ходов. Иначе API возвращает 400.

Это обеспечивает строка msgs.append(m). Во-вторых, режим strict работает только с базовым URL бета-версии. При использовании обычного URL поле strict ни на что не влияет, и модель иногда может пропустить аргумент. Тогда EveryInfra возвращает 422, и модель добавляет аргумент в следующем раунде.

Проверка бюджета находится в цикле, а не в промпте. Промпт может лишь попросить модель экономить. Код же позволяет гарантировать, что расходы на один вопрос не превысят заданную сумму. Для команды бренда, которая задаёт сотни вопросов в день, эта разница отражается в ежемесячном счёте.

Один реальный цикл: что отправляет модель и что приходит в ответ

Мы не запускали часть с моделью, потому что у нас нет ключа DeepSeek. Возьмём вопрос «Покупаю робот-пылесос на 11.11: на что покупатели жалуются чаще всего?». С учётом определений инструментов модель могла бы отправить вызов Xiaohongshu с китайским ключевым словом для запроса «жалобы на работу роботов-пылесосов». Остальные аргументы: sort со значением most_liked, date_range со значением any_time, content_type со значением all и page_token со значением null. Цикл исключает параметр со значением null и отправляет в EveryInfra приведённый ниже запрос. Это реальный вызов.

bash
curl -s https://api.everyinfra.com/api/v1/social \
  -H "Authorization: Bearer $EVERYINFRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"platform":"xiaohongshu","action":"search","params":{"keyword":"扫地机器人 吐槽","sort":"most_liked"}}'

Запрос в 00:17:22 SGT 3 ноября 2026 г. вернул 200 и 20 записей. Тело ответа занимало 36 627 байт, а billing.charged_usd было равно 0.005556. В ту же минуту мы намеренно повторили вызов с sort со значением hot. Он вернул 422 с code со значением invalid_value и did_you_mean со значением most_liked.

Поле allowed перечисляло 5 допустимых значений. Первый пункт next_steps гласил: «Change only sort to a value in allowed, then resend. Nothing was charged.» Модель, получив такое сообщение role: tool, в следующем раунде меняет только sort. Вмешательство человека не требуется.

Скриншот реального ответа EveryInfra на тёмной карточке с кодом из трёх частей. Часть 1 — запрос: POST /api/v1/social в 00:17:22 SGT 2026-11-03, HTTP 200, platform xiaohongshu, action search, китайское ключевое слово со значением «жалобы на роботы-пылесосы», sort most_liked. Часть 2 — фрагмент ответа: count 20 и запись 6 с китайским заголовком о жалобах на один бренд роботов-пылесосов, like_count 992, comment_count 571, collect_count 914 в бирюзовой рамке, share_count 262, posted_at 2026-10-25T09:21:34+00:00 в бирюзовой рамке, is_cooperation_note false в бирюзовой рамке; имя автора скрыто. В разделе billing charged равно true, а charged_usd 0.005556 выделено бирюзовой рамкой. Часть 3 — ответ 422 на sort со значением hot: code invalid_value, did_you_mean most_liked в бирюзовой рамке, 5 допустимых значений и next_steps с указанием изменить только sort и пометкой, что ничего не списано, в бирюзовой рамке.
Один успешный вызов и один вызов с неверным значением (фрагмент; имя автора скрыто, токен доступа в ссылке обрезан). Скриншот необработанного ответа в 00:17 SGT 3 ноября 2026 г. Реальный ответ EveryInfra, 2026-11-03 00:17 SGT

Запись 6 на скриншоте — заметка от 25 октября. Судя по заголовку, это жалоба на один бренд роботов-пылесосов. В тексте конструкцию мешка для пыли описывают словами «только принимает и ничего не отдаёт», что указывает на стоимость сменных мешков. У заметки 992 лайка, 571 комментарий и 914 сохранений.

Комментариев больше половины от числа лайков, значит, заметка вызвала настоящее обсуждение. Именно такой сигнал нужен для вопроса о главных жалобах. В результате веб-поиска модель увидит у этой заметки в лучшем случае заголовок и выжимку.

Чтобы узнать, о чём спорят в комментариях, можно вызвать xiaohongshu/note с url этой записи и получить полный текст. Можно также запросить комментарии. Каждый такой вызов тоже стоит $0,005556, так что действует та же логика бюджета.

Тест 1: что вернуло каждое приложение

С 00:15 до 00:19 SGT мы сделали 8 вызовов по теме «робот-пылесос». Шесть вызовов — по два на приложение. Ещё один понадобился для сравнения с Reddit ниже, а в одном мы намеренно указали неверное значение. Все вызовы отработали синхронно, асинхронные задачи не понадобились.

SGTВозможностьПараметрыЗаписиcharged_usd
00:15:57zhihu/searchсоветы по выбору робота-пылесоса, только ответы20$0.000556
00:16:17weibo/searchробот-пылесос13$0.000806
00:16:32xiaohongshu/searchробот-пылесос, больше всего комментариев, последние 30 дней13$0.005556
00:17:22xiaohongshu/searchsort со значением hot422$0
00:17:22xiaohongshu/searchжалобы на роботы-пылесосы, больше всего лайков20$0.005556
00:18:26zhihu/searchнедостатки роботов-пылесосов, больше всего голосов «за»20$0.000556
00:18:31weibo/searchпослепродажное обслуживание роботов-пылесосов12$0.000806
00:18:53reddit/searchробот-пылесос, сортировка top5$0.000556
Итого103 записи$0.014392

Три китайских приложения выдали очень разный контент. Поиск жалоб на Xiaohongshu с сортировкой по лайкам вернул 20 заметок. Большинство заголовков — о реальном использовании и о том, чего стоит избегать. В них рассказывается о конструкции мешка для пыли, о роботе, который упал в яму, когда не сработала запретная зона, о проблемах с распознаванием питомцев и о приборе, который называют «налогом на наивных». Восемь из 20 заметок помечены как платный контент: это обзоры брендов и гайды по выбору.

Одна запись особенно важна для западных брендов. Заголовок заметки от 16 декабря 2025 года призывает не покупать робот-пылесос Dyson. У неё 1 444 лайка и 53 комментария. В тексте говорится, что сам продукт неплох, но не оправдывает свою цену. Западный бренд, который продаёт в Китае, может найти такую заметку только внутри приложения.

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

ОпубликованЗаголовок (краткий пересказ)ЛайкиКомментарииМетка платного контента
2026-10-16Робот «для владельцев питомцев» всё-таки устроил то, чего боялись3,710183false
2023-09-17Месяц робот игнорировал запретную зону, а потом упал в яму3,4451,937false
2025-12-16Не покупайте робот-пылесос Dyson1,44453false
2026-10-25Жалоба на конструкцию пылесборника одного бренда992571false
2026-07-06Техника, которая стала налогом на наивность553973false

Поиск рекомендаций на Zhihu вернул 20 ответов, в основном гайды по выбору и подборки моделей. Поиски на Weibo вернули 25 постов, все были опубликованы в течение недели перед 2 ноября. Они оказались самыми разнородными. Одни пользователи просили совета. Один написал, что пылесос сломался через два года, а у бренда нет запчастей. Были и рекламные посты брендов, и посты с подборками товаров.

У каждого типа контента своя польза. Для конкретных дефектов, на которые жалуются снова и снова, точнее всего Xiaohongshu с сортировкой по лайкам или комментариям. Для экспертного разбора, что купить, больше всего информации дают развёрнутые ответы на Zhihu. Для новых проблем с послепродажным обслуживанием за эту неделю актуальнее всего Weibo. Ассистенту, который использует только веб-поиск, будет трудно охватить все три точки зрения. Он также не получит счётчики вовлечённости, которые показывают, насколько типичен пост.

Вызов Reddit даёт полезный контраст для англоязычной команды. Топ-5 результатов по запросу «robot vacuum» опубликованы с 7 по 22 октября. Они пришли из юмористических и оффтоп-сообществ. В первую тройку вошли видеопост в r/TikTokCringe с 6 551 лайком и «гараж для робота-пылесоса» в r/homeassistant с 3 076 лайками. Третьим стал робот-пылесос в костюме мультяшного персонажа в r/futurama с 2 998 лайками. Ни один из них не был жалобой покупателя.

ОпубликованСообществоЗаголовокЛайкиКомментарии
2026-10-20r/TikTokCringeЯпонский робот-пылесос последнего поколения6,551107
2026-10-16r/homeassistantГараж для робота-пылесоса3,076176
2026-10-14r/futuramaМой робот-пылесос в образе уборщика Скраффи и его ведра2,99876
2026-10-07r/PerfectfitКак мой робот-пылесос идеально помещается под тумбу для телевизора1,77316
2026-10-22r/BORUpdatesAITAH, раз я отказался делиться с родственником супруга? (не по теме)1,102222

Так что «топ» в любом приложении показывает популярное, а не полезное. Выбор сортировки и ключевых слов важен и в западных приложениях. Доступные варианты перечислены на странице возможности поиска по Reddit.

Тест 2: при сортировке по голосам свежих записей Zhihu — 0 из 20

Чаще всего вопросы о товарах спотыкаются о «новизну». Роботы-пылесосы обновляются несколько раз в год, и гайд по выбору двухлетней давности может уже не работать. По posted_at мы посчитали для каждого вызова записи за последние 30 дней, то есть после 4 октября 2026 года. Результаты шести поисков в приложениях сильно различались.

Горизонтальная столбчатая диаграмма: число записей за последние 30 дней в 6 поисках. Xiaohongshu, больше всего комментариев, последние 30 дней: 13 из 13. Xiaohongshu, больше всего лайков: 5 из 20. Ответы Zhihu, общая сортировка: 14 из 20. Zhihu, больше всего голосов: 0 из 20, бирюзовым, столбец нулевой длины. Weibo по умолчанию: 13 из 13. Weibo по умолчанию, послепродажное обслуживание: 12 из 12. Заголовок: при сортировке по голосам за последние 30 дней опубликованы 0 из 20 записей Zhihu.

Крайний случай — поиск на Zhihu с сортировкой по числу голосов. Из 20 записей 18 опубликованы до 2026 года, самая старая — в 2015-м. Заголовки ещё показательнее: в 9 из 20 упоминается 2026 год.

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

Поймает ли такой случай поле date у веб-результата? Зависит от того, какую дату показывала страница в момент обхода. В документации DeepSeek сказано лишь, что date равно null, если дата неизвестна. Данные изнутри платформы дают время публикации, которое записывает само приложение. Его можно сразу сравнить с заголовком.

Решение простое. Для вопросов о свежих данных используйте на Xiaohongshu date_range=last_30_days с sort=most_commented, а на Zhihu — sort=time_descending. Weibo по умолчанию возвращает свежие посты. Для вопросов о «долгосрочной репутации» сортируйте по лайкам и просите модель указывать год публикации каждого источника.

Есть и нюанс со стоимостью. Вызов Xiaohongshu с last_30_days вернул всего 13 записей. В каталоге сказано, что с этим фильтром на странице может оказаться меньше 20 записей, а страница с результатами оплачивается как одна страница. Поэтому цена за 1 000 результатов для этого вызова составила $0.427, что на 54% больше, чем $0.278 за полную страницу.

Тест 3: какие записи отфильтровать в первую очередь

Мы ожидали, что результаты не пройдут проверку по пятому критерию, и так и вышло. В каждом приложении есть тип записей, которые искажают картину «голоса покупателя», если использовать их как есть.

Горизонтальная столбчатая диаграмма из трёх столбцов с разными итогами. Xiaohongshu: у 12 из 33 записей в двух поисках стоит метка платного контента, 36%. Weibo: у 10 из 25 записей в двух поисках ноль лайков и ноль комментариев, 40%. Zhihu, больше всего голосов: из 9 заголовков с упоминанием 2026 года 8 опубликованы до 2026 года, 89%, бирюзовым. Заголовок: в каждом приложении есть тип записей, который нужно проверить по полю перед использованием.

На Xiaohongshu самое прямое поле — is_cooperation_note. Оно было true у 12 из 33 записей. В вызове по числу комментариев за последние 30 дней — у 4 из 13. В вызове по жалобам с сортировкой по лайкам — у 8 из 20. Платная заметка не обязательно содержит недостоверную информацию.

Но в ответе на вопрос «на что жалуются покупатели» такая заметка передаёт сообщение, которое бренд хочет вам показать. Поэтому выделяйте такие записи в отдельную группу или помечайте их в ответе. Это поле есть только в данных изнутри платформы. У веб-результатов аналогичного поля нет.

В поиске Xiaohongshu по числу комментариев за последние 30 дней нашёлся и второй тип шума. Верхние записи — мем о потерявшемся роботе с 14 963 лайками, фитнес-видео и клип из хоррор-игры. Это популярные посты с хештегом, а не отзывы покупателей. Поэтому, если вам нужны проблемы покупателей, используйте ключевое слово, обозначающее проблему, например «жалобы» или «минусы».

На Weibo проблема — шум. У 10 из 25 записей не было ни лайков, ни комментариев. Девять из них опубликованы верифицированными аккаунтами, 8 — аккаунтами со 100 000 подписчиков и больше. Среди них были рекламные посты брендов и посты с подборками товаров.

У одного анонса брендового прямого эфира было 2 435 лайков и 421 комментарий. У таких постов высокая вовлечённость, но это не жалобы покупателей. Их можно отличить по author_verified_reason и ссылкам на товары в тексте.

Полезные посты часто публикуют пользователи с десятками или сотнями подписчиков. В них названы бренд и дефект. В посте от 2 ноября говорится, что робот-пылесос, купленный в марте 2024 года, сломался примерно через два года. Сервисная служба сообщила владельцу, что модель снята с производства и запчастей нет, и предложила только сдать пылесос по программе trade-in за 200 юаней.

У этого поста 0 лайков и 1 комментарий. И всё же это реальный сигнал о проблемах с сервисом. Поэтому фильтр не может просто отбрасывать записи с низкой вовлечённостью.

После фильтрации отсортируйте записи. Во всех трёх приложениях основная часть вовлечённости приходится на несколько записей.

Вызов Xiaohongshu по самым комментируемым заметкам за последние 30 дней вернул 13 заметок, у которых в сумме 124 557 лайков, и на первые 3 пришлось 49%. Вызов по жалобам вернул 20 заметок с 23 938 лайками, на первые 3 пришлось 48%. Вызов Zhihu по рекомендациям вернул 20 ответов, у которых всего 1 151 голос «за». На первые 3 пришлось 75%, а медиана составила 11. Вызов Weibo по постпродажному обслуживанию вернул 12 постов с 2 290 лайками. На один пост пришлось 2 288 из них, а у остальных 11 постов было всего 2.

ВызовЗаписиВсего лайков или голосовДоля топ-3 записей
xiaohongshu/search, больше всего комментариев, последние 30 дней13124,55749%
xiaohongshu/search, жалобы, больше всего лайков2023,93848%
zhihu/search, рекомендации, только ответы201,15175%
weibo/search, послепродажное обслуживание122,290100%

Если отправить модели 20 записей в том порядке, в каком их вернуло приложение, «мнение большинства» может сложиться из двух-трёх популярных записей. Лучше отсортировать записи по вовлечённости в коде цикла и удалить дубликаты по author_id. Затем передавайте счётчики вместе с каждой записью. Тогда модель сможет сказать читателю: «у этой заметки 992 лайка» или «у этого поста 0 лайков, но в нём конкретные факты».

Python справится с этим без дополнительных библиотек. Сортируйте через sorted() с функцией key по like_count (руководство по сортировке в Python). Уже использованных авторов храните в множестве. Этот шаг не требует дополнительных вызовов.

Как выглядит ответ: образец формата на основе реальных записей

Мы не запускали модель, поэтому ответа, написанного DeepSeek, у нас нет. Но формат всё равно можно показать. Мы вручную написали начало ответа по реальным записям выше. Это образец формата, а не вывод модели. Все числа соответствуют исходным ответам. Ссылки содержат токены доступа, поэтому вместо них мы пишем «ссылка скрыта».

Первая группа жалоб касается пылесборника и запчастей. В заметке на Xiaohongshu от 25 октября говорится, что пылесборник одного бренда «только всасывает и ничего не выпускает»; у неё 992 лайка, 571 комментарий и 914 сохранений (ссылка скрыта; не является платным контентом). Вторая группа касается послепродажного обслуживания. 2 ноября пользователь Weibo со 124 подписчиками написал, что пылесос, купленный в марте 2024 года, сломался через два года. Бренд ответил, что модель снята с производства, и предложил только сдать пылесос по программе trade-in за 200 юаней (ссылка скрыта; 0 лайков, 1 комментарий). На Zhihu большинство гайдов по выбору с наибольшим числом голосов опубликованы в 2018–2022 годах, хотя в заголовках указан 2026 год. Прежде чем на них полагаться, проверьте год публикации.

У каждого утверждения в образце указаны приложение, дата, счётчики вовлечённости и метка платного контента. Такой формат можно запросить у модели в системном промпте.

Пока мы готовили этот пример, мы заметили ещё одну деталь. Двум авторам принадлежат по 3 из 20 записей Zhihu. 3 ответа первого автора начинаются почти одинаково, у каждого 0 голосов «за», и все ведут на одну и ту же статью. Второй автор написал 3 ответа за два дня, и все три рекомендуют модели одного бренда. Если считать эти 20 записей независимыми мнениями, вы переоцените этот бренд.

Поэтому удаляйте дубликаты по author_id до того, как записи вернутся к модели. Для каждого автора оставляйте только запись с наибольшей вовлечённостью. Это поле возвращают все три приложения. Код занимает несколько строк и надёжнее промпта с просьбой к модели «следить за повторяющимися авторами».

Тест 4: сколько токенов можно сэкономить до передачи модели

Самый дешёвый шаг в этом процессе — удалить лишние поля до того, как результаты вернутся к модели. Мы оценили число токенов для трёх поисков в двух вариантах: необработанный ответ и только 13 нужных полей. Мы использовали коэффициенты из руководства DeepSeek по токенам: около 0,3 токена на английский символ и 0,6 токена на китайский. Это оценки. Точное число указано в поле usage каждого ответа.

Поисковый запросСимволов в исходном видеТокенов в исходном виде (оценка)Символов с 13 полямиТокенов после (оценка)
xiaohongshu/search жалобы, больше всего лайков33,90510,5497,3022,542
zhihu/search минусы, больше всего голосов15,4595,6967,3563,162
weibo/search послепродажное обслуживание10,7863,6243,8731,458
Итого60,15019,86918,5317,162

Сокращённая форма меньше на 64%. Больше всего экономия на Xiaohongshu: в его сырых записях есть списки изображений, аватары, ссылки на видео, ширина и высота. Для ответа всё это бесполезно. По пиковой цене входных токенов deepseek-flash в $0.30 за миллион токенов 19 869 токенов стоят $0.0060, а 7 162 токена стоят $0.0021. Для одного вызова разница невелика.

Но в цикле вызовов инструментов предыдущие результаты отправляются заново с каждым новым запросом. Чем больше раундов, тем больше разница. У DeepSeek есть контекстный кеш: по англоязычной странице тарифов входные токены, попавшие в кеш, стоят $0.006 за миллион в пиковое время. Поэтому реальная стоимость повторно отправляемой части намного ниже, но только при попадании в кеш.

Согласно руководству DeepSeek по контекстному кешированию, запрос попадает в кеш, только если его префикс полностью совпадает с сохранённой единицей префикса. Chat API не хранит состояние, поэтому в каждом раунде нужно заново отправлять все предыдущие сообщения (руководство по многораундовому диалогу). Отсюда два правила для кода цикла.

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

И всё же меньший контекст помогает модели сосредоточиться, на что указывает исследование из раздела «Последние изменения».

Стоимость: DeepSeek Search API по $0.75 за 1 000, Xiaohongshu по $0.005556 за вызов

Если сравнить цены, картина ясна. Веб-поиск дешёвый. Zhihu и Weibo стоят примерно как веб-поиск. Xiaohongshu — примерно в десять раз дороже.

Горизонтальная столбчатая диаграмма стоимости в USD за 1 000 успешных запросов: xiaohongshu/search $5.556, бирюзовый и самый длинный столбец; EveryInfra web/search $1.389; weibo/search $0.806; zhihu/search $0.556; DeepSeek Search $0.750; DeepSeek Fetch $0.750. Заголовок: один поиск по Xiaohongshu стоит в 7.4 раза больше одного вызова DeepSeek Search.

Скажем прямо об одном. Для обычного веб-поиска DeepSeek Search за $0.75 за 1 000 дешевле собственного web/search от EveryInfra за $1.389 за 1 000. К тому же он возвращает до 50 результатов за вызов. Поэтому в этой схеме веб-поиском должен заниматься DeepSeek, а EveryInfra только данными внутри платформ. В пересчёте на 1 000 результатов разрыв ещё больше.

DeepSeek при count=50 стоит $0.015. Zhihu стоит $0.028 за 1 000 результатов, Weibo от $0.062 до $0.067, Xiaohongshu от $0.278 до $0.427. Но сравнивать эти два вида результатов по числу записей нельзя. Веб-результат и пост из приложения со счётчиками вовлечённости отвечают на разные вопросы.

Вызовов на вопросЦена за единицуВызовыПромежуточный итог
DeepSeek Search$0.000752$0.0015
xiaohongshu/search$0.0055561$0.005556
zhihu/search$0.0005561$0.000556
weibo/search$0.0008061$0.000806
Стоимость данных (план B)5$0.008418
Стоимость модели (оценка, пиковый тариф, около 16 000 входных и 1 500 выходных токенов)около $0.0066

У оценки стоимости модели большая погрешность. На входе учтены 7 162 токена сокращённых данных из приложений и около 8 400 токенов веб-сводок из двух поисков по 10 результатов в каждом. На выходе учтено 1 500 токенов. Оценка не учитывает повторно отправленный контекст и попадания в кэш. Стоимость данных точная, потому что это цена из каталога, умноженная на число вызовов. В сумме один вопрос стоит около 1.5 цента США, и на один только Xiaohongshu приходится 66% стоимости данных.

Как ограничить вызовы Xiaohongshu: три плана

При цене $0.005556 за страницу именно расходы на Xiaohongshu нужно контролировать. Цель не в том, чтобы реже использовать Xiaohongshu, а в том, чтобы обращаться к нему только тогда, когда он даёт дополнительные данные. Мы составили три плана. В каждом — по два поиска DeepSeek на вопрос.

Горизонтальная столбчатая диаграмма с накоплением: стоимость данных на 1 000 вопросов из четырёх частей: два вызова DeepSeek Search, xiaohongshu/search (бирюзовым), zhihu/search и weibo/search. План A, полный, 3 страницы Xiaohongshu: $20.89. План B, по умолчанию, одна страница на каждое приложение: $8.42. План C, по необходимости, Xiaohongshu для 30% вопросов: $4.53. Заголовок: в расчёте на 1 000 вопросов стоимость снижается с $20.89 до $4.53, и разницу определяет число вызовов Xiaohongshu.
ПланXiaohongshuZhihuWeiboНа вопросНа 1 000 вопросовДоля Xiaohongshu
A, полный3 страницы2 вызова2 вызова$0.0209$20.8980%
B, по умолчанию1 страница1 вызов1 вызов$0.0084$8.4266%
C, по запросу1 страница для 30% вопросов1 вызов1 вызов$0.0045$4.5337%

30% в плане C мы выбрали сами, это не измеренный показатель. Решить, когда нужен Xiaohongshu, можно тремя способами — от простого к сложному. Первый — по категории товара.

Запрашивайте Xiaohongshu для косметики, средств ухода, детских товаров, товаров для дома и мелкой бытовой техники — там обсуждений на Xiaohongshu много. Для запчастей и промышленных товаров его можно пропустить. Второй способ — сначала опросить дешёвые приложения. Если Zhihu и Weibo уже вернули достаточно свежих записей с конкретными моделями, Xiaohongshu не вызывайте.

Третий — доверить решение модели, но задать лимит в цикле, как BUDGET в коде выше. Когда модель запрашивает вторую страницу, возвращайте «бюджет исчерпан». Кроме того, не используйте last_30_days, если нужна полная страница. Тест 2 показал, что так можно получить 13 записей и всё равно заплатить за целую страницу. Для запросов о самых свежих данных sort=newest возвращает полную страницу. Тот же совет дан в примечании к date_range в каталоге.

Другой путь: DeepSeek Harness с удалённым MCP-сервером (пример конфигурации)

Возможно, вы не пишете собственный цикл. Если вы используете DeepSeek Harness, агента DeepSeek с открытым исходным кодом (Быстрый старт), определения инструментов можно не писать. Вместо этого подключите удалённый MCP-сервер EveryInfra. В README MCP-клиента Harness для каждого MCP-сервера используется отдельная запись. Удалённый сервер использует транспорт streamable-http, а клиент может передавать ему заголовки. Его инструменты видны модели как mcp__<serverName>__<tool>, а тайм-аут на вызов по умолчанию — 60 секунд.

yaml
- id: mcp-everyinfra
  name: '@deepseek-ai/dsh-mcp-client'
  config:
    serverName: everyinfra
    transport: streamable-http
    url: https://api.everyinfra.com/mcp
    headers:
      Authorization: !!js '`Bearer ${process.env.EVERYINFRA_API_KEY}`'
    toolCallTimeoutMs: 90000

Мы увеличиваем toolCallTimeoutMs с 60 до 90 секунд по той же причине, что и тайм-аут requests выше. MCP-сервер EveryInfra соответствует спецификации MCP 2026-07-28 и её транспорту Streamable HTTP. Вызов tools/list без ключа 3 ноября показал 12 инструментов. Для данных приложений служит инструмент everyinfra_call_api с платформой, действием и параметрами. Аутентификация описана на странице MCP-сервера.

Согласно разделу об авторизации в спецификации MCP, авторизация необязательна. Если сервер использует транспорт на основе HTTP, ему следует придерживаться этого раздела. EveryInfra принимает API-ключ в заголовке запроса, поэтому для записи в Harness нужны только headers, без входа через браузер.

В Harness есть собственный веб-поиск. Пакет dsh-tool-web добавляет web_search и web_fetch. По умолчанию он возвращает до 8 источников, отправляет до 4 запросов и обрезает каждую сводку до 800 символов. В его README сказано, что поисковый бэкенд DeepSeek не появляется в списке инструментов, если у текущей модели нет учётных данных. В такой конфигурации одна сессия Harness использует DeepSeek для веб-поиска и MCP для данных приложений. Разделение то же, что и в варианте с функциями, но цикл выполняет Harness.

Как выбрать между этими двумя вариантами? Вариант с MCP не требует кода, и модель сама обнаруживает новые возможности в каталоге. Однако модель видит только один общий инструмент, everyinfra_call_api, и должна сначала прочитать каталог, чтобы узнать параметры. Это добавляет одну-две итерации обмена. При использовании функций вам придётся поддерживать их определения.

Взамен каждое описание, enum и цена зафиксированы, модель выбирает точнее, а ваш код может контролировать бюджет. Для одного фиксированного продуктового сценария используйте функции. Для открытого ассистента для команды — MCP. Тот же компромисс разобран в нашей статье о строгом вызове инструментов в Claude с API данных.

Что не работает и за чем следить

Во-первых, мы не вызывали эндпоинт DeepSeek Search. Поэтому у нас нет измеренных данных о том, сколько заметок Xiaohongshu находит поиск DeepSeek по запросу «robot vacuum». Всё, что здесь сказано о DeepSeek, взято из документации. Мы не измеряли объём контента приложений в индексе DeepSeek и частоту его обновления. Раздел «Время снимка и время вызова» касается только данных приложений.

Во-вторых, текст в поиске Xiaohongshu — это фрагмент длиной около 60 символов. Чтобы получить полный текст, нужно вызвать эндпоинт с подробными данными о заметке за $0.005556. Комментарии тоже оплачиваются отдельно. В-третьих, все три приложения возвращают только публичный контент. Личные сообщения, посты только для подписчиков и удалённые посты недоступны. Для платного контента Zhihu доступна только сводка.

У пагинации есть две особенности, на которых легко споткнуться в коде цикла. Страница поиска Xiaohongshu всегда содержит 20 записей, и limit ни на что не влияет. Чтобы получить больше записей, используйте next_page_token с последней страницы. Этот токен действует только 24 часа. Если вы сохраните диалог и продолжите на следующий день, старый токен не сработает.

Поиск снова начинается со страницы 1, и вы платите ещё раз. Zhihu по умолчанию возвращает 20 записей, максимум 100. Weibo по умолчанию возвращает 20, максимум 50. Для этих двух платформ запросить больше записей выгоднее, чем листать страницы, потому что оплата идёт за каждый вызов.

В-четвёртых, нужно учесть два требования. Первое: данные приложений содержат имена и профили частных лиц. Цитируйте только контент и ссылки. Не собирайте и не показывайте личные данные частных лиц. В статье на arXiv от 22 октября (Social-HUMINT) изучается риск использования LLM для определения личных характеристик по публичным данным соцсетей.

Анализируя товары, работайте на уровне темы, а не отдельных пользователей. Второе требование: ассистент, доступный широкой публике в материковом Китае, подпадает под китайские временные меры по управлению сервисами генеративного ИИ. Меры по маркировке контента, созданного ИИ действуют с 1 сентября 2025 года. Это не юридическая консультация. Уточните свои обязанности у юристов.

В-пятых, лимиты запросов различаются. У аккаунта EveryInfra по умолчанию 60 вызовов в минуту. У нашего тестового ключа был особый лимит — 10 в минуту. DeepSeek Search допускает 100 в секунду. При высокой нагрузке добавьте в цикл очередь для вызовов EveryInfra.

Последние изменения

17 октября 2026 года: DeepSeek открыл доступ к Search и Fetch. В тот же день модель обновилась до DeepSeek-V4.1-Flash-1017. Веса опубликованы на Hugging Face. Для вас это значит, что одного ключа DeepSeek теперь хватает и для веб-поиска. Отдельный поисковый сервис не нужен.

1 ноября 2026 года, 00:00 по пекинскому времени: серверный поиск в клиентах стал платным. Используете DeepSeek через Claude Code, Codex или Harness? Тогда плата за поиск теперь включается в ваш ежемесячный счёт. Проверьте страницу использования в консоли DeepSeek.

13 октября 2026 года: статья об ИИ-агентах для покупок вышла в версии 5. В этой статье на arXiv («Does Rank Still Matter?») изучено 7 000 сессий. ИИ-агенты просматривали больше результатов, чем люди, но результаты на средних позициях реже всего попадали в поле зрения.

Для вас это значит, что больше записей — не всегда лучше. Сортируйте записи по вовлечённости или времени перед передачей модели. Это надёжнее, чем 50 несортированных записей. Данные о вовлечённости из Теста 3 указывают на тот же шаг.

Около 25 октября 2026 года: обновилась документация MCP-клиента DeepSeek Harness. Harness поддерживает MCP версии 2026-07-28 (README MCP-клиента). Удалённые серверы используют Streamable HTTP (README пакетов MCP). Для вас это значит, что данные приложений можно подключить к агенту DeepSeek без кода.

FAQ

Поддерживает ли DeepSeek API веб-поиск?

Chat API сам в интернете не ищет. Есть два способа. Первый — самостоятельно вызывать эндпоинт Search (POST /v1/tools/search) и передавать результаты модели как результаты инструментов. Второй — использовать клиент вроде DeepSeek Harness, Claude Code или Codex.

Они вызывают Search и Fetch через серверные инструменты, и с 1 ноября 2026 года действует оплата за каждый запрос. (Источник вопроса: поисковая подсказка «does deepseek api support web search». Основание: руководство DeepSeek по Search и Fetch.)

Сколько стоит API DeepSeek Search и есть ли бесплатный тариф?

Цена составляет $0.75 за 1 000 успешных запросов. Неудачные, пустые и завершившиеся по тайм-ауту запросы бесплатны, а count не влияет на цену. Отдельной бесплатной квоты на поиск мы не нашли ни на странице цен, ни в руководстве. Использование оплачивается как с начисленного, так и с пополненного баланса, причём начисленный баланс расходуется первым. (Источник вопроса: поисковые подсказки «deepseek search api pricing» и «deepseek search api free tier». Основание: страница цен DeepSeek.)

Ключ API DeepSeek Search — тот же, что и ключ для модели?

Да. В руководстве сказано, что Search и Fetch используют ту же Bearer-аутентификацию, что и DeepSeek API. Ключи создаются на платформе DeepSeek. Лимиты запросов действуют на аккаунт, а не на ключ. (Источник вопроса: поисковая подсказка «deepseek search api key». Основание: руководство DeepSeek по Search и Fetch и страница о лимитах запросов.)

API DeepSeek Search и Fetch: в чём разница и когда использовать Fetch?

Search возвращает несколько результатов по запросу. Fetch возвращает одну полную страницу в Markdown по URL. Search и сам умеет возвращать текст страницы с need_content. Поэтому Fetch нужен, когда ссылка уже есть и требуется полный текст, например ссылка на сайт бренда из данных приложения.

Работа Fetch зависит от политики доступа целевого сайта. Если получить контент не удалось, он возвращает 404, и вы ничего не платите. (Источник вопроса: поисковая подсказка «deepseek search fetch api». Основание: справочник по Fetch API.)

DeepSeek Harness и поисковый API: может ли Harness работать с другим поисковым провайдером?

Да. Harness подключает веб-поиск как плагин. Инструмент web_search предоставляет плагин dsh-tool-web, и его бэкенд можно заменить другим поисковым плагином. Данные приложений подключаются через MCP-клиент, настроенный на удалённый сервер. (Источник вопроса: поисковая подсказка «deepseek harness search provider». Основание: README dsh-tool-web и репозиторий Harness.)

Поддерживает ли вызов функций в API DeepSeek строгий режим?

Да. Используйте бета-адрес (api.deepseek.com/beta с префиксом https) и задайте strict: true для каждой функции. Перечислите все свойства в required и установите additionalProperties в false. minLength, maxLength, minItems и maxItems не поддерживаются.

Строгий режим работает как в режиме размышления, так и без него. (Источник вопроса: поисковая подсказка «deepseek api function calling». Основание: руководство DeepSeek по вызовам инструментов.)

С чего начать

Сначала создайте API-ключ по инструкции из раздела Быстрый старт EveryInfra. Бесплатно изучите каталог и проверьте параметры и цены xiaohongshu/search, zhihu/search и weibo/search. Обзоры платформ: API данных Xiaohongshu, API данных Zhihu и API данных Weibo. Все цены — на странице тарифов.

Затем скопируйте из этой статьи четыре определения инструментов и код цикла. Подставьте оба ключа и прогоните один вопрос от начала до конца. Наконец, выберите в разделе о стоимости план под ваш объём вопросов и задайте лимит в BUDGET. Ту же идею с другими инструментами показывают две статьи. Первая — динамические рабочие процессы в Claude Code для комментариев Xiaohongshu. Вторая — Gemini Deep Research с удалённым MCP-сервером. Если нужны данные комментариев, комментарии Weibo работают так же, как комментарии Xiaohongshu.

Источники

  1. «Search & Fetch», DeepSeek API Docs, дата обращения: 2026-11-03, https://api-docs.deepseek.com/guides/search
  2. «Search API reference», DeepSeek API Docs, дата обращения: 2026-11-03, https://api-docs.deepseek.com/api/search
  3. «Fetch API reference», DeepSeek API Docs, дата обращения: 2026-11-03, https://api-docs.deepseek.com/api/fetch
  4. «Models & Pricing», DeepSeek API Docs, дата обращения: 2026-11-03, https://api-docs.deepseek.com/quick_start/pricing
  5. «DeepSeek-V4.1-Flash-1017 release note», DeepSeek, 2026-10-17, https://api-docs.deepseek.com/news/news261017
  6. «Tool Calls», DeepSeek API Docs, дата обращения: 2026-11-03, https://api-docs.deepseek.com/guides/tool_calls
  7. «Thinking Mode», DeepSeek API Docs, дата обращения: 2026-11-03, https://api-docs.deepseek.com/guides/thinking_mode
  8. «Rate Limit & Isolation», DeepSeek API Docs, дата обращения: 2026-11-03, https://api-docs.deepseek.com/quick_start/rate_limit
  9. «Token & Token Usage», DeepSeek API Docs, дата обращения: 2026-11-03, https://api-docs.deepseek.com/quick_start/token_usage
  10. «Integrate with Claude Code», DeepSeek API Docs, дата обращения: 2026-11-03, https://api-docs.deepseek.com/quick_start/agent_integrations/claude_code
  11. «API keys», DeepSeek Platform, дата обращения: 2026-11-03, https://platform.deepseek.com/api_keys
  12. «DeepSeek-V4.1-Flash-1017 model card», Hugging Face, дата обращения: 2026-11-03, https://huggingface.co/deepseek-ai/DeepSeek-V4.1-Flash-1017
  13. Репозиторий DeepSeek Harness, GitHub, дата обращения: 2026-11-03, https://github.com/deepseek-ai/deepseek-harness
  14. «Быстрый старт DeepSeek Harness», дата обращения: 2026-11-03, https://deepseek-harness.github.io/deepseek-harness/en/guide/quickstart
  15. «dsh-tool-web README», GitHub, дата обращения: 2026-11-03, https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/web/tool-web/README.md
  16. «dsh-mcp-client README», GitHub, дата обращения: 2026-11-03, https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/mcp/mcp-client/README.md
  17. «Harness MCP packages README», GitHub, дата обращения: 2026-11-03, https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/mcp/README.md
  18. openai-python, GitHub, дата обращения: 2026-11-03, https://github.com/openai/openai-python
  19. openai, PyPI, дата обращения: 2026-11-03, https://pypi.org/project/openai/
  20. «Function calling», OpenAI developer docs, дата обращения: 2026-11-03, https://platform.openai.com/docs/guides/function-calling
  21. «Advanced Usage» (тайм-ауты), документация Requests, дата обращения: 2026-11-03, https://requests.readthedocs.io/en/latest/user/advanced/
  22. «json — JSON encoder and decoder», документация Python, дата обращения: 2026-11-03, https://docs.python.org/3/library/json.html
  23. «MCP Specification 2026-07-28», Model Context Protocol, дата обращения: 2026-11-03, https://modelcontextprotocol.io/specification/2026-07-28
  24. «Transports», MCP 2026-07-28, дата обращения: 2026-11-03, https://modelcontextprotocol.io/specification/2026-07-28/basic/transports
  25. «Tools», MCP 2026-07-28, дата обращения: 2026-11-03, https://modelcontextprotocol.io/specification/2026-07-28/server/tools
  26. «Authorization», MCP 2026-07-28, дата обращения: 2026-11-03, https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization
  27. «Weibo open platform API list», дата обращения: 2026-11-03, https://open.weibo.com/wiki/API
  28. «Network Data Security Management Regulations», Правительство КНР, 2024-09-30, https://www.gov.cn/zhengce/content/202409/content_6977766.htm
  29. «Interim Measures for the Management of Generative AI Services», Администрация киберпространства Китая, 2023-07-13, https://www.cac.gov.cn/2023-07/13/c_1690898327029107.htm
  30. «Measures for Labeling AI-Generated Synthetic Content», Администрация киберпространства Китая и другие ведомства, 2025-03-14, https://www.cac.gov.cn/2025-03/14/c_1743654684782215.htm
  31. «Does Rank Still Matter? Position Bias When AI Agents Shop on Our Behalf», arXiv:2608.22697v5, 2026-10-13, https://arxiv.org/abs/2608.22697
  32. «Social-HUMINT: An LLM-Augmented Unified Framework for Measuring Social Media Exposure», arXiv:2610.31573, 2026-10-22, https://arxiv.org/abs/2610.31573
  33. Каталог данных EveryInfra, дата обращения: 2026-11-03, 00:13 SGT, https://api.everyinfra.com/api/v1/social/catalog
  34. Каталог EveryInfra для Xiaohongshu, дата обращения: 2026-11-03, https://api.everyinfra.com/api/v1/social/catalog?platform=xiaohongshu
  35. Каталог EveryInfra для Zhihu, дата обращения: 2026-11-03, https://api.everyinfra.com/api/v1/social/catalog?platform=zhihu
  36. Каталог EveryInfra для Weibo, дата обращения: 2026-11-03, https://api.everyinfra.com/api/v1/social/catalog?platform=weibo
  37. «Context Caching», DeepSeek API docs, дата обращения: 2026-11-03, https://api-docs.deepseek.com/guides/kv_cache
  38. «Multi-round Conversation», DeepSeek API docs, дата обращения: 2026-11-03, https://api-docs.deepseek.com/guides/multi_round_chat
  39. «Sorting Techniques», документация Python, дата обращения: 2026-11-03, https://docs.python.org/3/howto/sorting.html
  40. «Built-in Types: set», документация Python, дата обращения: 2026-11-03, https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset

Справка BL-73