Partilhar via


Implante um fluxo para o endpoint online para inferência em tempo real com a CLI

Neste artigo, você aprenderá a implantar seu fluxo em um ponto de extremidade online gerenciado ou em um ponto de extremidade online do Kubernetes para uso em inferência em tempo real com a CLI do Azure Machine Learning v2.

Antes de começar, certifique-se de ter testado seu fluxo corretamente e sinta-se confiante de que ele está pronto para ser implantado na produção. Para saber mais sobre como testar seu fluxo, consulte Testar seu fluxo. Depois de testar seu fluxo, você aprenderá como criar um endpoint e uma implantação online gerenciados e como usar o endpoint para inferência em tempo real.

  • Este artigo irá abordar como utilizar a experiência da CLI.
  • O SDK do Python não é abordado neste artigo. Consulte o bloco de anotações de exemplo do GitHub. Para usar o SDK do Python, você deve ter o SDK do Python v2 para o Azure Machine Learning. Para saber mais, consulte Instalar o Python SDK v2 para Azure Machine Learning.

Importante

Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. A versão de visualização é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.

Pré-requisitos

  • A CLI do Azure e a extensão do Azure Machine Learning para a CLI do Azure. Para obter mais informações, consulte Instalar, configurar e usar a CLI (v2).
  • Uma área de trabalho do Azure Machine Learning. Se você não tiver um, use as etapas no artigo Guia de início rápido: criar recursos do espaço de trabalho para criar um.
  • Os controlos de acesso baseado em funções (RBAC do Azure) são utilizados para conceder acesso às operações no Azure Machine Learning. Para executar as etapas neste artigo, sua conta de usuário deve receber a função de proprietário ou colaborador para o espaço de trabalho do Azure Machine Learning ou uma função personalizada que permita "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/". Se você usar o studio para criar/gerenciar pontos de extremidade/implantações online, precisará de uma permissão adicional "Microsoft.Resources/deployments/write" do proprietário do grupo de recursos. Para obter mais informações, consulte Gerenciar o acesso a um espaço de trabalho do Azure Machine Learning.

Nota

O ponto de extremidade online gerenciado suporta apenas a rede virtual gerenciada. Se seu espaço de trabalho estiver em vnet personalizada, você poderá implantar no ponto de extremidade online do Kubernetes ou implantar em outras plataformas, como o Docker.

Alocação de cota de máquina virtual para implantação

Para pontos de extremidade online gerenciados, o Aprendizado de Máquina do Azure reserva 20% de seus recursos de computação para executar atualizações. Portanto, se você solicitar um determinado número de instâncias em uma implantação, deverá ter uma cota disponível para ceil(1.2 * number of instances requested for deployment) * number of cores for the VM SKU evitar obter um erro. Por exemplo, se você solicitar 10 instâncias de uma VM Standard_DS3_v2 (que vem com quatro núcleos) em uma implantação, deverá ter uma cota para 48 núcleos (12 instâncias e quatro núcleos) disponível. Para ver o seu uso e solicitar aumentos de cota, consulte Exibir seu uso e cotas no portal do Azure.

Prepare o fluxo para implantação

Cada fluxo terá uma pasta que contém códigos/prompts, definição e outros artefatos do fluxo. Se você desenvolveu seu fluxo com a interface do usuário, pode baixar a pasta de fluxo na página de detalhes do fluxo. Se você desenvolveu seu fluxo com CLI ou SDK, você já deve ter a pasta de fluxo.

Este artigo usará o fluxo de exemplo "bate-papo básico" como um exemplo para implantar no ponto de extremidade online gerenciado do Azure Machine Learning.

Importante

Se você usou additional_includes em seu fluxo, então você precisa usar pf flow build --source <path-to-flow> --output <output-path> --format docker primeiro para obter uma versão resolvida da pasta de fluxo.

Definir espaço de trabalho padrão

Use os comandos a seguir para definir o espaço de trabalho padrão e o grupo de recursos para a CLI.

az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>

Registrar o fluxo como um modelo (opcional)

