Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex AI Studio
  • Начало работы с Model Gallery
    • О сервисе Yandex AI Studio
    • Yandex Workflows
    • Квоты и лимиты
    • Термины и определения
    • Все инструкции
    • Отключить логирование запросов
    • Получить API-ключ
      • Создать текстового агента с поиском в интернете
      • Создать текстового агента с поиском по файлам
      • Создать агента с поиском по заранее созданным чанкам
      • Работа с поисковым индексом Vector Store
  • Переход с AI Assistant API на Responses API
  • Совместимость с OpenAI
  • Управление доступом
  • Правила тарификации
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений

В этой статье:

  • Перед началом работы
  • Разбейте информацию на фрагменты
  • Загрузите файл в Vector Store
  • Создайте поисковый индекс Vector Store
  • Создайте AI-агента с поиском по индексу
  1. Пошаговые инструкции
  2. AI Search
  3. Создать агента с поиском по заранее созданным чанкам

Создать агента с поиском по заранее созданным чанкам

Статья создана
Yandex Cloud
Обновлена 4 декабря 2025 г.
  • Перед началом работы
  • Разбейте информацию на фрагменты
  • Загрузите файл в Vector Store
  • Создайте поисковый индекс Vector Store
  • Создайте AI-агента с поиском по индексу

При работе с Vector Store вы можете загружать в поисковый индекс не только целые файлы, но и предварительно подготовленные фрагменты информации в формате JSONL. Такой подход предоставляет вам полный контроль над структурой данных и позволяет повысить точность поиска и генеративных ответов, исключив возможные потери смысла при автоматической фрагментации документов.

Перед началом работыПеред началом работы

Чтобы воспользоваться примером:

Python
  1. Создайте сервисный аккаунт и назначьте ему роли ai.assistants.editor и ai.languageModels.user.

  2. Получите и сохраните API-ключ сервисного аккаунта с заданной областью действия yc.ai.foundationModels.execute.

    Примечание

    Если вы используете ОС Windows, рекомендуем предварительно установить оболочку WSL и выполнять дальнейшие действия в этой оболочке.

  3. Установите Python версии 3.10 или выше.

  4. Установите библиотеку Python venv для создания изолированных виртуальных окружений в Python.

  5. Создайте и войдите в новое виртуальное окружение Python:

    python3 -m venv new-env
    source new-env/bin/activate
    
  6. Установите библиотеку OpenAI для Python:

    pip install openai
    

Разбейте информацию на фрагментыРазбейте информацию на фрагменты

Разбейте на подходящие фрагменты информацию, которую вы хотите загрузить в поисковый индекс. Получившиеся фрагменты сохраните в формате JSON Lines в виде пар "body":"<содержимое_фрагмента>". Например:

{ "body": "Как восстановить пароль? Перейдите на страницу восстановления и введите email." }
{ "body": "Можно ли работать офлайн? Да, приложение поддерживает офлайн-режим." }

Сохраните получившиеся фрагменты текста в файл chunks.jsonl

Загрузите файл в Vector StoreЗагрузите файл в Vector Store

Прежде чем создавать поисковый индекс, загрузите в Vector Store полученный файл в формате JSON Lines:

Python
  1. Создайте файл upload.py и добавьте в него следующий код:

    import pathlib
    import openai
    from openai import OpenAI
    
    YANDEX_API_KEY = "<API-ключ>"
    YANDEX_FOLDER_ID = "<идентификатор_каталога>"
    filename = "chunks.jsonl"
    
    
    # Локальный файл для индексации
    def local_path(path: str) -> pathlib.Path:
        return pathlib.Path(__file__).parent / path
    
    
    def main():
        client = OpenAI(
            api_key=YANDEX_API_KEY,
            base_url="https://rest-assistant.api.cloud.yandex.net/v1",
            project=YANDEX_FOLDER_ID,
        )
    
        print("Загружаем файл...")
    
        with open(local_path(filename), "rb") as file:
            f = client.files.create(
                file=(filename, file, "application/jsonlines"),
                purpose="assistants",
                expires_after=openai.types.file_create_params.ExpiresAfter(
                    anchor="created_at", seconds=3600
                ),
                extra_body={"format": "chunks"},
            )
    
        print(f"Файл {filename} загружен:", f.id)
    
    
    if __name__ == "__main__":
        main()
    

    Где:

    • YANDEX_API_KEY — полученный перед началом работы API-ключ сервисного аккаунта.
    • YANDEX_FOLDER_ID — идентификатор каталога, в котором выполняются операции с Vector Store API.
  2. Выполните созданный файл:

    python3 upload.py
    

    Результат:

    Загружаем файл...
    Файл chunks.jsonl загружен: fvtnmsqdn2pq********
    

    Сохраните полученный идентификатор загруженного файла — он понадобится при создании поискового индекса.

