Руководство по устранению неполадок

Предупреждение

Разработка функций потока запросов закончилась 20 апреля 2026 г. Функция будет полностью прекращена 20 апреля 2027 г. В дату выхода на пенсию, Prompt Flow переходит в режим только для чтения. Существующие потоки будут продолжать работать до этой даты.

Рекомендуемое действие: Перенесите рабочие нагрузки Prompt Flow на Microsoft Agent Framework до 20 апреля 2027 г.

В этой статье рассматриваются часто задаваемые вопросы об использовании потока запроса.

Ошибка "Средство пакета не найдена" возникает при обновлении потока для интерфейса с кодом.

При обновлении потоков для опыта с приоритетом кода, если поток использовал поиск индекса Faiss, запрос векторного индекса, поиск векторной базы данных или инструменты безопасности контента (текст), может появиться следующее сообщение об ошибке:

Package tool 'embeddingstore.tool.faiss_index_lookup.search' is not found in the current environment.

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

  • Вариант 1

    • Обновите сеанс вычислений до последней версии базового образа.

    • Выберите режим необработанного файла , чтобы перейти в представление необработанного кода. Затем откройте файл flow.dag.yaml .

      Снимок экрана, на котором показано, как переключиться в режим необработанного файла.

    • Обновите имена инструментов.

      Снимок экрана, показывающий, как обновить имя инструмента.

      Инструмент Новое имя средства
      Поиск индекса Faiss promptflow_vectordb.tool.faiss_index_lookup.FaissIndexLookup.search
      Поиск векторного индекса promptflow_vectordb.tool.vector_index_lookup.VectorIndexLookup.search
      Поиск векторной базы данных promptflow_vectordb.tool.vector_db_lookup.VectorDBLookup.search
      Безопасность содержимого (текст) content_safety_text.tools.content_safety_text_tool.analyze_text
    • Сохраните файл flow.dag.yaml .

  • Вариант 2

    • Обновление сеанса вычислений до последней версии базового образа
    • Удалите старое средство и повторно создайте новое средство.

Ошибка "Нет такого файла или каталога"

Поток Prompt использует общее хранилище файлов для сохранения моментального снимка потока. Если хранилище общей папки имеет проблему, может возникнуть следующая проблема. Ниже приведены некоторые обходные пути, которые можно попробовать:

  • Если вы используете закрытый аккаунт хранения, просмотрите Сетевую изоляцию в потоках запросов, чтобы убедиться, что рабочая область может получить доступ к аккаунту хранения.

  • Если учетная запись хранения включена для общедоступного доступа, проверьте, есть ли в рабочей области хранилище workspaceworkingdirectory данных. Он должен быть типом общего доступа к файлам.

    Снимок экрана: рабочий каталог рабочей области.

    • Если вы не получили это хранилище данных, вам нужно добавить его в рабочую область.
      • Создайте общую папку с именем code-391ff5ac-6576-460f-ba4d-7e03433c68b6.
      • Создайте хранилище данных с именем workspaceworkingdirectory. См. статью "Создание хранилищ данных".
    • Если у вас есть workspaceworkingdirectory хранилище данных, но его тип не является blob, то создайте новую рабочую область. Используйте хранилище, которое не включает иерархические пространства имен для Azure Data Lake Storage 2-го поколения в качестве учетной записи хранения рабочей области по умолчанию. Дополнительные сведения см. в статье "Создание рабочей области".

Поток отсутствует

Снимок экрана: поток, на котором отсутствует страница разработки.

Существуют возможные причины для этой проблемы:

  • Если общедоступный доступ к учетной записи хранения отключен, необходимо обеспечить доступ путем добавления IP-адреса в брандмауэр хранилища или включения доступа через виртуальную сеть с частной конечной точкой, подключенной к учетной записи хранения.

    Снимок экрана: настройка брандмауэра в учетной записи хранения.

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

    Снимок экрана: хранилище данных с неправильным ключом учетной записи.

  • Если вы используете Microsoft Foundry, аккаунт хранилища должен настроить CORS, чтобы разрешить Foundry доступ к аккаунту хранилища, в противном случае появится проблема с отсутствием потока. Чтобы устранить эту проблему, можно добавить следующие параметры CORS в учетную запись хранения.

    • Перейдите на страницу учетной записи хранения, выберите Resource sharing (CORS) в разделе settingsи выберите вкладку File service .
    • Допустимые источники: https://mlworkspace.azure.ai,https://ml.azure.com,https://*.ml.azure.com,https://ai.azure.com,https://*.ai.azure.com,https://mlworkspacecanary.azure.ai,https://mlworkspace.azureml-test.net
    • Разрешенные методы: DELETE, GET, HEAD, POST, OPTIONS, PUT

    Снимок экрана: конфигурация общего доступа к ресурсам учетной записи хранения.

