Создать ассистента с инструментом WebSearch
Функциональность AI Assistant API находится на стадии Preview.
AI Assistant API — это функциональность Foundation Models для создания AI-ассистентов. С его помощью можно создать персонализированных помощников, реализовывать сценарий генеративного ответа с учетом информации из внешних источников (RAG
Получать информацию из источников в интернете AI-ассистентам позволяет инструмент WebSearch.
Примечание
Использование инструмента WebSearch тарифицируется как генеративный ответ сервиса Yandex Search API.
Перед началом работы
Чтобы воспользоваться примерами:
Получите данные для аутентификации в API, как описано в разделе Аутентификация в API Yandex Foundation Models.
Чтобы воспользоваться примерами, установите утилиты cURL
Создайте ассистента
Этот пример показывает, как создать ассистента, который для ответов использует информацию из интернета. В примере будет задействован базовый алгоритм работы с AI Assistant API через интерфейс REST API — создание ассистента и треда, а также последующее обращение к ассистенту с запросом.
В качестве внешних источников информации будут использованы официальный сайтoptions
инструмента WebSearch.
-
Создайте AI-ассистента:
-
Создайте файл
assistant.json
с телом запроса на создание ассистента:assistant.json
{ "folderId": "<идентификатор_каталога>", "modelUri": "gpt://<идентификатор_каталога>/yandexgpt-lite/latest", "instruction": "Ты — умный помощник финансовой компании. Отвечай вежливо. Для ответов на вопросы воспользуйся инструментом поиска. Не придумывай ответ.", "tools": [ { "genSearch": { "options": { "site": { "site": [ "https://cbr.ru/", "https://yandex.ru/finance/currencies" ] }, "enableNrfmDocs": true }, "description": "Инструмент для получения информации об официальных курсах валют." } } ] }
Где:
-
folderId
— идентификатор каталога, на который у вашего аккаунта есть ролиai.assistants.editor
иai.languageModels.user
или выше. -
modelUri
— URI используемой модели генерации текста. -
instruction
— базовая инструкция, в соответствии с которой AI-ассистент будет выполнять запросы пользователя. -
tools
— настройки инструмента, который будет использоваться создаваемым ассистентом:site
— массив сайтов, на которых ассистент будет иметь возможность искать информацию.enableNrfmDocs
— параметр, который определяет, попадут ли в результаты поиска документы, недоступные при прямом переходе с главных страниц заданных сайтов.description
— описание создаваемого инструмента, который позволяет ассистенту понять, нужно ли при генерации ответа на конкретный запрос использовать данный инструмент.
Подробнее о доступных настройках инструмента WebSearch для поиска в интернете см. в разделе Инструмент WebSearch.
-
-
Отправьте запрос на создание AI-ассистента, указав путь к созданному файлу
assistant.json
с телом запроса:export IAM_TOKEN=<IAM-токен> curl \ --request POST \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --silent \ --data "@<путь_к_телу_запроса>" \ "https://rest-assistant.api.cloud.yandex.net/assistants/v1/assistants" | \ jq
Где:
<IAM-токен>
— IAM-токен, полученный перед началом работы.<путь_к_телу_запроса>
— путь к созданному ранее файлу с телом запросаassistant.json
.
Результат
{ "id": "fvthd7m0d6up********", "folder_id": "b1gt6g8ht345********", "name": "", "description": "", "created_by": "ajeol2afu1js********", "created_at": "2025-08-27T11:07:37.532517Z", "updated_by": "ajeol2afu1js********", "updated_at": "2025-08-27T11:07:37.532517Z", "expiration_config": { "expiration_policy": "SINCE_LAST_ACTIVE", "ttl_days": "7" }, "expires_at": "2025-09-03T11:07:37.532517Z", "labels": {}, "model_uri": "gpt://b1gt6g8ht345********/yandexgpt-lite/latest", "instruction": "Ты — умный помощник финансовой компании. Отвечай вежливо. Для ответов на вопросы воспользуйся инструментом поиска. Не придумывай ответ.", "prompt_truncation_options": { "max_prompt_tokens": null, "auto_strategy": {} }, "completion_options": { "max_tokens": null, "temperature": null }, "tools": [ { "gen_search": { "options": { "site": { "site": [ "https://cbr.ru/", "https://yandex.ru/finance/currencies" ] }, "enable_nrfm_docs": true, "search_filters": [] }, "description": "Инструмент для получения информации об официальных курсах валют." } } ], "response_format": null }
В ответ сервис вернет идентификатор созданного AI-ассистента. Сохраните полученный идентификатор (значение поля
id
) — он понадобится при обращении к ассистенту.
-
-
Создайте тред:
-
Создайте файл
thread.json
с телом запроса на создание треда, указав идентификатор каталога:thread.json
{ "folderId": "<идентификатор_каталога>" }
-
Отправьте запрос на создание треда, указав путь к созданному файлу
thread.json
с телом запроса:curl \ --request POST \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --silent \ --data "@<путь_к_телу_запроса>" \ "https://rest-assistant.api.cloud.yandex.net/assistants/v1/threads" | \ jq
Результат
{ "id": "fvtfq63a134i********", "folder_id": "b1gt6g8ht345********", "name": "", "description": "", "default_message_author_id": "fvtsnf3tqbhg********", "created_by": "ajeol2afu1js********", "created_at": "2025-08-27T11:22:28.999319Z", "updated_by": "ajeol2afu1js********", "updated_at": "2025-08-27T11:22:28.999319Z", "expiration_config": { "expiration_policy": "SINCE_LAST_ACTIVE", "ttl_days": "7" }, "expires_at": "2025-09-03T11:22:28.999319Z", "labels": {}, "tools": [] }
Сохраните полученный идентификатор треда (значение поля
id
) — он понадобится позднее.
-
-
Создайте сообщение в треде:
-
Создайте файл
message.json
с телом запроса на создание сообщения, указав полученный ранее идентификатор треда и текст запроса:message.json
{ "threadId": "<идентификатор_треда>", "content": { "content": [ { "text": { "content": "Какой официальный курс доллара установлен на сегодня?" } } ] } }
-
Отправьте запрос на создание сообщения, указав путь к созданному файлу
message.json
с телом запроса:curl \ --request POST \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --silent \ --data "@<путь_к_телу_запроса>" \ "https://rest-assistant.api.cloud.yandex.net/assistants/v1/messages" | \ jq
Результат:
{ "id": "fvt6bpm6mbp5********", "thread_id": "fvtfq63a134i********", "created_by": "ajeol2afu1js********", "created_at": "2025-08-27T11:24:46.312977Z", "author": { "id": "fvtsnf3tqbhg********", "role": "USER" }, "labels": {}, "content": { "content": [ { "text": { "content": "Какой официальный курс доллара установлен на сегодня?" } } ] }, "status": "COMPLETED", "citations": [] }
-
-
Выполните запуск ассистента с созданным ранее сообщением:
-
Создайте файл
run.json
с телом запроса на запуск ассистента, указав полученные ранее идентификаторы ассистента и треда:run.json
{ "assistantId": "<идентификатор_ассистента>", "threadId": "<идентификатор_треда>" }
-
Отправьте запрос на запуск ассистента, указав путь к созданному файлу
run.json
с телом запроса:curl \ --request POST \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --silent \ --data "@<путь_к_телу_запроса>" \ "https://rest-assistant.api.cloud.yandex.net/assistants/v1/runs" | \ jq
Результат:
{ "id": "fvtar74rehg7********", "assistant_id": "fvthd7m0d6up********", "thread_id": "fvtfq63a134i********", "created_by": "ajeol2afu1js********", "created_at": "2025-08-27T11:31:06.486275281Z", "labels": {}, "state": { "status": "PENDING" }, "usage": null, "custom_prompt_truncation_options": null, "custom_completion_options": null, "tools": [], "custom_response_format": null }
Сервис вернул информацию о запуске: запуск находится в ожидании выполнения (статус
PENDING
). Сохраните идентификатор запуска (значение поляid
) — он понадобится на следующем шаге.
-
-
Получите результат запуска с ответом ассистента. Для этого выполните запрос, указав полученный ранее идентификатор запуска:
curl \ --request GET \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --silent \ "https://rest-assistant.api.cloud.yandex.net/assistants/v1/runs/<идентификатор_запуска>" | \ jq
Результат
{ "id": "fvtar74rehg7********", "assistant_id": "fvthd7m0d6up********", "thread_id": "fvtfq63a134i********", "created_by": "ajeol2afu1js********", "created_at": "2025-08-27T11:31:06.486275281Z", "labels": {}, "state": { "status": "COMPLETED", "completed_message": { "id": "fvt24upe31hh********", "thread_id": "fvtfq63a134i********", "created_by": "ajeol2afu1js********", "created_at": "2025-08-27T11:31:08.781561740Z", "author": { "id": "fvthd7m0d6up********", "role": "ASSISTANT" }, "labels": {}, "content": { "content": [ { "text": { "content": "Официальный курс доллара США к рублю Российской Федерации на сегодня составляет 80,5268 рубля за 1 доллар." } } ] }, "status": "COMPLETED", "citations": [] } }, "usage": { "prompt_tokens": "390", "completion_tokens": "44", "total_tokens": "434" }, "custom_prompt_truncation_options": null, "custom_completion_options": null, "tools": [], "custom_response_format": null }
В поле
content
AI-ассистент вернул ответ модели, который был сгенерирован с использованием данных на сайтах, заданных в настройках ассистента.
См. также
- Создать простого ассистента
- Создать RAG-ассистента с инструментом VectorStore
- Создать AI-ассистента для RAG с сохранением метаданных исходных файлов и индексов
- Создать AI-ассистента с RAG по PDF-файлам со сложным форматированием
- Инструменты для получения дополнительной информации
- Примеры работы с ML SDK на GitHub