Создайте поисковый индекс Vector StoreСоздайте поисковый индекс Vector Store

Создайте поисковый индекс из загруженного на предыдущем шаге файла:

Python
  1. Создайте файл index.py и добавьте в него следующий код:

    import time
    from openai import OpenAI
    
    YANDEX_API_KEY = "<API-ключ>"
    YANDEX_FOLDER_ID = "<идентификатор_каталога>"
    input_file_ids = ["<идентификатор_файла>"]
    
    
    def main():
        client = OpenAI(
            api_key=YANDEX_API_KEY,
            base_url="https://rest-assistant.api.cloud.yandex.net/v1",
            project=YANDEX_FOLDER_ID,
        )
    
        # Создаем поисковый индекс с несколькими файлами
        print("Создаем поисковый индекс...")
        vector_store = client.vector_stores.create(
            # Говорящее название индекса
            name="База знаний поддержки",
            # Ваши метки для файлов
            metadata={"key": "value"},
            # Время жизни индекса
            # last_active_at - после последней активности
            expires_after={"anchor": "last_active_at", "days": 1},
            # или created_at - после создания
            # expires_after={"anchor": "created_at", "days": 1},
            file_ids=input_file_ids,  # <- список файлов
        )
        vector_store_id = vector_store.id
        print("Vector store создан:", vector_store_id)
    
        # Ждем готовности поискового индекса
        while True:
            vector_store = client.vector_stores.retrieve(vector_store_id)
            print("Статус vector store:", vector_store.status)
            if vector_store.status == "completed":
                break
            time.sleep(2)
    
        print("Vector store готов к работе.")
    
    
    if __name__ == "__main__":
        main()
    

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

  2. Выполните созданный файл:

    python3 index.py
    

    Результат:

    Создаем поисковый индекс...
    Vector store создан: fvtol0geat8g********
    Статус vector store: in_progress
    Статус vector store: in_progress
    Статус vector store: in_progress
    Статус vector store: in_progress
    Статус vector store: in_progress
    Статус vector store: completed
    Vector store готов к работе.
    

    Сохраните полученный идентификатор созданного индекса — он понадобится при выполнении поискового запроса.

Создайте AI-агента с поиском по индексуСоздайте AI-агента с поиском по индексу

Чтобы AI-агент мог использовать созданный индекс, передайте идентификатор индекса в параметре tools метода client.responses.create():