Сбой выполнения из-за отсутствия модуля с именем XXX

Тип ошибки, связанный с вычислительным сеансом, заключается в отсутствии необходимых пакетов. Если вы используете среду по умолчанию, убедитесь, что образ сеанса вычислений использует последнюю версию. Если вы используете пользовательский базовый образ, убедитесь, что установлены все необходимые пакеты в контексте Docker. Дополнительные сведения см. в разделе "Настройка базового образа для сеанса вычислений".

Где найти экземпляр без сервера, используемый в сеансе вычислений?

Вы можете просмотреть бессерверный экземпляр, используемый сеансом вычислений на вкладке списка сеансов вычислений на странице вычислений. Узнайте больше об управлении бессерверным экземпляром.

Сбои сеанса вычислений с использованием пользовательского базового образа

Сбой запуска сеанса вычислений с использованием requirements.txt или пользовательского базового образа

Поддержка сеанса вычислений для использования requirements.txt или пользовательского базового изображения в flow.dag.yaml для настройки изображения. Мы рекомендуем использовать requirements.txt для распространенных случаев, который будет использовать pip install -r requirements.txt для установки пакетов. Если у вас есть зависимости, которые выходят за пределы пакетов Python, необходимо следовать настройке базового образа, чтобы создать новый образ на основе базового образа prompt flow. Затем используйте его в flow.dag.yaml. Узнайте больше , как указать базовый образ в сеансе вычислений.

  • Вы не можете использовать произвольный базовый образ для создания сеанса вычислений, необходимо использовать базовый образ, предоставляемый потоком запроса.
  • Не закрепляйте версию promptflow и promptflow-tools в requirements.txt, так как мы уже включили их в базовый образ. Использование старой promptflow версии и promptflow-tools может привести к непредвиденному поведению.

Как найти необработанные входные и выходные данные в средстве LLM для дальнейшего изучения?

В потоке запросов на странице потока с успешным выполнением и на странице подробных сведений о выполнении можно найти необработанные входные и выходные данные средства LLM в разделе выходных данных. Нажмите кнопку view full output, чтобы просмотреть полные результаты.

Снимок экрана: просмотр полных выходных данных на узле LLM.

Trace Раздел содержит каждый запрос и ответ на средство LLM. Вы можете проверить необработанное сообщение, отправленное модели LLM, и необработанный ответ модели LLM.

Снимок экрана: необработанные запросы, отправляемые в модель LLM и ответ от модели LLM.

Как исправить ошибку 409 из Azure OpenAI?

Вы можете столкнуться с ошибкой 409 из Azure OpenAI, это означает, что вы достигли предела скорости Azure OpenAI. Вы можете проверить сообщение об ошибке в выходном разделе узла LLM. Дополнительные сведения о ограничении скорости Azure OpenAI.

Скриншот с ошибкой ограничения частоты запросов 429 от Azure OpenAI.

Определение того, какой узел потребляет больше всего времени

  1. Проверьте журналы сеансов вычислений.

  2. Попробуйте найти следующий формат журнала предупреждений:

    {node_name} выполняется в течение {длительности} секунд.

    Например:

    • Case 1: Скриптовый узел Python работает долго.

      Снимок экрана, показывающий сообщение о таймауте выполнения в интерфейсе студии.

      В этом случае можно найти, что PythonScriptNode работает в течение длительного времени (почти 300 секунд). Затем можно проверить сведения об узле, чтобы выяснить, в чем заключается проблема.

    • Случай 2: Процесс на узле LLM выполняется в течение длительного времени.

      Снимок экрана: журналы времени ожидания, вызванные временем ожидания LLM в пользовательском интерфейсе студии.

      В этом случае, если вы найдете сообщение request canceled в журналах, это может быть связано с тем, что вызов API OpenAI занимает слишком много времени и превышает ограничение времени ожидания.

      Время ожидания API OpenAI может быть вызвано проблемой сети или сложным запросом, требующим больше времени обработки. Дополнительные сведения см. в разделе "Время ожидания API OpenAI".

      Подождите несколько секунд и повторите запрос. Обычно это действие устраняет любые проблемы с сетью.

      Если повторная попытка не работает, проверьте, используете ли вы длинную модель контекста, например gpt-4-32k, и задайте для него большое значение max_tokens. Если это так, такое поведение ожидаемо, поскольку ваш запрос может сгенерировать длинный ответ, который превышает верхний порог в интерактивном режиме. В этой ситуации рекомендуется попробовать Bulk test , так как этот режим не имеет параметра времени ожидания.

  3. Если вы не можете найти ничего в журналах, указывающее на конкретную проблему, связанную с узлом:

    • Обратитесь к команде prompt flow (promptflow-eng) с журналами. Мы пытаемся определить первопричину.

