Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex API Gateway
  • Начало работы
    • Все практические руководства
    • Развертывание веб-приложения с использованием Java Servlet API
    • Разработка навыка Алисы и сайта с авторизацией
    • Разработка Slack-бота
    • Разработка Telegram-бота
    • Разработка Telegram-бота для распознавания текста и аудио
    • Разработка пользовательской интеграции
    • Разработка CRUD API для сервиса фильмов
    • Работа с API-шлюзом по протоколу WebSocket
    • Создание интерактивного serverless-приложения с использованием WebSocket
    • Построение пайплайна CI/CD в GitLab с использованием serverless-продуктов
    • Интерактивная отладка функций Cloud Functions
    • Развертывание веб-приложения с JWT-авторизацией в API Gateway и аутентификацией в Firebase
    • Канареечный релиз функции Cloud Functions
    • Использование API Gateway для настройки синтеза речи в Yandex SpeechKit
    • Запуск контейнерного приложения в Yandex Serverless Containers
    • Сокращатель ссылок
    • Ввод данных в системы хранения
    • Защита API Gateway при помощи Smart Web Security
    • Создание AI-агента со стримингом ответа через веб-сокеты
  • Управление доступом
  • Инструменты
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

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

  • Что такое AI-агент и зачем он нужен
  • Почему бессерверные функции подходят для работы с AI-агентами
  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Настройте окружение
  • Подготовьте файлы проекта
  • Создайте сервисный аккаунт
  • Создайте API-ключ
  • Создайте секрет Yandex Lockbox
  • Создайте функцию
  • Создайте API-шлюз
  • Проверьте работу агента
  • Как удалить созданные ресурсы
  1. Практические руководства
  2. Создание AI-агента со стримингом ответа через веб-сокеты

Создание агента на OpenAI Agents SDK со стримингом ответа через веб-сокеты на Yandex Cloud Functions и API Gateway

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 29 декабря 2025 г.
  • Что такое AI-агент и зачем он нужен
    • Почему бессерверные функции подходят для работы с AI-агентами
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Настройте окружение
  • Подготовьте файлы проекта
  • Создайте сервисный аккаунт
  • Создайте API-ключ
  • Создайте секрет Yandex Lockbox
  • Создайте функцию
  • Создайте API-шлюз
  • Проверьте работу агента
  • Как удалить созданные ресурсы

Важно

Часть ресурсов, необходимых для прохождения практического руководства, доступны только в регионе Россия.

В этом руководстве вы создадите агент со стримингом ответа через веб-сокеты на Yandex Cloud Functions и Yandex API Gateway. Функция будет использовать OpenAI Agents SDK для работы с YandexGPT API.

Когда агент обрабатывает сложные запросы, ему может потребоваться продолжительное время на ответ. Например, при генерации больших текстов с рассуждениями, поиске и индексации. В таких случаях важно видеть прогресс и получать частичные результаты по мере готовности. Стриминг ответа позволяет сразу выводить токены или фразы, промежуточные сообщения и статусы шагов, отображать логи, а затем — финальный ответ, не дожидаясь завершения всего сценария. Это повышает воспринимаемую скорость, обеспечивает более интерактивный UI/UX, дает возможность отмены, повтора и динамического обновления интерфейса. Стриминг поддерживается большинством фреймворков. В OpenAI Agents SDK также предусмотрен стриминг.

Чтобы создать агент:

  1. Подготовьте облако к работе.
  2. Настройте окружение.
  3. Подготовьте файлы проекта.
  4. Создайте сервисный аккаунт.
  5. Создайте API-ключ.
  6. Создайте секрет для API-ключа.
  7. Создайте функцию.
  8. Создайте API-шлюз.
  9. Проверьте результат.

Если созданные ресурсы вам больше не нужны, удалите их.

Совет

Если вы не хотите привязывать AI-агент к вендору, разверните функцию в Yandex Serverless Containers, как описано в руководстве Разработка функций в Functions Framework и их развертывание в Yandex Serverless Containers.

Что такое AI-агент и зачем он нуженЧто такое AI-агент и зачем он нужен

AI-агент — это программный помощник на базе искусственного интеллекта, который может выполнять инструкции, отвечать на вопросы и взаимодействовать с пользователями или другими системами в заданном контексте. В отличие от обычных моделей генеративного искусственного интеллекта, AI-агенты могут:

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

Почему бессерверные функции подходят для работы с AI-агентамиПочему бессерверные функции подходят для работы с AI-агентами

