Создать ассистента с инструментом WebSearch
Функциональность AI Assistant API находится на стадии Preview.
AI Assistant API — это функциональность Foundation Models для создания AI-ассистентов. С его помощью можно создать персонализированных помощников, реализовывать сценарий генеративного ответа с учетом информации из внешних источников (RAG
Получать информацию из источников в интернете AI-ассистентам позволяет инструмент WebSearch.
Примечание
Использование инструмента WebSearch тарифицируется как генеративный ответ сервиса Yandex Search API.
Перед началом работы
Чтобы воспользоваться примерами:
Получите данные для аутентификации в API, как описано в разделе Аутентификация в API Yandex Foundation Models.
Создайте ассистента
Этот пример показывает, как создать ассистента, который для ответов использует информацию из интернета. В примере будет задействован базовый алгоритм работы с AI Assistant API через интерфейс gRPC API — создание ассистента и треда, а также последующее обращение к ассистенту с запросом.
В качестве внешних источников информации будут использованы официальный сайтoptions
инструмента WebSearch.
-
Создайте AI-ассистента:
-
Создайте файл
assistant.json
с телом запроса на создание ассистента:assistant.json
{ "folder_id": "<идентификатор_каталога>", "model_uri": "gpt://<идентификатор_каталога>/yandexgpt-lite/latest", "instruction": "Ты — умный помощник финансовой компании. Отвечай вежливо. Для ответов на вопросы воспользуйся инструментом поиска. Не придумывай ответ.", "tools": [ { "gen_search": { "options": { "site": { "site": [ "https://cbr.ru/", "https://yandex.ru/finance/currencies" ] }, "enable_nrfm_docs": "true" }, "description": "Инструмент для получения информации об официальных курсах валют." } } ] }
Где:
-
folder_id
— идентификатор каталога, на который у вашего аккаунта есть ролиai.assistants.editor
иai.languageModels.user
или выше. -
model_uri
— URI используемой модели генерации текста. -
instruction
— базовая инструкция, в соответствии с которой AI-ассистент будет выполнять запросы пользователя. -
tools
— настройки инструмента, который будет использоваться создаваемым ассистентом:site
— массив сайтов, на которых ассистент будет иметь возможность искать информацию.enable_nrfm_docs
— параметр, который определяет, попадут ли в результаты поиска документы, недоступные при прямом переходе с главных страниц заданных сайтов.description
— описание создаваемого инструмента, который позволяет ассистенту понять, нужно ли при генерации ответа на конкретный запрос использовать данный инструмент.
Подробнее о доступных настройках инструмента WebSearch для поиска в интернете см. в разделе Инструмент WebSearch.
-
-
Отправьте запрос на создание AI-ассистента, указав путь к созданному файлу
assistant.json
с телом запроса:export IAM_TOKEN=<IAM-токен> grpcurl \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ < <путь_к_телу_запроса> \ assistant.api.cloud.yandex.net:443 yandex.cloud.ai.assistants.v1.AssistantService/Create | jq
Где:
<IAM-токен>
— IAM-токен, полученный перед началом работы.<путь_к_телу_запроса>
— путь к созданному ранее файлу с телом запросаassistant.json
.
Результат
{ "id": "fvt1m68ugu04********", "folder_id": "b1gt6g8ht345********", "created_by": "ajeol2afu1js********", "created_at": "2025-08-05T08:26:24.145150Z", "updated_by": "ajeol2afu1js********", "updated_at": "2025-08-05T08:26:24.145150Z", "expiration_config": { "expiration_policy": "SINCE_LAST_ACTIVE", "ttl_days": "7" }, "expires_at": "2025-08-12T08:26:24.145150Z", "model_uri": "gpt://b1gt6g8ht345********/yandexgpt-lite/latest", "instruction": "Ты — умный помощник финансовой компании. Отвечай вежливо. Для ответов на вопросы воспользуйся инструментом поиска. Не придумывай ответ.", "prompt_truncation_options": { "auto_strategy": {} }, "completion_options": {}, "tools": [ { "gen_search": { "options": { "site": { "site": [ "https://cbr.ru/", "https://yandex.ru/finance/currencies" ] }, "enable_nrfm_docs": true }, "description": "Инструмент для получения информации об официальных курсах валют." } } ] }
В ответ сервис вернет идентификатор созданного AI-ассистента. Сохраните полученный идентификатор (значение поля
id
) — он понадобится при обращении к ассистенту.
-
-
Создайте тред:
-
Создайте файл
thread.json
с телом запроса на создание треда, указав идентификатор каталога:thread.json
{ "folder_id": "<идентификатор_каталога>" }
-
Отправьте запрос на создание треда, указав путь к созданному файлу
thread.json
с телом запроса:grpcurl \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ < <путь_к_телу_запроса> \ assistant.api.cloud.yandex.net:443 yandex.cloud.ai.assistants.v1.threads.ThreadService/Create | jq
Результат
{ "id": "fvt8tf1c3beu********", "folder_id": "b1gt6g8ht345********", "default_message_author_id": "fvt1qo9usone********", "created_by": "ajeol2afu1js********", "created_at": "2025-08-13T10:50:52.289620Z", "updated_by": "ajeol2afu1js********", "updated_at": "2025-08-13T10:50:52.289620Z", "expiration_config": { "expiration_policy": "SINCE_LAST_ACTIVE", "ttl_days": "7" }, "expires_at": "2025-08-20T10:50:52.289620Z" }
Сохраните полученный идентификатор треда (значение поля
id
) — он понадобится позднее.
-
-
Создайте сообщение в треде:
-
Создайте файл
message.json
с телом запроса на создание сообщения, указав полученный ранее идентификатор треда и текст запроса:message.json
{ "thread_id": "<идентификатор_треда>", "content": { "content": [ { "text": { "content": "Какой официальный курс доллара установлен на сегодня?" } } ] } }
-
Отправьте запрос на создание сообщения, указав путь к созданному файлу
message.json
с телом запроса:grpcurl \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ < <путь_к_телу_запроса> \ assistant.api.cloud.yandex.net:443 yandex.cloud.ai.assistants.v1.threads.MessageService/Create | jq
Результат:
{ "id": "fvtfgeqhe4ct********", "thread_id": "fvth2n5v4i7e********", "created_by": "ajeol2afu1js********", "created_at": "2025-08-05T09:18:48.515453Z", "author": { "id": "fvtivd1j5ica********", "role": "USER" }, "content": { "content": [ { "text": { "content": "Какой курс доллара установлен Банком России на сегодня?" } } ] }, "status": "COMPLETED" }
-
-
Выполните запуск ассистента с созданным ранее сообщением:
-
Создайте файл
run.json
с телом запроса на запуск ассистента, указав полученные ранее идентификаторы ассистента и треда:run.json
{ "assistant_id": "<идентификатор_ассистента>", "thread_id": "<идентификатор_треда>" }
-
Отправьте запрос на запуск ассистента, указав путь к созданному файлу
run.json
с телом запроса:grpcurl \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ < <путь_к_телу_запроса> \ assistant.api.cloud.yandex.net:443 yandex.cloud.ai.assistants.v1.runs.RunService/Create | jq
Результат:
{ "id": "fvtqms73nvkl********", "assistant_id": "fvt1m68ugu04********", "thread_id": "fvtv9ikd6lme********", "created_by": "ajeol2afu1js********", "created_at": "2025-08-05T09:23:55.096007666Z", "state": { "status": "PENDING" } }
Сервис вернул информацию о запуске: запуск находится в ожидании выполнения (статус
PENDING
). Сохраните идентификатор запуска (значение поляid
) — он понадобится на следующем шаге.
-
-
Получите результат запуска с ответом ассистента:
-
Создайте файл
get_result.json
с телом запроса на получение ответа от AI-ассистента, указав полученный ранее идентификатор запуска:get_result.json
{ "run_id": "<идентификатор_запуска>" }
-
Отправьте запрос на получение ответа, указав путь к созданному файлу
get_result.json
с телом запроса:grpcurl \ -rpc-header "Authorization: Bearer $IAM_TOKEN" \ -d @ < <путь_к_телу_запроса> \ assistant.api.cloud.yandex.net:443 yandex.cloud.ai.assistants.v1.runs.RunService/Get | jq
Результат
{ "id": "fvtr0r43s94a********", "assistant_id": "fvtshcldmbcm********", "thread_id": "fvth2n5v4i7e********", "created_by": "ajeol2afu1js********", "created_at": "2025-08-04T19:01:56.736924537Z", "state": { "status": "COMPLETED", "completed_message": { "id": "fvtlspo6k12e********", "thread_id": "fvth2n5v4i7e********", "created_by": "ajeol2afu1js********", "created_at": "2025-08-04T19:01:58.960131555Z", "author": { "id": "fvtshcldmbcm********", "role": "ASSISTANT" }, "content": { "content": [ { "text": { "content": "Официальный курс доллара США на сегодня составляет 79,6736 рубля за 1 доллар. Эту информацию можно подтвердить на сайте Центрального банка Российской Федерации (cbr.ru/currency_base/daily/)." } } ] }, "status": "COMPLETED" } }, "usage": { "prompt_tokens": "376", "completion_tokens": "59", "total_tokens": "435" } }
В поле
content
AI-ассистент вернул ответ модели, который был сгенерирован с использованием данных на сайтах, заданных в настройках ассистента и треда.
-
См. также
- Создать простого ассистента
- Создать RAG-ассистента с инструментом VectorStore
- Создать AI-ассистента для RAG с сохранением метаданных исходных файлов и индексов
- Создать AI-ассистента с RAG по PDF-файлам со сложным форматированием
- Инструменты для получения дополнительной информации
- Примеры работы с ML SDK на GitHub