Отсутствие авторизации для выполнения действия "Microsoft. MachineLearningService/workspaces/datastores/read"

Если поток содержит инструмент Index Look Up, после развертывания потока конечная точка должна получить доступ к хранилищу данных рабочей области для чтения yaml-файла MLIndex или папки FAISS, содержащей блоки и встраивания. Таким образом, необходимо вручную предоставить разрешение на выполнение этой операции для идентификатора конечной точки.

Вы можете предоставить удостоверение конечной точки AzureML Специалист по обработке и анализу данных в пределах рабочей области или назначить пользовательскую роль, содержащую операцию "MachineLearningService/workspace/datastore/reader".

Проблема тайм-аута при обращении к конечной точке во время обработки исходящего запроса

При использовании CLI или SDK для развертывания потока может возникнуть ошибка тайм-аута. По умолчанию request_timeout_ms значение равно 5000. Можно указать не более 5 минут, что составляет 300 000 мс. Ниже показано, как указать время ожидания запроса в yaml-файле развертывания. Дополнительные сведения см. в схеме развертывания.

request_settings:
  request_timeout_ms: 300000

Ошибка проверки подлинности в API OpenAI

Если вы повторно создадите ключ Azure OpenAI и вручную обновите подключение, используемое в потоке запросов, может возникнуть ошибка «Unauthorized». Маркер доступа отсутствует, недействителен, аудитория некорректна или срок её действия истёк, когда вызывается существующая конечная точка, созданная до повторной генерации ключа.

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

  • Если конечная точка была развернута в пользовательском интерфейсе студии, можно просто развернуть поток в существующую конечную точку с помощью того же имени развертывания.
  • Если конечная точка была развернута с помощью пакета SDK или CLI, необходимо внести некоторые изменения в определение развертывания, например добавить фиктивную переменную среды, а затем использовать az ml online-deployment update для обновления развертывания.

Проблемы с уязвимостью при развертывании потоков запросов

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

  • Обновите пакеты зависимостей в requirements.txt в папке потока.
  • Если вы используете настроенный базовый образ для вашего flow, необходимо обновить среду выполнения flow до последней версии, перестроить базовый образ, а затем повторно развернуть поток.

Для любых других уязвимостей управляемых сетевых развертываний Машинное обучение Azure исправляет проблемы ежемесячно.

"Ошибка MissingDriverProgram" или "Не удалось найти программу драйвера в запросе"

Если вы развертываете поток и столкнетесь со следующей ошибкой, это может быть связано со средой развертывания.

'error': 
{
    'code': 'BadRequest', 
    'message': 'The request is invalid.', 
    'details': 
         {'code': 'MissingDriverProgram', 
          'message': 'Could not find driver program in the request.', 
          'details': [], 
          'additionalInfo': []
         }
}
Could not find driver program in the request

Эта ошибка устранена двумя способами.

  • (Рекомендуется) Вы можете найти URI образа контейнера на странице сведений о пользовательской среде и задать его в качестве базового образа потока в файле flow.dag.yaml. При развертывании потока в пользовательском интерфейсе вы просто выбираете Использовать среду текущего определения потока, а серверная служба создаст настраиваемую среду на основе этого базового образа и requirement.txt для вашего развертывания. Дополнительные сведения о среде, указанной в определении потока.

    Снимок экрана: страница сведений о пользовательской среде.

    Снимок экрана: указание базового образа в необработанном yaml-файле потока.

  • Эту ошибку можно исправить, добавив inference_config в определение пользовательской среды.

    Ниже приведен пример настраиваемого определения среды.

$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json
name: pf-customized-test
build:
  path: ./image_build
  dockerfile_path: Dockerfile