Функции Cloud Functions при развертывании AI-агентов предоставляют несколько преимуществ:

  • Масштабируемость — автоматическое масштабирование в зависимости от нагрузки.
  • Экономичность — плата только за фактическое время выполнения.
  • Отсутствие необходимости управлять инфраструктурой — не нужно настраивать и поддерживать серверы.
  • Быстрое развертывание — простота создания и обновления AI-агента.
  • Интеграция с другими сервисами — простота подключения к API и другим сервисам Yandex Cloud.

Подготовьте облако к работеПодготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры для этого практического руководства входят:

  • Плата за количество запросов к API-шлюзу и исходящий трафик (см. тарифы API Gateway).
  • Плата за генерацию текста (см. тарифы Yandex AI Studio).
  • Плата за количество вызовов функции, вычислительные ресурсы, выделенные для выполнения функции, и исходящий трафик (см. тарифы Cloud Functions).
  • Плата за хранение секрета и операции с ним (см. тарифы Yandex Lockbox).
  • Плата за получение и хранение логов (см. тарифы Yandex Cloud Logging).

Настройте окружениеНастройте окружение

  1. Установите утилиту jq для работы с JSON:

    Linux
    macOS
    apt-get install jq
    
    brew install jq
    
  2. Установите утилиту wscat для проверки работы агента:

    npm install -g wscat
    

Подготовьте файлы проектаПодготовьте файлы проекта

Для выполнения руководства вам понадобятся файлы с кодом функции и спецификация API-шлюза.

Репозиторий
Вручную

Склонируйте репозиторий:

git clone https://github.com/yandex-cloud-examples/yc-serverless-streaming-openai-agent

В репозитории вы увидите:

  • архив function.zip с кодом функции function.py и описанием зависимостей requirements.txt;
  • спецификацию API-шлюза gateway-spec.yaml.
  1. Создайте папку yc-serverless-streaming-openai-agent и перейдите в нее.

  2. Создайте файл function.py и вставьте в него код:

    import asyncio
    import json
    import os
    import random
    from typing import Dict, Any
    
    from agents import Agent, OpenAIProvider, Runner, RunConfig, function_tool, set_tracing_disabled
    from openai import AsyncOpenAI
    from openai.types.responses import ResponseTextDeltaEvent
    from yandex.cloud.serverless.apigateway.websocket.v1.connection_service_pb2 import SendToConnectionRequest
    from yandex.cloud.serverless.apigateway.websocket.v1.connection_service_pb2_grpc import ConnectionServiceStub
    from yandexcloud import SDK
    
    BASE_URL = os.getenv("BASE_URL")
    API_KEY = os.getenv("API_KEY")
    MODEL_NAME = os.getenv("MODEL_NAME")
    FOLDER_ID = os.environ.get('FOLDER_ID')
    
    client = AsyncOpenAI(base_url=BASE_URL, api_key=API_KEY)
    set_tracing_disabled(disabled=True)
    
    @function_tool
    def how_many_jokes() -> int:
        return random.randint(1, 10)
    
    # Инициализация SDK Yandex Cloud
    sdk = SDK()
    
    def get_websocket_service():
        return sdk.client(ConnectionServiceStub)
    
    def stream_to_websocket(connection_id: str, message: str):
        """Отправка сообщения в WebSocket соединение"""
        websocket_service = get_websocket_service()
        request = SendToConnectionRequest(
            connection_id=connection_id,
            type=SendToConnectionRequest.TEXT,
            data=message.encode('utf-8')
        )
        websocket_service.Send(request)
    
    async def process_stream(agent: Agent, run_config: RunConfig, connection_id: str, input_text: str):
        """Обработка стрима от агента и отправка в WebSocket"""
        result = Runner.run_streamed(
            agent,
            input=input_text,
            run_config=run_config
        )
    
        print("=== Run starting ===")
    
        async for event in result.stream_events():
            if event.type == "raw_response_event" and isinstance(event.data, ResponseTextDeltaEvent):
                stream_to_websocket(connection_id, event.data.delta)
    
        print("=== Run complete ===")
    
    def handler(event: Dict[str, Any], context):
        """Основной обработчик Cloud Function"""
        try:
            # Получаем параметры из события
            input_text = event['body']
            request_context = event.get('requestContext')
            connection_id = request_context.get('connectionId')
    
            if not connection_id or not input_text:
                return {
                    'statusCode': 400,
                    'body': json.dumps({'error': 'Missing required parameters'})
                }
    
            # Создаем агента
            agent = Agent(
                name="Joker",
                instructions="First call the `how_many_jokes` tool, then tell that many jokes about topic from input.",
                tools=[how_many_jokes],
                model=f"gpt://{FOLDER_ID}/yandexgpt/latest",
            )
    
            run_config = RunConfig(
                model_provider=OpenAIProvider(
                    api_key=API_KEY,
                    project=FOLDER_ID,
                    base_url="https://rest-assistant.api.cloud.yandex.net/v1",
                    use_responses=True
                )
            )
    
            # Запускаем асинхронную обработку
            asyncio.run(process_stream(agent, run_config, connection_id, input_text))
    
            return {
                'statusCode': 200
            }
    
        except Exception as e:
            return {
                'statusCode': 500,
                'body': json.dumps({'error': str(e)})
            }
    
  3. Создайте файл requirements.txt и вставьте в него код:

    openai-agents>=0.0.17
    yandexcloud>=0.227.0
    grpcio>=1.60.0
    protobuf>=4.25.1
    openai~=1.86.0
    
  4. Создайте архив function.zip и добавьте в него файлы function.py и requirements.txt.

  5. Создайте файл gateway-spec.yaml и вставьте в него код:

    openapi: 3.0.0
    info:
      title: Sample API
      version: 1.0.0
    paths:
      /:
        x-yc-apigateway-websocket-message:
          x-yc-apigateway-integration:
            payload_format_version: '0.1'
            function_id: <идентификатор_функции>
            tag: $latest
            type: cloud_functions
            service_account_id: <идентификатор_сервисного_аккаунта>
    

    После создания сервисного аккаунта и функции потребуется указать их идентификаторы.