Na implantação online, você pode fazer referência a um modelo registrado ou especificar o caminho do modelo (de onde carregar os arquivos de modelo) embutido. É recomendável registrar o modelo e especificar o nome e a versão do modelo na definição de implantação. Use o formulário model:<model_name>:<version>.

A seguir está um exemplo de definição de modelo para um fluxo de bate-papo.

Nota

Se o seu fluxo não for um fluxo de chat, então você não precisa adicioná-los properties.

$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json
name: basic-chat-model
path: ../../../../examples/flows/chat/basic-chat
description: register basic chat flow folder as a custom model
properties:
  # In AuzreML studio UI, endpoint detail UI Test tab needs this property to know it's from prompt flow
  azureml.promptflow.source_flow_id: basic-chat
  
  # Following are properties only for chat flow 
  # endpoint detail UI Test tab needs this property to know it's a chat flow
  azureml.promptflow.mode: chat
  # endpoint detail UI Test tab needs this property to know which is the input column for chat flow
  azureml.promptflow.chat_input: question
  # endpoint detail UI Test tab needs this property to know which is the output column for chat flow
  azureml.promptflow.chat_output: answer

Use az ml model create --file model.yaml para registrar o modelo em seu espaço de trabalho.

Definir o ponto de extremidade

Para definir um ponto de extremidade, você precisa especificar:

  • Nome do ponto de extremidade: O nome do ponto de extremidade. Ele deve ser exclusivo na região do Azure. Para obter mais informações sobre as regras de nomenclatura, consulte Limites de pontos finais.
  • Modo de autenticação: O método de autenticação para o ponto de extremidade. Escolha entre a autenticação baseada em chave e a autenticação baseada em token do Azure Machine Learning. Uma chave não expira, mas um token expira. Para obter mais informações sobre autenticação, consulte Autenticar em um ponto de extremidade online. Opcionalmente, você pode adicionar uma descrição e tags ao seu ponto de extremidade.
  • Opcionalmente, você pode adicionar uma descrição e tags ao seu ponto de extremidade.
  • Se você quiser implantar em um cluster Kubernetes (cluster habilitado para AKS ou Arc) que está anexado ao seu espaço de trabalho, você pode implantar o fluxo para ser um ponto de extremidade online do Kubernetes.

A seguir está um exemplo de definição de ponto final que, por padrão, usa a identidade atribuída ao sistema.

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: basic-chat-endpoint
auth_mode: key
properties:
# this property only works for system-assigned identity.
# if the deploy user has access to connection secrets, 
# the endpoint system-assigned identity will be auto-assigned connection secrets reader role as well
  enforce_access_to_default_secret_stores: enabled
Chave Description
$schema (Opcional) O esquema YAML. Para ver todas as opções disponíveis no arquivo YAML, você pode exibir o esquema no trecho de código anterior em um navegador.
name O nome do ponto de extremidade.
auth_mode Use key para autenticação baseada em chave. Use aml_token para autenticação baseada em token do Azure Machine Learning. Para obter o token mais recente, use o az ml online-endpoint get-credentials comando.
property: enforce_access_to_default_secret_stores (pré-visualização) - Por padrão, o endpoint usará a identidade assinada pelo sistema. Esta propriedade só funciona para identidade atribuída ao sistema.
- Essa propriedade significa que, se você tiver a permissão de leitor de segredos de conexão, a identidade atribuída ao sistema de ponto de extremidade será atribuída automaticamente à função de Leitor de Segredos de Conexão do Espaço de Trabalho do Azure Machine Learning do espaço de trabalho, para que o ponto de extremidade possa acessar as conexões corretamente ao executar a inferência.
- Por defeito, esta propriedade está 'desativada''.

Se você criar um ponto de extremidade online do Kubernetes, precisará especificar os seguintes atributos adicionais:

Chave Description
compute O destino de computação do Kubernetes para implantar o ponto de extremidade.

Para obter mais configurações de endpoint, consulte Esquema de ponto de extremidade online gerenciado.

Importante

