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
Улучшена
Valery K.
Обновлена 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
    

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

Этот пример показывает, как создать ассистента, который будет хранить переписку с моделью YandexGPT Pro RC.

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

    #!/usr/bin/env python3
    
    from __future__ import annotations
    from yandex_cloud_ml_sdk import YCloudML
    
    
    def main():
        sdk = YCloudML(
            folder_id="<идентификатор_каталога>",
            auth="<API-ключ>",
        )
    
        # Создаем тред, в котором будем хранить переписку
        # Тред будет храниться в течение 5 дней
        thread = sdk.threads.create(
            name="SimpleAssistant", ttl_days=5, expiration_policy="static"
        )
        print(f"new {thread=}")
    
        # Определяем модель YandexGPT Pro RC и ее максимальный контекст
        model = sdk.models.completions("yandexgpt", model_version="rc")
    
        # Создаем ассистента для модели
        # Ассистент будет удален через 4 дня, если к нему не будут обращаться
        assistant = sdk.assistants.create(
            model, ttl_days=4, expiration_policy="since_last_active", max_tokens=500
        )
    
        # Здесь нужно предусмотреть чтение сообщений пользователей
        # Пока же мы просто запишем что-нибудь в тред
    
        input_text = ""
    
        while input_text != "exit":
            input_text = input("Введите ваш вопрос ассистенту: ")
            if input_text != "exit":
                thread.write(input_text)
    
                # Так можно отдать модели все содержимое треда
                run = assistant.run(thread)
                print(f"{run=}")
    
                # Чтобы получить результат, нужно дождаться окончания запуска
                result = run.wait()
    
                # Можно посмотреть все поля результата
                print(f"run {result=}")
    
                # В поле text сохраняется удобная для дальнейшей работы строка
                print("Answer:", result.text)
    
        # Можно посмотреть, что хранится в треде
    
        print("Вывод всей истории сообщений при выходе из чата:")
    
        for message in thread:
            print(f"    {message=}")
            print(f"    {message.text=}\n")
    
        # Удаляем все ненужное
        thread.delete()
        assistant.delete()
    
    
    if __name__ == "__main__":
        main()
    

    Где:

    • <идентификатор_каталога> — идентификатор каталога, в котором создан сервисный аккаунт.

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

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

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

    python3 simple-assistant.py
    

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

    Примерный результат выполнения
    new thread=Thread(id='fvt67i1ettn5********', expiration_config=ExpirationConfig(ttl_days=5, expiration_policy=<ExpirationPolicy.STATIC: 1>), name='SimpleAssistant', description=None, created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 5, 33, 8133), updated_by='ajegtlf2q28a********', updated_at=datetime.datetime(2024, 12, 15, 21, 5, 33, 8133), expires_at=datetime.datetime(2024, 12, 20, 21, 5, 33, 8133), labels=None)
    Введите ваш вопрос ассистенту: Привет!
    run=Run(id='fvtm4n1o2hla********', assistant_id='fvthtngdnlkq********', thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 5, 53, 312504), labels=None, custom_temperature=None, custom_max_tokens=None, custom_max_prompt_tokens=None)
    run result=RunResult(status=<RunStatus.COMPLETED: 4>, error=None, _message=Message(id='fvtburadn35c********', parts=('Здравствуйте! Чем могу помочь?',), thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 5, 53, 728330), labels=None, author=Author(id='fvthtngdnlkq********', role='ASSISTANT')), usage=Usage(input_text_tokens=12, completion_tokens=6, total_tokens=18))
    Answer: Здравствуйте! Чем могу помочь?
    Введите ваш вопрос ассистенту: Сколько будет 2 + 2?
    run=Run(id='fvt2eajhkqnb********', assistant_id='fvthtngdnlkq********', thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 7, 36, 751185), labels=None, custom_temperature=None, custom_max_tokens=None, custom_max_prompt_tokens=None)
    run result=RunResult(status=<RunStatus.COMPLETED: 4>, error=None, _message=Message(id='fvtnmfeavsm1********', parts=('2 + 2 = 4.',), thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 7, 37, 294861), labels=None, author=Author(id='fvthtngdnlkq********', role='ASSISTANT')), usage=Usage(input_text_tokens=36, completion_tokens=9, total_tokens=45))
    Answer: 2 + 2 = 4.
    Введите ваш вопрос ассистенту: А 15234 - 265?
    run=Run(id='fvt55e1qr4d0********', assistant_id='fvthtngdnlkq********', thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 7, 59, 483141), labels=None, custom_temperature=None, custom_max_tokens=None, custom_max_prompt_tokens=None)
    run result=RunResult(status=<RunStatus.COMPLETED: 4>, error=None, _message=Message(id='fvtujctocrak********', parts=('15234 − 265 = 14969.',), thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 8, 0, 244274), labels=None, author=Author(id='fvthtngdnlkq********', role='ASSISTANT')), usage=Usage(input_text_tokens=68, completion_tokens=19, total_tokens=87))
    Answer: 15234 − 265 = 14969.
    Введите ваш вопрос ассистенту: exit
    Вывод всей истории сообщений при выходе из чата:
        message=Message(id='fvtujctocrak********', parts=('15234 − 265 = 14969.',), thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 8, 0, 244274), labels=None, author=Author(id='fvthtngdnlkq********', role='ASSISTANT'))
        message.text='15234 − 265 = 14969.'
    
        message=Message(id='fvthbaqg1rep********', parts=('А 15234 - 265?',), thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 7, 59, 375702), labels=None, author=Author(id='fvt82v4kgb7i********', role='USER'))
        message.text='А 15234 - 265?'
    
        message=Message(id='fvtnmfeavsm1********', parts=('2 + 2 = 4.',), thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 7, 37, 294862), labels=None, author=Author(id='fvthtngdnlkq********', role='ASSISTANT'))
        message.text='2 + 2 = 4.'
    
        message=Message(id='fvtdd4fbb4n8********', parts=('Сколько будет 2 + 2?',), thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 7, 36, 625764), labels=None, author=Author(id='fvt82v4kgb7i********', role='USER'))
        message.text='Сколько будет 2 + 2?'
    
        message=Message(id='fvtburadn35c********', parts=('Здравствуйте! Чем могу помочь?',), thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 5, 53, 728331), labels=None, author=Author(id='fvthtngdnlkq********', role='ASSISTANT'))
        message.text='Здравствуйте! Чем могу помочь?'
    
        message=Message(id='fvt9apvs2au9********', parts=('Привет!',), thread_id='fvt67i1ettn5********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2024, 12, 15, 21, 5, 53, 136965), labels=None, author=Author(id='fvt82v4kgb7i********', role='USER'))
        message.text='Привет!'
    

    Примечание

    При выполнении запросов к ассистенту вы можете получать промежуточные результаты генерации до завершения формирования моделью окончательного ответа.

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

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

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

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