Веб-поиск DeepSeek
DeepSeek V4.1 Flash ищет актуальную информацию в интернете и указывает источники — через инструмент web_search в Responses API.
📝 Обзор
deepseek-v4.1-flash умеет искать в интернете: модель сама решает, нужен ли поиск и по каким ключевым словам искать, отвечает на основе результатов и прикладывает ссылки на источники. Подходит для быстро меняющейся информации: новости, погода, котировки, результаты матчей.
Веб-поиск включается инструментом web_search в Responses API (POST /v1/responses).
Условия
- Группа токена: Deepseek官转
- Модель:
deepseek-v4.1-flash - Эндпоинт:
POST https://api.88api.ai/v1/responses
💡 Примеры
Базовый запрос ✅
curl https://api.88api.ai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "deepseek-v4.1-flash",
"tools": [{"type": "web_search"}],
"input": "Какая сегодня погода в Ханчжоу?"
}'Python (OpenAI SDK) ✅
from openai import OpenAI
client = OpenAI(base_url="https://api.88api.ai/v1", api_key="sk-ваш-токен")
resp = client.responses.create(
model="deepseek-v4.1-flash",
tools=[{"type": "web_search"}],
input="Какая сегодня погода в Ханчжоу?",
)
print(resp.output_text)Ограничение ключевых слов и результатов ✅
curl https://api.88api.ai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $API_KEY" \
-d '{
"model": "deepseek-v4.1-flash",
"max_tool_calls": 2,
"tools": [{
"type": "web_search",
"max_keyword": 2,
"limit": 5,
"user_location": {"type": "approximate", "country": "Китай", "region": "Чжэцзян", "city": "Ханчжоу"}
}],
"input": "Какая сегодня погода в Ханчжоу?"
}'Потоковый вывод ✅
Добавьте "stream": true в тело запроса. Каждый поиск отправляет следующие события, после чего начинается текст ответа:
| Событие | Значение |
|---|---|
response.web_search_call.in_progress | Поиск начат |
response.web_search_call.searching | Идёт поиск |
response.web_search_call.completed | Поиск завершён |
response.output_text.delta | Текст ответа по частям |
response.completed | Готово; содержит usage |
📬 Пример ответа
Фрагмент; элементы рассуждений (reasoning) и другие поля опущены:
{
"object": "response",
"status": "completed",
"output": [
{
"type": "web_search_call",
"id": "ws_0217925902513450000...",
"status": "completed",
"action": {
"type": "search",
"query": "погода Ханчжоу сегодня"
}
},
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "В Ханчжоу утром дождь прекратился, стало облачно, максимум около 21–24 °C...",
"annotations": [
{
"type": "url_citation",
"title": "中国气象局-天气预报-城市预报",
"url": "https://weather.cma.cn/web/text/HD/AZJ.html",
"site_name": "中国气象局",
"publish_time": "2026年10月21日 08:00:00(CST) 星期三"
}
]
}
]
}
],
"usage": {
"input_tokens": 4320,
"output_tokens": 418,
"total_tokens": 4738,
"tool_usage": {"web_search": 1},
"tool_usage_details": {"web_search": {"search_engine": 1}}
}
}| Поле | Описание |
|---|---|
output[].type = "web_search_call" | Один поиск, выполненный моделью; action.query — ключевые слова, через ;, если в раунде их несколько |
output[].type = "message" | Итоговый ответ; текст в output_text.text |
annotations[].type = "url_citation" | Источник, на который ссылается ответ: заголовок, ссылка, название сайта, дата публикации |
usage.tool_usage.web_search | Число поисков в запросе (считается по ключевым словам) |
⚙️ Параметры
web_search в tools
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
type | string | Да | Всегда web_search |
max_keyword | integer | Нет | Максимум ключевых слов за раунд поиска, 1–50 |
limit | integer | Нет | Максимум результатов за один поиск, 1–50, по умолчанию 10 |
user_location | object | Нет | Примерное местоположение пользователя, повышает точность погоды и местных вопросов. Формат: {"type": "approximate", "country": "Китай", "region": "Чжэцзян", "city": "Ханчжоу"} |
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
max_tool_calls | integer | Нет | Максимум раундов поиска в одном ответе, 1–10, по умолчанию 3 |
stream | boolean | Нет | Потоковый вывод |
Остальные параметры (input, instructions, max_output_tokens и т. д.) такие же, как в OpenAI Responses.
💰 Оплата
Стоимость = токены модели + поиски:
- Поиски считаются по ключевым словам: раунд с несколькими ключевыми словами засчитывается по одному разу на каждое слово, по значению
usage.tool_usage.web_search. Если модель решила не искать, плата за поиск не взимается. - Токены: результаты поиска передаются модели как входные данные, поэтому входных токенов становится заметно больше (обычно на несколько тысяч за поиск); они оплачиваются по цене модели.
- Чтобы контролировать расходы, ограничьте число ключевых слов за раунд через
max_keywordи число раундов черезmax_tool_calls.
❓ Частые вопросы
Можно ли искать через /v1/chat/completions?
Нет. Веб-поиск работает только в /v1/responses. Инструмент web_search, переданный в Chat Completions, не выполняет поиск и не оплачивается.
Почему модель не стала искать? Модель сама решает, нужен ли поиск. На вопросы, не требующие свежих данных (вычисления, общие знания), она отвечает сразу. Чтобы поиск точно был, попросите об этом явно, например «найди в интернете и ответь».
Работает ли в других группах?
Сейчас веб-поиск поддерживает только deepseek-v4.1-flash в группе Deepseek官转.