Se o seu fluxo usa conexões de autenticação baseadas no Microsoft Entra ID, não importa se você usa a identidade atribuída pelo sistema ou a identidade atribuída pelo usuário, você sempre precisará conceder à identidade gerenciada funções apropriadas dos recursos correspondentes para que ele possa fazer chamadas de API para esse recurso. Por exemplo, se sua conexão do Azure OpenAI usa a autenticação baseada no Microsoft Entra ID, você precisa conceder à sua identidade gerenciada de ponto de extremidade a função de Usuário OpenAI dos Serviços Cognitivos ou Colaborador do OpenAI dos Serviços Cognitivos dos recursos OpenAI correspondentes.

Usar identidade atribuída ao usuário

Por padrão, quando você cria um ponto de extremidade online, uma identidade gerenciada atribuída ao sistema é gerada automaticamente para você. Você também pode especificar uma identidade gerenciada atribuída pelo usuário existente para o ponto de extremidade.

Se desejar usar a identidade atribuída pelo usuário, você pode especificar os seguintes atributos adicionais no endpoint.yaml:

identity:
  type: user_assigned
  user_assigned_identities:
    - resource_id: user_identity_ARM_id_place_holder

Além disso, você também precisa especificar a identidade atribuída pelo Client ID usuário a environment_variables deployment.yaml seguir. Você pode encontrar o Client ID no Overview da identidade gerenciada no portal do Azure.

environment_variables:
  AZURE_CLIENT_ID: <client_id_of_your_user_assigned_identity>

Importante

Você precisa conceder as seguintes permissões à identidade atribuída pelo usuário antes de criar o ponto de extremidade para que ele possa acessar os recursos do Azure para executar a inferência. Saiba mais sobre como conceder permissões à sua identidade de ponto de extremidade.

Âmbito Função Por que motivo é necessária
Área de trabalho do Azure Machine Learning Função Leitor de Segredos de Ligação da Área de Trabalho do Azure Machine Learning OU uma função personalizada com "Microsoft.MachineLearningServices/workspaces/connections/listsecrets/action" Obter as ligações da área de trabalho
Registo de contentores da área de trabalho Pedidos do ACR Extrair imagem de contentor
Armazenamento predefinido da área de trabalho Leitor de Dados do Armazenamento de Blobs Carregar o modelo a partir do armazenamento
(Opcional) Área de Trabalho do Azure Machine Learning Escritor de métricas da área de trabalho Depois de implementar o ponto final, se pretender monitorizar as métricas relacionadas com o ponto final, tais como a utilização da CPU/GPU/Disco/Memória, terá de conceder esta permissão à identidade.

Definir a implantação

Uma implantação é um conjunto de recursos necessários para hospedar o modelo que faz a inferência real.

A seguir está um exemplo de definição de implantação, no qual a model seção se refere ao modelo de fluxo registrado. Você também pode especificar o caminho do modelo de fluxo na linha.

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: basic-chat-endpoint
model: azureml:basic-chat-model:1
  # You can also specify model files path inline
  # path: examples/flows/chat/basic-chat
environment: 
  image: mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest
  # inference config is used to build a serving container for online deployments
  inference_config:
    liveness_route:
      path: /health
      port: 8080
    readiness_route:
      path: /health
      port: 8080
    scoring_route:
      path: /score
      port: 8080
instance_type: Standard_E16s_v3
instance_count: 1
environment_variables:

  # "compute" mode is the default mode, if you want to deploy to serving mode, you need to set this env variable to "serving"
  PROMPTFLOW_RUN_MODE: serving

  # for pulling connections from workspace
  PRT_CONFIG_OVERRIDE: deployment.subscription_id=<subscription_id>,deployment.resource_group=<resource_group>,deployment.workspace_name=<workspace_name>,deployment.endpoint_name=<endpoint_name>,deployment.deployment_name=<deployment_name>

  # (Optional) When there are multiple fields in the response, using this env variable will filter the fields to expose in the response.
  # For example, if there are 2 flow outputs: "answer", "context", and I only want to have "answer" in the endpoint response, I can set this env variable to '["answer"]'.
  # If you don't set this environment, by default all flow outputs will be included in the endpoint response.
  # PROMPTFLOW_RESPONSE_INCLUDED_FIELDS: '["category", "evidence"]'