Python
  1. Создайте файл query.py и добавьте в него следующий код:

    import openai
    import json
    
    YANDEX_API_KEY = "<API-ключ>"
    YANDEX_FOLDER_ID = "<идентификатор_каталога>"
    VECTOR_STORE_ID = "<идентификатор_поискового_индекса>"
    QUERY_TEXT = "Как восстановить пароль?"
    YANDEX_CLOUD_MODEL = "yandexgpt"
    
    
    client = openai.OpenAI(
        api_key=YANDEX_API_KEY,
        base_url="https://rest-assistant.api.cloud.yandex.net/v1",
        project=YANDEX_FOLDER_ID,
    )
    
    response = client.responses.create(
        model=f"gpt://{YANDEX_FOLDER_ID}/{YANDEX_CLOUD_MODEL}",
        instructions="Ты — умный ассистент. Если спрашивают о работе с приложением — ищи в подключенном индексе",
        tools=[{"type": "file_search", "vector_store_ids": [VECTOR_STORE_ID]}],
        input=QUERY_TEXT,
    )
    
    # Ответ для пользователя
    print("Текст ответа:")
    print(response.output_text)
    print("\n" + "=" * 50 + "\n")
    
    # Полный ответ
    print("Полный ответ (JSON):")
    print(json.dumps(response.model_dump(), indent=2, ensure_ascii=False))
    

    Где VECTOR_STORE_ID — идентификатор поискового индекса Vector Store, полученный на предыдущем шаге.

  2. Выполните созданный файл:

    python3 query.py
    

    Результат:

    Пример короткого ответа
    Текст ответа:
    Перейдите на страницу восстановления и введите email.
    
    Пример полного ответа
    Полный ответ (JSON):
    {
      "id": "d70f114f-77c3-427b-b3cd-b70c********",
      "created_at": 1764746460.0,
      "error": null,
      "incomplete_details": null,
      "instructions": "Ты — умный ассистент. Если спрашивают о работе с приложением — ищи в подключенном индексе",
      "metadata": null,
      "model": "gpt://b1gt6g8ht345********/yandexgpt",
      "object": "response",
      "output": [
        {
          "id": "f170da63-5f61-4f9b-a4ba-49d4********",
          "queries": [
            "Как восстановить пароль?"
          ],
          "status": "completed",
          "type": "file_search_call",
          "results": [
            {
              "attributes": {},
              "file_id": "fvtq3f79gjc7********",
              "filename": "chunks.jsonl",
              "score": 0.9034204,
              "text": "Как восстановить пароль? Перейдите на страницу восстановления и введите email.",
              "valid": true
            },
            {
              "attributes": {},
              "file_id": "fvtq3f79gjc7********",
              "filename": "chunks.jsonl",
              "score": 0.29538444,
              "text": "Можно ли работать офлайн? Да, приложение поддерживает офлайн-режим.",
              "valid": true
            }
          ],
          "valid": true
        },
        {
          "id": "40d3b1e3-ffe6-4c8f-b332-ed71********",
          "content": [
            {
              "annotations": [
                {
                  "file_id": "fvtq3f79gjc7********",
                  "filename": "chunks.jsonl",
                  "index": 0,
                  "type": "file_citation",
                  "valid": true
                },
                {
                  "file_id": "fvtq3f79gjc7********",
                  "filename": "chunks.jsonl",
                  "index": 0,
                  "type": "file_citation",
                  "valid": true
                }
              ],
              "text": "Перейдите на страницу восстановления и введите email.",
              "type": "output_text",
              "logprobs": null,
              "valid": true
            }
          ],
          "role": "assistant",
          "status": "completed",
          "type": "message",
          "valid": true
        }
      ],
      "parallel_tool_calls": true,
      "temperature": null,
      "tool_choice": "auto",
      "tools": [
        {
          "type": "file_search",
          "vector_store_ids": [
            "fvtneupef1s8********"
          ],
          "filters": null,
          "max_num_results": null,
          "ranking_options": null,
          "valid": true
        }
      ],
      "top_p": null,
      "background": false,
      "conversation": null,
      "max_output_tokens": null,
      "max_tool_calls": null,
      "previous_response_id": null,
      "prompt": null,
      "prompt_cache_key": null,
      "prompt_cache_retention": null,
      "reasoning": null,
      "safety_identifier": null,
      "service_tier": null,
      "status": "completed",
      "text": null,
      "top_logprobs": null,
      "truncation": null,
      "usage": {
        "input_tokens": 232,
        "input_tokens_details": {
          "cached_tokens": 0,
          "valid": true
        },
        "output_tokens": 8,
        "output_tokens_details": {
          "reasoning_tokens": 0,
          "valid": true
        },
        "total_tokens": 240,
        "valid": true
      },
      "user": "",
      "valid": true
    }
    

См. такжеСм. также

  • Создать текстового агента с поиском по файлам

Была ли статья полезна?

Предыдущая
Создать текстового агента с поиском по файлам
Следующая
Работа с поисковым индексом Vector Store
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»