Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Foundation Models
    • Все инструкции
    • Отключить логирование запросов
    • Получить API-ключ
    • Пакетная обработка данных
      • Создать простого ассистента
      • Создать ассистента для поиска
      • Создать ассистента для поиска с указанием метаданных файлов и индексов
      • Получить промежуточные результаты генерации ответа
  • Yandex Cloud ML SDK
  • Совместимость с OpenAI
  • Управление доступом
  • Правила тарификации
  • Публичные материалы
  • История изменений

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

  • Перед началом работы
  • Создайте ассистента
  1. Пошаговые инструкции
  2. AI Assistant API
  3. Создать ассистента для поиска с указанием метаданных файлов и индексов

Создать ассистента для поиска с указанием метаданных исходных файлов и индексов

Статья создана
Yandex Cloud
Обновлена 8 апреля 2025 г.
  • Перед началом работы
  • Создайте ассистента

Функциональность AI Assistant API находится на стадии Preview.

AI Assistant API — это инструмент создания AI-ассистентов. С его помощью можно создать персонализированных помощников, реализовывать сценарий генеративного ответа с учетом информации из внешних источников (RAG, Retrieval Augmented Generation), присваивая файлам-источникам и поисковым индексам наборы метаданных, которые позволят более эффективно ориентироваться во внешних источниках.

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

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

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

  2. Получите и сохраните API-ключ сервисного аккаунта.

    В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.

  3. С помощью менеджера пакетов pip установите библиотеку ML SDK:

    pip install yandex-cloud-ml-sdk
    

Создайте ассистентаСоздайте ассистента