Atributo Description
Name O nome da implantação.
Nome do ponto final O nome do ponto de extremidade sob o qual criar a implantação.
Modelo O modelo a ser usado para a implantação. Esse valor pode ser uma referência a um modelo versionado existente no espaço de trabalho ou uma especificação de modelo embutido.
Environment O ambiente para hospedar o modelo e o código. Contém:
- image
- inference_config: é usado para criar um contêiner de serviço para implantações online, incluindo liveness route, readiness_routee scoring_route .
Tipo de instância O tamanho da VM a ser usado para a implantação. Para obter a lista de tamanhos suportados, consulte Lista de SKU de pontos de extremidade online gerenciados.
Contagem de instâncias O número de instâncias a serem usadas para a implantação. Baseie o valor na carga de trabalho esperada. Para alta disponibilidade, recomendamos que você defina o valor como pelo menos 3. Reservamos um extra de 20% para a realização de upgrades. Para obter mais informações, consulte limites para pontos de extremidade online.
Variáveis de ambiente As seguintes variáveis de ambiente precisam ser definidas para pontos de extremidade implantados a partir de um fluxo:
- (obrigatório) PROMPTFLOW_RUN_MODE: serving: especificar o modo de servir
- (obrigatório) PRT_CONFIG_OVERRIDE: para puxar conexões do espaço de trabalho
- (opcional): PROMPTFLOW_RESPONSE_INCLUDED_FIELDS:Quando há vários campos na resposta, usar esta variável env filtrará os campos a serem expostos na resposta.
Por exemplo, se houver duas saídas de fluxo: "answer", "context" e se você quiser apenas ter "answer" na resposta do ponto final, poderá definir essa variável env como '["answer"]'.

Importante

Se sua pasta de fluxo tiver um requirements.txt arquivo que contenha as dependências necessárias para executar o fluxo, você precisará seguir as etapas de implantação com um ambiente personalizado para criar o ambiente personalizado, incluindo as dependências.

Se você criar uma implantação online do Kubernetes, precisará especificar os seguintes atributos adicionais:

Atributo Description
Type O tipo de implantação. Defina o valor como kubernetes.
Tipo de instância O tipo de instância que você criou em seu cluster kubernetes para usar na implantação, representa o recurso de computação de solicitação/limite da implantação. Para obter mais detalhes, consulte Criar e gerenciar o tipo de instância.

Implantar seu ponto de extremidade online no Azure

Para criar o ponto de extremidade na nuvem, execute o seguinte código:

az ml online-endpoint create --file endpoint.yml

Para criar a implantação nomeada blue sob o ponto de extremidade, execute o seguinte código:

az ml online-deployment create --file blue-deployment.yml --all-traffic

Nota

Essa implantação pode levar mais de 15 minutos.

Gorjeta

Se preferir não bloquear o console da CLI, você pode adicionar o sinalizador --no-wait ao comando. No entanto, isso interromperá a exibição interativa do status da implantação.

Importante

O --all-traffic sinalizador acima az ml online-deployment create aloca 100% do tráfego de ponto de extremidade para a implantação azul recém-criada. Embora isso seja útil para fins de desenvolvimento e teste, para produção, talvez você queira abrir o tráfego para a nova implantação por meio de um comando explícito. Por exemplo, az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".

Verificar o status do ponto de extremidade e da implantação

Para verificar o status do ponto de extremidade, execute o seguinte código:

az ml online-endpoint show -n basic-chat-endpoint

Para verificar o status da implantação, execute o seguinte código:

az ml online-deployment get-logs --name blue --endpoint basic-chat-endpoint

Invoque o ponto de extremidade para pontuar dados usando seu modelo

Você pode criar um arquivo sample-request.json como este:

{
  "question": "What is Azure Machine Learning?",
  "chat_history":  []
}
az ml online-endpoint invoke --name basic-chat-endpoint --request-file sample-request.json

Você também pode chamá-lo com um cliente HTTP, por exemplo, com curl:

ENDPOINT_KEY=<your-endpoint-key>
ENDPOINT_URI=<your-endpoint-uri>

