你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

提示流故障排除指南

本文解决了有关提示流使用的常见问题。

为什么运行失败并出现“没有名为 XXX 的模块”错误?

这种类型的错误与缺少所需包的计算会话相关。 如果使用默认环境,请确保计算会话的映像使用最新版本。 如果使用自定义基础映像,请确保在 Docker 上下文中安装了所有必需的包。

如何查找计算会话使用的无服务器实例?

可以在计算页上的计算会话列表选项卡上查看计算会话使用的无服务器实例。 若要详细了解如何管理无服务器实例,请参阅 “管理计算会话”。

如何查找 LLM 工具的原始输入和输出以进一步调查?

在提示流中,在成功运行的流页面和运行详细信息页面上,可以在输出部分找到 LLM 工具的原始输入和输出。 选择 “查看完整输出 ”以查看完整输出。

显示 LLM 节点上的“查看完整输出”按钮的屏幕截图。

“跟踪”部分包括对 LLM 工具的每个请求和响应。 可以检查发送到 LLM 模型的原始消息和 LLM 模型的原始响应。

显示发送到 LLM 模型的原始请求以及 LLM 模型的响应的屏幕截图。

如何修复 Azure OpenAI 中的 429 错误?

您可能会在使用 Azure OpenAI 时遇到 429 错误。 此错误表示已达到 Azure OpenAI 的速率限制。 可以在 LLM 节点的输出部分中检查错误消息。 若要了解有关速率限制的详细信息,请参阅 Azure OpenAI 速率限制

显示 Azure OpenAI 中出现 429 速率限制错误的屏幕截图。

如何确定哪个节点消耗的时间最多?

  1. 检查计算会话日志。

  2. 尝试查找以下警告日志格式: <node_name> has been running for <duration> seconds

    例如:

    • 案例 1:Python 脚本节点运行时间过长。

      显示超时运行符号的屏幕截图。

      在这种情况下,可以看到该 PythonScriptNode 运行时间很长(近 300 秒)。 检查节点详细信息以查看导致问题的原因。

    • 案例 2: LLM 节点长时间运行。

      显示由 LLM 超时引起的超时日志的屏幕截图。

      如果在日志中看到消息 request canceled ,可能是因为 OpenAI API 调用花费的时间过长且超出超时限制。

      网络问题或需要更多处理时间的复杂请求可能会导致 OpenAI 超时。

      请等待几秒钟,然后重试请求。 此操作通常可以解决任何网络问题。

      如果重试不起作用,请检查是否使用的是长上下文模型,例如 gpt-4-32k,并为其 max_tokens设置大值。 如果是这样的话,这是预期的行为,因为提示可能会生成长响应,所需时间超过交互模式的阈值上限。 在这种情况下,我们建议你尝试 Bulk test ,因为此模式没有超时设置。

如何解决上游服务器请求超时的问题?

当使用 Azure CLI 或 SDK 部署流时,可能会遇到超时错误。 默认情况下,request_timeout_ms5000。 最多可以指定 5 分钟,即 300,000 毫秒。 以下示例演示如何在部署 .yaml 文件中指定请求超时。 若要了解详细信息,请参阅 部署架构

request_settings:
  request_timeout_ms: 300000

OpenAI API 生成身份验证错误时该怎么办?

如果重新生成 Azure OpenAI 密钥并手动更新提示流中使用的连接,可能会遇到“未授权”等错误。 访问令牌缺失、无效、访问群体不正确或已过期。调用在重新生成密钥之前创建的现有终结点时,可能会看到这些消息。

发生此错误的原因是终结点/部署中使用的连接不会自动更新。 您应手动更新部署中的任何密钥或机密更改,以避免由于无意的离线操作影响到在线生产部署。

  • 如果终结点部署在 Azure AI Foundry 门户中,请使用相同的部署名称将流重新部署到现有终结点。
  • 如果终结点是使用 SDK 或 Azure CLI 部署的,请修改部署定义,例如添加虚拟环境变量。 然后使用 az ml online-deployment update 更新部署。

如何解决提示流部署中的漏洞问题?

对于提示流运行时相关的漏洞,请尝试以下方法:

  • 更新您流文件夹中的 requirements.txt 文件里的依赖包。
  • 如果使用自定义基础映像,请将脚本流运行时更新为最新版本并重新构建基础映像。 然后,重新部署流。

对于托管联机部署的其他漏洞,Azure AI 会每月修复问题。

如果收到“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 文件中,将其设为流基础图像。 在 UI 中部署流时,选择 “使用当前流定义的使用环境”。 后端服务基于这个基础映像和requirement.txt为您的部署创建自定义环境。 有关详细信息,请参阅 流定义中指定的环境
  • 在自定义环境定义中添加 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.)
  • 索引查询未优化,且耗时过长。
  • 该流程包含许多需要处理的步骤。

请考虑使用上述注意事项优化终结点,以提高模型的性能。

如果无法提取部署架构,该怎么办?

部署终结点后,需要在部署详细信息页上的“ 测试 ”选项卡上对其进行测试。 若要访问“ 测试 ”选项卡,请在左侧窗格的 “我的资产”下,选择 “模型 + 终结点”。 然后选择部署以查看详细信息。 如果 “测试 ”选项卡显示 “无法提取部署架构”,请尝试以下两种方法来缓解此问题。

显示部署详细信息页上的“测试”选项卡的屏幕截图。

  • 请确保已授予对终结点标识的正确权限。 有关详细信息,请参阅 如何向终结点标识授予权限
  • 也许你在旧版本运行时中运行了流,然后部署了该流,因此部署使用了旧版本的运行时环境。 若要更新运行时,请按照 UI 上的“更新运行时”中的步骤作。 在最新的运行时重新运行流,然后再次部署流。

如果收到“拒绝访问工作区机密列表”错误,怎么办?

如果遇到“拒绝访问以列出工作区机密”之类的错误,请检查是否已授予对终结点标识的正确权限。 有关详细信息,请参阅 如何向终结点标识授予权限