description: promptflow customized runtime
inference_config:
  liveness_route:
    port: 8080
    path: /health
  readiness_route:
    port: 8080
    path: /health
  scoring_route:
    port: 8080
    path: /score

Слишком долгое время ответа модели

Иногда вы можете заметить, что развертывание занимает слишком много времени для реагирования. Существует несколько потенциальных факторов для этого.

  • Модель, используемая в потоке, недостаточно мощна (например, используйте GPT 3.5 вместо text-ada)
  • Запрос индекса не оптимизирован и занимает слишком много времени
  • Поток имеет много шагов для обработки

Рекомендуется оптимизировать конечную точку подключения с учетом выше приведенных рекомендаций, чтобы повысить производительность модели.

Не удается получить схему развертывания

После развертывания конечной точки, если вы хотите протестировать её на вкладке "Тест" на странице сведений о конечной точке, и на вкладке "Тест" отображается сообщение Не удается получить схему развертывания, можно попробовать следующие два метода, чтобы устранить эту проблему:

Снимок экрана: ошибка, не удается получить схему развертывания на вкладке

Доступ запрещен для перечисления секрета рабочей области

Если вы столкнулись с ошибкой, например, "Доступ запрещен для перечня секретов рабочей области", проверьте, предоставили ли вы правильное разрешение для идентификации конечной точки. Узнайте больше о том, как предоставить разрешение для идентификации конечной точки.

Как использовать хранилище данных без учетных данных в потоке запросов?

Чтобы использовать хранилище без учетных данных на портале Foundry, необходимо в основном выполнить следующие действия:

  • Измените тип проверки подлинности хранилища данных на None.
  • Предоставьте проекту MSI и пользователю разрешение "участник данных" для BLOB-объектов и файлов в хранилище.

Изменение типа проверки подлинности хранилища данных на None

Вы можете следовать проверке подлинности данных на основе удостоверений, чтобы сделать хранилище данных без учетных данных.

Необходимо изменить тип проверки подлинности хранилища данных на None, который соответствует meid_token проверке подлинности. Вы можете изменить страницу сведений о хранилище данных или CLI/SDK: https://github.com/Azure/azureml-examples/tree/main/cli/resources/datastore

Снимок экрана: тип проверки подлинности для хранилища данных.

Для хранилища данных на основе BLOB можно изменить тип проверки подлинности, а также включить управляемое удостоверение службы (MSI) рабочей области для доступа к учетной записи хранения.

Снимок экрана: обновление типа проверки подлинности для хранилища данных на основе объектов BLOB.

Для хранилища данных на основе общей папки можно изменить только тип проверки подлинности.

Скриншот обновления типа аутентификации для хранилища данных на основе сетевой папки.

Предоставление разрешения на удостоверение пользователя или управляемое удостоверение

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

  • Убедитесь, что присвоенное системой рабочей области управляемое удостоверение имеет Storage Blob Data Contributor и Storage File Data Privileged Contributor в учетной записи хранилища, как минимум, разрешения на чтение и запись (рекомендуется также включить разрешение на удаление).
  • Если вы используете удостоверение пользователя по умолчанию в потоке запросов, необходимо убедиться, что удостоверение пользователя имеет следующую роль в учетной записи хранения:
    • Storage Blob Data Contributor в учетной записи хранилища необходимо как минимум разрешение на чтение и запись (рекомендуется также разрешение на удаление).
    • Storage File Data Privileged Contributor в учетной записи хранилища необходимо как минимум разрешение на чтение и запись (рекомендуется также разрешение на удаление).
  • Если вы используете управляемое удостоверение, назначаемое пользователем, необходимо убедиться, что управляемое удостоверение имеет следующую роль в учетной записи хранения:
    • Storage Blob Data Contributor в учетной записи хранилища необходимо как минимум разрешение на чтение и запись (рекомендуется также разрешение на удаление).
    • Storage File Data Privileged Contributor в учетной записи хранилища необходимо как минимум разрешение на чтение и запись (рекомендуется также разрешение на удаление).
    • Между тем необходимо назначить роль удостоверения Storage Blob Data Read пользователя учетной записи хранения по крайней мере, если вы хотите использовать поток запросов для разработки и тестирования.
  • Если вы по-прежнему не можете просматривать страницу сведений о потоке и если ваше первое использование Prompt Flow произошло до 2024-01-01, вам необходимо предоставить MSI рабочей области как Storage Table Data Contributor учетной записи хранения, связанной с рабочей областью.