curl --request POST "$ENDPOINT_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data '{"question": "What is Azure Machine Learning?", "chat_history":  []}'

Você pode obter sua chave de ponto de extremidade e seu URI de ponto de extremidade do espaço de trabalho do Azure Machine Learning em Endpoints>Consume>Basic consumption info.

Configurações avançadas

Implante com conexões diferentes do desenvolvimento de fluxo

Talvez você queira substituir as conexões do fluxo durante a implantação.

Por exemplo, se o arquivo flow.dag.yaml usar uma conexão chamada my_connection, você poderá substituí-la adicionando variáveis de ambiente do yaml de implantação, como a seguinte:

Opção 1: substituir o nome da conexão

environment_variables:
  my_connection: <override_connection_name>

Se quiser substituir um campo específico da conexão, você pode substituir adicionando variáveis de ambiente com padrão <connection_name>_<field_name>de nomenclatura. Por exemplo, se o fluxo usar uma conexão nomeada my_connection com uma chave de configuração chamada chat_deployment_name, o back-end de serviço tentará recuperar chat_deployment_name da variável de ambiente 'MY_CONNECTION_CHAT_DEPLOYMENT_NAME' por padrão. Se a variável de ambiente não estiver definida, ela usará o valor original da definição de fluxo.

Opção 2: substituir por referência ao ativo

