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
Обновлена 3 апреля 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() -> None:
        sdk = YCloudML(
            folder_id="<идентификатор_каталога>",
            auth="<API-ключ>",
        )
        sdk.setup_default_logging()
    
        assistant = sdk.assistants.create(
            "yandexgpt",
            temperature=0.5,
            max_prompt_tokens=50,
            ttl_days=6,
            expiration_policy="static",
        )
    
        thread = sdk.threads.create(
            name="foo",
            ttl_days=6,
            expiration_policy="static",
        )
    
        # Основной цикл взаимодействия пользователя с ассистентом
        input_text = input('Задайте вопрос ассистенту ("exit" — для выхода): ')
        while input_text.lower() != "exit":
    
            thread.write(input_text)
    
            # Так можно отдать модели все содержимое треда
            run = assistant.run_stream(thread)
    
            # Так можно посмотреть промежуточные результаты по мере генерации моделью ответа
            for event in run:
                print(event._message.parts)
    
            # Так можно посмотреть все поля окончательного результата
            print(f"run {event=}")
    
            input_text = input('Задайте ваш вопрос ассистенту ("exit" — для выхода): ')
    
        # Вывод на экран всей истории сообщений в чате
        print("Вывод всей истории сообщений при выходе из чата:")
        for message in thread:
            print(f"    {message=}")
            print(f"    {message.text=}\n")
    
        # Удаление всего ненужного
        for assistant in sdk.assistants.list():
            assistant.delete()
    
        thread.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.

    Примерный результат выполнения
    Задайте вопрос ассистенту ("exit" — для выхода): Привет!
    ('Здравствуйте',)
    ('Здравствуйте! Чем могу помочь?',)
    ('Здравствуйте! Чем могу помочь?',)
    run event=RunStreamEvent(status=<StreamEvent.DONE: 3>, error=None, _message=Message
    (id='fvtbkt2tbf7a********', parts=('Здравствуйте! Чем могу помочь?',), thread_id='fvt50ma5302n********', 
    created_by='ajegtlf2q28a********', created_at=datetime.datetime(2025, 3, 13, 17, 51, 22, 146833), 
    labels=None, author=Author(id='fvtle31p6lv2********', role='ASSISTANT'), citations=()))
    Задайте ваш вопрос ассистенту ("exit" — для выхода): Сколько планет в Солнечной системе?
    ('В',)
    ('В Солнечной системе **восемь планет**: Меркурий, Венера, Земля, Марс, Юпитер, Сатурн',)
    ('В Солнечной системе **восемь планет**: Меркурий, Венера, Земля, Марс, Юпитер, Сатурн, Уран и Нептун.',)
    ('В Солнечной системе **восемь планет**: Меркурий, Венера, Земля, Марс, Юпитер, Сатурн, Уран и Нептун.',)
    run event=RunStreamEvent(status=<StreamEvent.DONE: 3>, error=None, _message=Message
    (id='fvt4f3p6ddue********', parts=('В Солнечной системе **восемь планет**: Меркурий, Венера, Земля, 
    Марс, Юпитер, Сатурн, Уран и Нептун.',), thread_id='fvt50ma5302n********', 
    created_by='ajegtlf2q28a********', created_at=datetime.datetime(2025, 3, 13, 17, 51, 33, 36643), 
    labels=None, author=Author(id='fvtle31p6lv2********', role='ASSISTANT'), citations=()))
    Задайте ваш вопрос ассистенту ("exit" — для выхода): Как далеко от Солнца до Земли?
    ('Среднее',)
    ('Среднее расстояние от Земли до Солнца составляет приблизительно 149,6 миллиона километров. Это 
    расстояние',)
    ('Среднее расстояние от Земли до Солнца составляет приблизительно 149,6 миллиона километров. Это 
    расстояние также известно как астрономическая единица (АЕ).',)
    ('Среднее расстояние от Земли до Солнца составляет приблизительно 149,6 миллиона километров. Это 
    расстояние также известно как астрономическая единица (АЕ).',)
    run event=RunStreamEvent(status=<StreamEvent.DONE: 3>, error=None, _message=Message
    (id='fvtees4295mr********', parts=('Среднее расстояние от Земли до Солнца составляет приблизительно 149,
    6 миллиона километров. Это расстояние также известно как астрономическая единица (АЕ).',), 
    thread_id='fvt50ma5302n********', created_by='ajegtlf2q28a********', created_at=datetime.datetime(2025, 
    3, 13, 17, 51, 44, 33797), labels=None, author=Author(id='fvtle31p6lv2********', role='ASSISTANT'), 
    citations=()))
    Задайте ваш вопрос ассистенту ("exit" — для выхода): Exit
    Вывод всей истории сообщений при выходе из чата:
        message=Message(id='fvtees4295mr********', parts=('Среднее расстояние от Земли до Солнца составляет 
        приблизительно 149,6 миллиона километров. Это расстояние также известно как астрономическая единица 
        (АЕ).',), thread_id='fvt50ma5302n********', created_by='ajegtlf2q28a********', created_at=datetime.
        datetime(2025, 3, 13, 17, 51, 44, 33798), labels=None, author=Author(id='fvtle31p6lv2********', 
        role='ASSISTANT'), citations=())
        message.text='Среднее расстояние от Земли до Солнца составляет приблизительно 149,6 миллиона 
        километров. Это расстояние также известно как астрономическая единица (АЕ).'
    
        message=Message(id='fvto6b4rdg0o********', parts=('Как далеко от Солнца до Земли?',), 
        thread_id='fvt50ma5302n********', created_by='ajegtlf2q28a********', created_at=datetime.datetime
        (2025, 3, 13, 17, 51, 42, 941742), labels=None, author=Author(id='fvtjnthkl0g5********', 
        role='USER'), citations=())
        message.text='Как далеко от Солнца до Земли?'
    
        message=Message(id='fvt4f3p6ddue********', parts=('В Солнечной системе **восемь планет**: Меркурий, 
        Венера, Земля, Марс, Юпитер, Сатурн, Уран и Нептун.',), thread_id='fvt50ma5302n********', 
        created_by='ajegtlf2q28a********', created_at=datetime.datetime(2025, 3, 13, 17, 51, 33, 36644), 
        labels=None, author=Author(id='fvtle31p6lv2********', role='ASSISTANT'), citations=())
        message.text='В Солнечной системе **восемь планет**: Меркурий, Венера, Земля, Марс, Юпитер, Сатурн, 
        Уран и Нептун.'
    
        message=Message(id='fvtme86dsuju********', parts=('Сколько планет в Солнечной системе?',), 
        thread_id='fvt50ma5302n********', created_by='ajegtlf2q28a********', created_at=datetime.datetime
        (2025, 3, 13, 17, 51, 32, 139), labels=None, author=Author(id='fvtjnthkl0g5********', role='USER'), 
        citations=())
        message.text='Сколько планет в Солнечной системе?'
    
        message=Message(id='fvtbkt2tbf7a********', parts=('Здравствуйте! Чем могу помочь?',), 
        thread_id='fvt50ma5302n********', created_by='ajegtlf2q28a********', created_at=datetime.datetime
        (2025, 3, 13, 17, 51, 22, 146834), labels=None, author=Author(id='fvtle31p6lv2********', 
        role='ASSISTANT'), citations=())
        message.text='Здравствуйте! Чем могу помочь?'
    
        message=Message(id='fvtemh1qqc50********', parts=('Привет!',), thread_id='fvt50ma5302n********', 
        created_by='ajegtlf2q28a********', created_at=datetime.datetime(2025, 3, 13, 17, 51, 21, 359885), 
        labels=None, author=Author(id='fvtjnthkl0g5********', role='USER'), citations=())
        message.text='Привет!'
    

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

  • Создать простого ассистента
  • Создать ассистента с поисковым индексом
  • Примеры работы с ML SDK на GitHub

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

Предыдущая
Создать ассистента для поиска с указанием метаданных файлов и индексов
Следующая
О сервисе Yandex Foundation Models
Проект Яндекса
© 2025 ООО «Яндекс.Облако»