Создайте сервисный аккаунтСоздайте сервисный аккаунт

С помощью сервисного аккаунта функция получит доступ к секрету и YandexGPT, а API-шлюз получит доступ к функции.

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите каталог, в котором вы будете создавать инфраструктуру.

  2. В списке сервисов выберите Identity and Access Management.

  3. Нажмите Создать сервисный аккаунт.

  4. Введите имя сервисного аккаунта: agent-streamer-sa.

  5. Нажмите Добавить роль и выберите роли:

    • serverless.functions.invoker
    • lockbox.payloadViewer
    • api-gateway.websocketWriter
    • ai.languageModels.user
  6. Нажмите Создать.

Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Создайте сервисный аккаунт:

    yc iam service-account create --name agent-streamer-sa
    

    Результат:

    id: ajehqs5gee2e********
    folder_id: b1g681qpemb4********
    created_at: "2025-07-12T17:53:28.180991864Z"
    name: agent-streamer-sa
    
  2. Назначьте роли сервисному аккаунту:

    yc resource-manager folder add-access-binding <имя_или_идентификатор_каталога> \
      --role serverless.functions.invoker \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    
    yc resource-manager folder add-access-binding <имя_или_идентификатор_каталога> \
      --role lockbox.payloadViewer \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    
    yc resource-manager folder add-access-binding <имя_или_идентификатор_каталога> \
      --role api-gateway.websocketWriter \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    
    yc resource-manager folder add-access-binding <имя_или_идентификатор_каталога> \
      --role ai.languageModels.user \
      --subject serviceAccount:<идентификатор_сервисного_аккаунта>
    

    Результат:

    effective_deltas:
      - action: ADD
        access_binding:
          role_id: serverless.functions.invoker
          subject:
            id: ajehqs5gee2e********
            type: serviceAccount
    
    effective_deltas:
      - action: ADD
        access_binding:
          role_id: lockbox.payloadViewer
          subject:
            id: ajehqs5gee2e********
            type: serviceAccount
    
    effective_deltas:
      - action: ADD
        access_binding:
          role_id: api-gateway.websocketWriter
          subject:
            id: ajehqs5gee2e********
            type: serviceAccount
    
    effective_deltas:
      - action: ADD
        access_binding:
          role_id: ai.languageModels.user
          subject:
            id: ajehqs5gee2e********
            type: serviceAccount
    

Чтобы создать сервисный аккаунт, воспользуйтесь методом REST API create для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/Create.

Чтобы назначить сервисному аккаунту роли serverless.functions.invoker, lockbox.payloadViewer, api-gateway.websocketWriter и ai.languageModels.user на каталог, воспользуйтесь методом REST API updateAccessBindings для ресурса Folder или вызовом gRPC API FolderService/UpdateAccessBindings.

Создайте API-ключСоздайте API-ключ

С помощью API-ключа функция получит доступ к YandexGPT.

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите сервис Identity and Access Management

  2. Выберите созданный ранее сервисный аккаунт agent-streamer-sa.

  3. На панели сверху нажмите Создать новый ключ и выберите Создать API-ключ.

  4. В поле Область действия выберите область действия yc.ai.languageModels.execute.

  5. Нажмите Создать.

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

    Внимание

    После закрытия диалога значение ключа будет недоступно.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Выполните команду:

yc iam api-key create \
  --service-account-id <идентификатор_сервисного_аккаунта> \
  --scopes yc.ai.languageModels.execute

Где:

  • --service-account-id — идентификатор сервисного аккаунта agent-streamer-sa.
  • --scopes — области действия ключа.

Результат:

api_key:
  id: aje3dkdmq2qn********
  service_account_id: ajehqs5gee2e********
  created_at: "2025-07-12T18:00:46.418035313Z"
  scope: yc.ai.languageModels.execute
  scopes:
    - yc.ai.languageModels.execute
secret: AQVNw20bbQtXhfpblT04zJs8Z1wUT5rD********

Сохраните значение поля secret.

Чтобы создать API-ключ, воспользуйтесь методом REST API create для ресурса ApiKey или вызовом gRPC API ApiKeyService/Create.

Создайте секрет Yandex LockboxСоздайте секрет Yandex Lockbox

В секрете Yandex Lockbox будет храниться секретный ключ.

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите сервис Lockbox.
  2. Нажмите Создать секрет.
  3. В поле Имя введите имя секрета: api-key-secret.
  4. В поле Тип секрета выберите Пользовательский.
  5. В поле Ключ введите api-key.
  6. В поле Значение вставьте полученный на предыдущем шаге секретный ключ.
  7. Нажмите Создать.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

Выполните команду:

yc lockbox secret create \
  --name api-key-secret \
  --payload "[{'key': 'api-key', 'text_value': '<секретный_ключ>'}]"

Где text_value — секретный ключ API-ключа, полученный на предыдущем шаге.

Результат:

id: e6q0rdjdggjp********
folder_id: b1g681qpemb4********
created_at: "2025-07-12T18:23:49.844Z"
name: api-key-secret
status: ACTIVE
current_version:
  id: e6qbp772i014********
  secret_id: e6q0rdjdggjp********
  created_at: "2025-07-12T18:23:49.844Z"
  status: ACTIVE
  payload_entry_keys:
    - api-key

Чтобы создать секрет, воспользуйтесь методом REST API create для ресурса Secret или вызовом gRPC API SecretService/Create.

Создайте функциюСоздайте функцию

Функция будет создана на основании архива с кодом и описанием зависимостей.

Консоль управления
Yandex Cloud CLI
API
  1. В консоли управления выберите сервис Cloud Functions.

  2. Создайте функцию:

    1. Нажмите Создать функцию.
    2. В открывшемся окне введите имя функции: agent-streamer.
    3. Нажмите Создать.
  3. Создайте версию функции:

    1. Выберите среду выполнения Python 3.12, отключите опцию Добавить файлы с примерами кода и нажмите Продолжить.

    2. В поле Способ выберите ZIP-архив и прикрепите созданный ранее архив function.zip.

    3. Укажите точку входа function.handler.

    4. В блоке Параметры укажите:

      • Таймаут — 30 секунд.

      • Память — 512 МБ.

      • Сервисный аккаунт — выберите сервисный аккаунт agent-streamer-sa.

      • Переменные окружения:

        • BASE_URL — URL сервиса Yandex AI Studio: https://llm.api.cloud.yandex.net/v1.

        • MODEL_NAME — URI модели генерации текста Yandex AI Studio.

          Например: gpt://<идентификатор_каталога>/yandexgpt/latest, где <идентификатор_каталога> — идентификатор каталога, в котором вы создаете инфраструктуру.

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

      • Секреты Lockbox:

        • В поле Переменная окружения укажите API_KEY и выберите созданный ранее секрет api-key-secret, его версию и ключ api-key.
      • Если вы не хотите сохранять логи и платить за использование сервиса Cloud Logging, отключите опцию Запись логов.

    5. Нажмите Сохранить изменения.