SDK

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

  1. Скачайте и распакуйте архив с примерами файлов, которые будут использоваться как дополнительный источник информации. В файлах содержатся рекламные тексты для туров на Бали и в Казахстан, сгенерированные YandexGPT Pro.

  2. Создайте файл search-assistant.py и добавьте в него следующий код:

    import pathlib
    from yandex_cloud_ml_sdk import YCloudML
    from yandex_cloud_ml_sdk.search_indexes import (
        VectorSearchIndexType,
    )
    
    # Локальный путь, по которому расположены файлы-источники.
    mypath = "<путь_к_файлам_с_примерами>"
    
    # Переменная file_labels содержит метаданные,
    # которые будут присвоены файлам-источникам.
    file_labels = [
        {"bali": "Файл с описанием туров на Бали"},
        {"kazakhstan": "Файл с описанием предложения по Казахстану"},
    ]
    
    # Переменная index_label содержит метаданные,
    # которые будут присвоены поисковому индексу.
    index_label = {
        "promo": "Индекс содержит общую информацию о Бали и Казахстане",
        "visas": "Индекс содержит информацию о визовой политике при въезде на Бали и в Казахстан",
    }
    
    def main():
        sdk = YCloudML(
            folder_id="<идентификатор_каталога>",
            auth="<API-ключ>",
        )
    
        # Загрузим файлы-источники и присвоим им метаданные из переменной file_labels.
        # Файлы будут храниться 5 дней.
        paths = pathlib.Path(mypath).iterdir()
        files = []
        file_count = 0
        for path in paths:
            file = sdk.files.upload(
                path,
                ttl_days=5,
                expiration_policy="static",
                name=str(path),
                labels=file_labels[file_count]
            )
            files.append(file)
            file_count += 1
    
        # Создадим индекс для векторного поиска, присвоим индексу метаданные.
        operation = sdk.search_indexes.create_deferred(
            files,
            index_type=VectorSearchIndexType(),
            name="the-bali-and-kazakhstan-index",
            labels=index_label,
        )
    
        # Дождемся создания поискового индекса.
        search_index = operation.wait()
    
        # Создадим инструмент для работы с поисковым индексом.
        # Или даже с несколькими индексами, если бы их было больше.
        tool = sdk.tools.search_index(search_index)
    
        # Создадим ассистента для модели YandexGPT Pro Latest.
        # Он будет использовать инструмент поискового индекса.
        assistant = sdk.assistants.create("yandexgpt", tools=[tool])
        thread = sdk.threads.create()
    
        input_text = input(
            'Введите ваш вопрос ассистенту ("exit" - чтобы завершить диалог): '
        )
    
        while input_text.lower() != "exit":
            thread.write(input_text)
    
            # Отдаем модели все содержимое треда.
            run = assistant.run(thread)
    
            # Чтобы получить результат, нужно дождаться окончания запуска.
            result = run.wait()
    
            # Выводим ответ на экран.
            print(f"Answer: {result.text}")
    
            input_text = input(
                'Введите ваш вопрос ассистенту ("exit" - чтобы завершить диалог): '
            )
    
        # Выводим на экран часть атрибутов свойства citations — информацию
        # об использованных файлах-источниках, их содержимое и присвоенные
        # метаданные, а также информацию об индексе и его метаданные.
        # С помощью присвоенных метаданных (labels) вы можете применять
        # к полученным значениям дополнительные фильтры.
        print("Citations:")
        for citation in result.citations:
            for source in citation.sources:
                print(f"    {source.text=}")
                print(f"    {source.file.name=}")
                print(f"        {source.file.labels=}")
                print(f"    {source.search_index.name=}")
                print(f"        {source.search_index.labels=}")
    
        # Удаляем все ненужное.
        search_index.delete()
        thread.delete()
        assistant.delete()
    
        for file in files:
            file.delete()
    
    
    if __name__ == "__main__":
        main()
    

    Где:

    • mypath — переменная, содержащая путь к директории, в которой сохранены скачанные ранее файлы. Например: /Users/myuser/tours-example/.
    • <идентификатор_каталога> — идентификатор каталога, в котором создан сервисный аккаунт.

    • <API-ключ> — API-ключ сервисного аккаунта, полученный ранее и необходимый для аутентификации в API.

      В примерах используется аутентификация с помощью API-ключа. Yandex Cloud ML SDK также поддерживает аутентификацию с помощью IAM-токена и OAuth-токена. Подробнее см. в разделе Аутентификация в Yandex Cloud ML SDK.

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

    python3 search-assistant.py
    

    В примере реализован простейший вариант чата: вводите с клавиатуры запросы ассистенту и получайте ответы на них. Чтобы прекратить диалог, введите exit.

    Примерный результат выполнения
    Введите ваш вопрос ассистенту ("exit" - чтобы завершить диалог): Сколько стоит виза на Бали?
    Answer: 300 рублей.
    Введите ваш вопрос ассистенту ("exit" - чтобы завершить диалог): А как попасть в Казахстан?
    Answer: Чтобы попасть в Казахстан из России, вам потребуются следующие документы:
    * Загранпаспорт, срок действия которого составляет не менее 3 месяцев на момент окончания поездки.
    * Миграционная карта (выдаётся в самолёте или на границе).
    * Медицинская страховка (не обязательна, но рекомендуется).
    Введите ваш вопрос ассистенту ("exit" - чтобы завершить диалог): exit
    Citations:
        source.text='**Казахстан: путешествие в сердце Евразии**\n\nОткройте для себя Казахстан — 
        удивительную страну, где встречаются Восток и Запад. Здесь вы сможете насладиться бескрайними 
        степями, величественными горами, историческими памятниками и гостеприимством местных жителей. 
        **Что нужно для поездки?** Чтобы попасть в Казахстан из России, вам потребуются следующие 
        документы:\n* Загранпаспорт, срок действия которого составляет не менее 3 месяцев на момент 
        окончания поездки. * Миграционная карта (выдаётся в самолете или на границе). * Медицинская 
        страховка (не обязательна, но рекомендуется). Не упустите возможность посетить эту прекрасную 
        страну и получить массу положительных эмоций! Бронируйте свой отдых в Казахстане уже сегодня! 
        **Мы ждём вас!**'
        source.file.name='/Users/myuser/tours-example/kazakhstan.md'
            source.file.labels={'kazakhstan': 'Файл с описанием предложения по Казахстану'}
        source.search_index.name='the-bali-and-kazakhstan-index'
            source.search_index.labels={'promo': 'Индекс содержит общую информацию о Бали и Казахстане', 
            'visas': 'Индекс содержит информацию о визовой политике при въезде на Бали и в Казахстан'}
        source.text='**Бали — райский уголок, где вас ждут незабываемые впечатления!**\n\nПриглашаем вас 
        провести незабываемый отпуск на Бали! Этот волшебный остров в Индонезии славится своими прекрасными 
        пляжами, уникальной культурой и гостеприимными жителями. Здесь вы сможете насладиться красотой 
        природы, попробовать местную кухню и познакомиться с новыми людьми. **Что нужно для поездки?** 
        Для въезда на территорию Индонезии вам потребуется виза. Вот список документов, которые необходимы 
        для её оформления:\n* Загранпаспорт, срок действия которого составляет не менее 6 месяцев на момент 
        въезда в страну. * Две фотографии, соответствующие требованиям консульства. * Подтверждение 
        бронирования отеля или письмо другого жилья. * Бронь или билеты туда и обратно. * Анкета, 
        заполненная на английском языке. Обратите внимание, что требования могут меняться, поэтому перед 
        поездкой рекомендуется проверить актуальную информацию на сайте консульства или визового центра. 
        Стоимость визы 300 рублей. Не упустите возможность посетить этот прекрасный остров и получить массу 
        положительных эмоций! Бронируйте свой отдых на Бали уже сегодня! **Мы ждём вас!**'
        source.file.name='/Users/myuser/tours-example/bali.md'
            source.file.labels={'bali': 'Файл с описанием туров на Бали'}
        source.search_index.name='the-bali-and-kazakhstan-index'
            source.search_index.labels={'promo': 'Индекс содержит общую информацию о Бали и Казахстане', 
            'visas': 'Индекс содержит информацию о визовой политике при въезде на Бали и в Казахстан'}
    

    В свойстве run.text AI-ассистент вернул ответ модели, который был сгенерирован с использованием загруженной базы знаний. Свойство run.citations содержит ссылки на источники — информацию об использованных при генерации ответа файлах базы знаний и поисковых индексах, в том числе, метаданные файлов-источников (свойство citation.sources.file.labels) и индексов (свойство citation.sources.search_index.labels).

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

  • Создать простого ассистента
  • Создать ассистента с поисковым индексом
  • Создать AI-ассистента с поиском по PDF-файлам со сложным форматированием
  • Примеры работы с ML SDK на GitHub

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

Предыдущая
Создать ассистента для поиска
Следующая
Получить промежуточные результаты генерации ответа
Проект Яндекса
© 2025 ООО «Яндекс.Облако»