environment_variables:
  my_connection: ${{azureml://connections/<override_connection_name>}}

Nota

Você só pode fazer referência a uma conexão dentro do mesmo espaço de trabalho.

Implantar com um ambiente personalizado

Esta seção mostrará como usar um contexto de compilação do docker para especificar o ambiente para sua implantação, supondo que você tenha conhecimento dos ambientes do Docker e do Azure Machine Learning.

  1. Em seu ambiente local, crie uma pasta chamada image_build_with_reqirements contém os seguintes arquivos:

    |--image_build_with_reqirements
    |  |--requirements.txt
    |  |--Dockerfile
    
    • O requirements.txt deve ser herdado da pasta de fluxo, que foi usada para controlar as dependências do fluxo.

    • O Dockerfile conteúdo é o seguinte:

      FROM mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest
      COPY ./requirements.txt .
      RUN pip install -r requirements.txt
      
  2. Substitua a seção Ambiente no arquivo YAML de definição de implantação pelo seguinte conteúdo:

    environment: 
      build:
        path: image_build_with_reqirements
        dockerfile_path: Dockerfile
      # deploy prompt flow is BYOC, so we need to specify the inference config
      inference_config:
        liveness_route:
          path: /health
          port: 8080
        readiness_route:
          path: /health
          port: 8080
        scoring_route:
          path: /score
          port: 8080
    

Usar o mecanismo de serviço FastAPI (visualização)

Por padrão, o serviço de fluxo de prompt usa o mecanismo de serviço FLASK. A partir do SDK de fluxo de prompt versão 1.10.0, o mecanismo de serviço baseado em FastAPI é suportado. Você pode usar fastapi o mecanismo de serviço especificando uma variável PROMPTFLOW_SERVING_ENGINEde ambiente .

environment_variables:
  PROMPTFLOW_SERVING_ENGINE=fastapi

Configurar simultaneidade para implantação

Ao implantar seu fluxo para implantação online, há duas variáveis de ambiente, que você configura para simultaneidade: PROMPTFLOW_WORKER_NUM e PROMPTFLOW_WORKER_THREADS. Além disso, você também precisará definir o max_concurrent_requests_per_instance parâmetro.

Abaixo está um exemplo de como configurar no deployment.yaml arquivo.

request_settings:
  max_concurrent_requests_per_instance: 10
environment_variables:
  PROMPTFLOW_WORKER_NUM: 4
  PROMPTFLOW_WORKER_THREADS: 1
  • PROMPTFLOW_WORKER_NUM: Este parâmetro determina o número de trabalhadores (processos) que serão iniciados em um contêiner. O valor padrão é igual ao número de núcleos de CPU e o valor máximo é o dobro do número de núcleos de CPU.

  • PROMPTFLOW_WORKER_THREADS: Este parâmetro determina o número de threads que serão iniciados em um trabalhador. O valor predefinido é 1.

    Nota

    Ao definir PROMPTFLOW_WORKER_THREADS para um valor maior que 1, verifique se o código de fluxo está seguro para threads.

  • max_concurrent_requests_per_instance: O número máximo de solicitações simultâneas por instância permitido para a implantação. O valor predefinido é 10.

    O valor sugerido para max_concurrent_requests_per_instance depende do tempo do seu pedido:

    • Se o tempo de solicitação for maior que 200 ms, defina max_concurrent_requests_per_instance como PROMPTFLOW_WORKER_NUM * PROMPTFLOW_WORKER_THREADS.
    • Se o tempo de solicitação for menor ou igual a 200 ms, defina max_concurrent_requests_per_instance como (1.5-2) * PROMPTFLOW_WORKER_NUM * PROMPTFLOW_WORKER_THREADS. Isso pode melhorar a taxa de transferência total, permitindo que algumas solicitações sejam enfileiradas no lado do servidor.
    • Se você estiver enviando solicitações entre regiões, poderá alterar o limite de 200 ms para 1 s.

Ao ajustar os parâmetros acima, você precisa monitorar as seguintes métricas para garantir o desempenho e a estabilidade ideais:

  • Utilização da CPU/memória da instância desta implantação
  • Não-200 respostas (4xx, 5xx)
    • Se você receber uma resposta 429, isso geralmente indica que você precisa reajustar suas configurações de simultaneidade seguindo o guia acima ou dimensionar sua implantação.
  • Status do acelerador do Azure OpenAI

Monitorar pontos de extremidade

Coletar métricas gerais

Você pode visualizar métricas gerais de implantação on-line (números de solicitação, latência de solicitação, bytes de rede, utilização de CPU/GPU/disco/memória e muito mais).

Coletar dados de rastreamento e métricas do sistema durante o tempo de inferência

Você também pode coletar dados de rastreamento e métricas específicas de implantação de fluxo de prompt (consumo de token, latência de fluxo, etc.) durante o tempo de inferência para o Application Insights vinculado ao espaço de trabalho adicionando uma propriedade app_insights_enabled: true no arquivo yaml de implantação. Saiba mais sobre rastreamento e métricas de implantação de fluxo de prompt.

Métricas e rastreamento específicos de fluxo de prompt podem ser especificados para outros Application Insights além do espaço de trabalho vinculado. Você pode especificar uma variável de ambiente no arquivo yaml de implantação da seguinte maneira. Você pode encontrar a cadeia de conexão do seu Application Insights na página Visão geral no portal do Azure.

environment_variables:
  APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>

Nota

Se você definir app_insights_enabled: true apenas, mas seu espaço de trabalho não tiver um Application Insights vinculado, sua implantação não falhará, mas não haverá dados coletados. Se você especificar ambas app_insights_enabled: true e a variável de ambiente acima ao mesmo tempo, os dados e as métricas de rastreamento serão enviados para o Application Insights vinculado ao espaço de trabalho. Portanto, se você quiser especificar um Application Insights diferente, você só precisa manter a variável de ambiente.

Erros comuns

Problema de tempo limite de solicitação upstream ao consumir o ponto de extremidade

Esse erro geralmente é causado pelo tempo limite. Por padrão, o request_timeout_ms é 5000. Você pode especificar no máximo até 5 minutos, o que é 300.000 ms. A seguir está um exemplo mostrando como especificar o tempo limite da solicitação no arquivo yaml de implantação. Saiba mais sobre o esquema de implantação aqui.

request_settings:
  request_timeout_ms: 300000

Nota

O tempo limite de 300.000 ms só funciona para implantações online maanged a partir do fluxo de prompt. Você precisa ter certeza de que adicionou propriedades para seu modelo como abaixo (especificação de modelo embutido no yaml de implantação ou yaml de especificação de modelo autônomo) para indicar que esta é uma implantação do fluxo de prompt.

properties:
  # indicate a deployment from prompt flow
  azureml.promptflow.source_flow_id: <value>

Próximos passos