По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  1. Создайте функцию:

    yc serverless function create --name agent-streamer
    

    Результат:

    id: d4eem33cun2k********
    folder_id: b1g681qpemb4********
    created_at: "2025-07-12T18:15:59.854Z"
    name: agent-streamer
    http_invoke_url: https://functions.yandexcloud.net/d4eem33cun2k********
    status: ACTIVE
    
  2. Создайте версию функции:

    yc serverless function version create \
      --function-name agent-streamer \
      --runtime python312 \
      --entrypoint function.handler \
      --memory 512m \
      --execution-timeout 30s \
      --source-path <путь_к_архиву> \
      --service-account-id <идентификатор_сервисного_аккаунта> \
      --environment BASE_URL=https://llm.api.cloud.yandex.net/v1 \
      --environment MODEL_NAME=gpt://<идентификатор_каталога>/yandexgpt/latest \
      --environment FOLDER_ID=<идентификатор_каталога> \
      --secret name=api-key-secret,key=api-key,environment-variable=API_KEY
    

    Где:

    • --source-path — путь к архиву function.zip.

    • --service-account-id — идентификатор сервисного аккаунта agent-streamer-sa.

    • --environment — переменные окружения:

      • BASE_URL — URL сервиса Yandex AI Studio: https://llm.api.cloud.yandex.net/v1.

      • MODEL_NAME — URI модели генерации текста Yandex AI Studio.

        Например: gpt://<идентификатор_каталога>/yandexgpt/latest, где <идентификатор_каталога> — идентификатор каталога, в котором вы создаете инфраструктуру.

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

    • --secret — секрет api-key-secret.

    Результат:

    id: d4e6d89oi342********
    function_id: d4eem33cun2k********
    created_at: "2025-07-12T18:27:29.887Z"
    runtime: python312
    entrypoint: function.handler
    resources:
      memory: "536870912"
    execution_timeout: 30s
    service_account_id: ajehqs5gee2e********
    image_size: "59891712"
    status: ACTIVE
    tags:
      - $latest
    environment:
      BASE_URL: https://llm.api.cloud.yandex.net/foundationModels/v1
      FOLDER_ID: b1g681qpemb4********
      MODEL_NAME: gpt://b1g681qpemb4********/yandexgpt/latest
    secrets:
      - id: e6q0rdjdggjp********
        version_id: e6qbp772i014********
        key: api-key
        environment_variable: API_KEY
    log_options:
      folder_id: b1g681qpemb4********
    concurrency: "1"
    

Чтобы создать функцию, воспользуйтесь методом REST API create для ресурса Function или вызовом gRPC API FunctionService/Create.

Чтобы создать версию функции, воспользуйтесь методом REST API createVersion для ресурса Function или вызовом gRPC API FunctionService/CreateVersion.

Создайте API-шлюзСоздайте API-шлюз

Создайте API-шлюз для доступа к функции.

  1. Откройте файл gateway-spec.yaml и укажите в нем данные:

    • function_id — идентификатор функции agent-streamer;
    • service_account_id — идентификатор сервисного аккаунта agent-streamer-sa.
  2. Создайте API-шлюз:

    Консоль управления
    Yandex Cloud CLI
    API
    1. В консоли управления выберите сервис API Gateway.
    2. Нажмите Создать API-шлюз.
    3. В поле Имя введите имя API-шлюза: agent-streamer-gateway.
    4. В блок Спецификация вставьте содержимое файла gateway-spec.yaml.
    5. Если вы не хотите сохранять логи и платить за использование сервиса Cloud Logging, отключите опцию Запись логов.
    6. Нажмите Создать.
    7. Выберите созданный API-шлюз. Сохраните значение поля Служебный домен для WebSocket — оно потребуется на следующем шаге.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

    Выполните команду:

    yc serverless api-gateway create \
    --name agent-streamer-gateway \
    --spec <путь_к_спецификации>
    

    Где --spec — путь к файлу gateway-spec.yaml.

    Результат:

    id: d5dgs4pn5iil********
    folder_id: b1g681qpemb4********
    created_at: "2025-07-12T18:34:29.535Z"
    name: agent-streamer-gateway
    status: ACTIVE
    domain: d5dgs4pn5iil********.********.apigw.yandexcloud.net
    connectivity: {}
    log_options:
      folder_id: b1g681qpemb4********
    execution_timeout: 300s
    

    Сохраните значение поля domain — оно потребуется на следующем шаге.

    Чтобы создать API-шлюз, воспользуйтесь методом REST API create для ресурса ApiGateway или вызовом gRPC API ApiGatewayService/Create.

Проверьте работу агентаПроверьте работу агента

  1. Подключитесь к WebSocket:

    wscat -c wss://<домен_API-шлюза>
    
  2. Отправьте сообщение:

    Tell me a joke about programming
    

    Результат:

    < Here
    <  are 5 jokes about
    <  programming:
    ...
    

    Текст ответа может отличаться.

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы не платить за ресурсы, которые вам больше не нужны, удалите их:

  1. Удалите API-шлюз.
  2. Удалите функцию.
  3. Удалите секрет.
  4. Если вы оставляли включенной опцию записи логов функции, удалите лог-группу.

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

Предыдущая
Защита API Gateway при помощи Smart Web Security
Следующая
Взаимосвязь ресурсов сервиса
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»