Desenvolver um prompt flow

Importante

Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

O prompt flow é uma ferramenta de desenvolvimento projetada para simplificar todo o ciclo de desenvolvimento de aplicativos de IA alimentados por LLMs (Modelos de Linguagem Grandes). O prompt flow oferece uma solução abrangente que simplifica o processo de criação de protótipos, experimentos, iteração e implantação dos seus aplicativos de IA.

Com o prompt flow, você poderá:

  • Orquestrar fluxos executáveis com LLMs, prompts e ferramentas do Python por meio de um grafo visualizado.
  • Testar, depurar e iterar seus fluxos com facilidade.
  • Criar variantes de prompt e comparar o desempenho delas.

Neste artigo, você aprenderá a criar e desenvolver seu primeiro prompt flow no Estúdio de IA do Azure.

Pré-requisitos

Criar e desenvolver seu fluxo de prompt

Crie um fluxo clonando as amostras disponíveis na galeria ou criando um fluxo do zero. Se você já tiver arquivos de fluxo no local ou no compartilhamento de arquivo, também poderá importá-los para criar um fluxo.

Para criar um prompt flow por meio da galeria no Estúdio de IA do Azure:

  1. Entre no Estúdio de IA do Azure e selecione seu projeto.

  2. No menu recolhível à esquerda, selecione Prompt flow.

  3. Selecione + Criar.

  4. No bloco Fluxo padrão, selecione Criar.

  5. Na página Criar um fluxo, insira um nome de pasta e escolha Criar.

    Captura de tela da seleção e criação de um fluxo padrão.

  6. A página de criação de prompt flow será aberta. Você já poderá começar a criar seu fluxo. Por padrão, você verá um fluxo de exemplo. Esse fluxo de exemplo contém nós para as ferramentas LLM e Python.

    Captura de tela da entrada e da saída do fluxo na página de fluxo de prompt de edição.

    Observação

    A exibição de grafo somente para visualização. Ela mostra a estrutura de fluxo que você está desenvolvendo. Não é possível editar a exibição de grafo diretamente. Só é possível aplicar mais zoom e menos zoom e fazer a rolagem. Selecione um nó na exibição de grafo para realçá-lo e navegar até o nó no modo de exibição de edição da ferramenta.

  7. Opcionalmente, você pode adicionar mais ferramentas ao fluxo. As opções de ferramenta visíveis são LLM, Prompte Python. Para ver mais ferramentas, selecione + Mais ferramentas.

    Captura de tela de onde você pode encontrar mais ferramentas na página editar fluxo de prompt.

  8. Selecione uma conexão e uma implantação no editor da ferramenta LLM.

    Captura de tela da conexão e implantação selecionadas na ferramenta LLM na página de fluxo de prompt de edição.

  9. Selecione Executar para executar o fluxo.

    Captura de tela de onde selecionar a execução na página de fluxo de prompt de edição.

  10. O status da execução de fluxo é mostrado como Em execução.

    Captura de tela do fluxo no estado em execução na página editar fluxo de prompt.

  11. Depois que a execução de fluxo for concluída, selecione Exibir saídas para visualizar os resultados do fluxo.

    Captura de tela de onde você pode selecionar para exibir os resultados do fluxo na página editar fluxo de prompt.

  12. Visualize o status e a saída da execução de fluxo na seção Saídas.

    Captura de tela dos detalhes de saída.

Como criar o fluxo

Cada fluxo é representado por uma pasta que contém um arquivo flow.dag.yaml, arquivos de código-fonte e pastas do sistema. Você pode adicionar novos arquivos, editar os arquivos existentes e excluir arquivos. Você também pode importar ou exportar arquivos do local.

Além da edição em linha do nó na exibição de nivelamento, você também pode ativar o modo de alternância Modo de arquivo bruto e selecionar o nome do arquivo para editar o arquivo na guia Abrir arquivo.

Entrada e saída de fluxo

A entrada de fluxo são os dados transmitidos para o fluxo como um todo. Defina o esquema de entrada especificando o nome e o tipo. Defina o valor de entrada de cada entrada para testar o fluxo. Referencie a entrada de fluxo posteriormente nos nós de fluxo usando a sintaxe ${input.[input name]}.

A saída de fluxo são os dados produzidos pelo fluxo como um todo, que resumem os resultados da execução de fluxo. Visualize e exporte a tabela de saída depois que a execução de fluxo ou em lote for concluída. Defina o valor de saída do fluxo referenciando a saída de nó único de fluxo usando a sintaxe ${[node name].output} ou ${[node name].output.[field name]}.

Ao referenciar a saída do nó, você pode vincular os nós. Por exemplo, referencie a saída do nó LLM na entrada do nó Python, para que o nó Python possa consumir a saída do nó LLM e, na exibição de grafo, você poderá ver que os dois nós estão vinculados.

Habilitar o controle condicional para o fluxo

O prompt flow oferece não apenas uma forma simplificada de executar o fluxo, mas também um recurso avançado para desenvolvedores, o controle condicional, que permite que os usuários definam condições para a execução de qualquer nó em um fluxo.

Em essência, o controle condicional fornece a capacidade de associar cada nó em um fluxo a uma opção ativar configuração. Essa configuração é essencialmente uma instrução “when” que determina quando um nó deve ser executado. O poder desse recurso é percebido quando você tem fluxos complexos em que a execução de determinadas tarefas depende do resultado das tarefas anteriores. Usando o controle condicional, você pode configurar os nós específicos para serem executados somente quando as condições especificadas forem atendidas.

Especificamente, você pode definir a opção de ativar configuração para o nó selecionando o botão Ativar configuração no cartão do nó. Você pode adicionar a instrução “when” e definir a condição. Defina as condições referenciando a entrada de fluxo ou a saída do nó. Por exemplo, defina a condição ${input.[input name]} ou ${[node name].output} como um valor específico.

Se a condição não for atendida, o nó será ignorado. O status do nó é mostrado como “Ignorado”.

Testar o fluxo

Você pode testar o fluxo de duas maneiras:

  • Executar nó único.
    • Para executar um nó individual, na exibição de nivelamento, selecione o ícone Executar no nó. Depois que a execução for concluída, você poderá verificar rapidamente o resultado na seçãode saída do nó.
  • Executar o fluxo inteiro.
    • Para executar todo o fluxo, selecione o botão Executar no canto superior direito.

Exibir o resultado e o rastreamento do teste (versão prévia)

Para toda a execução de fluxo, depois de executar o fluxo, você pode ver o status de execução na faixa de execução. Em seguida, você pode selecionar Exibir rastreamento para exibir o rastreamento para verificar o resultado e observar a execução do fluxo, onde você pode ver a entrada e a saída de todo o fluxo e cada nó, juntamente com informações mais detalhadas para depuração. Ele está disponível durante a execução e depois que a execução é concluída.

Entender o modo de exibição de rastreamento

O tipo de rastreamento de um prompt flow é designado como Flow. No modo de exibição de rastreamento, a sequência clara das ferramentas usadas para orquestração de fluxo pode ser observada.

Cada intervalo de nível 2 sob a raiz de fluxo representa um nó no fluxo, executado na forma de uma chamada de função, portanto, o tipo de intervalo é identificado como Função. Você pode ver a duração de cada execução de nó na árvore de intervalo.

Na árvore de extensão, as chamadas LLM são facilmente identificáveis como o intervalo LLM. Elas fornecem informações sobre a duração da chamada LLM e o custo do token associado.

Selecionando um intervalo, você pode ver as informações detalhadas no lado direito. Isso inclui entrada &saída, Json Bruto e Exceção, que são úteis para observação e depuração.

 Captura de tela dos detalhes do rastreamento.

Observação

No SDK de prompt flow, definimos tipos de intervalo de valores, incluindo LLM, Function, Embedding, Retrievale Flow. E o sistema cria automaticamente intervalos com informações de execução em atributos e eventos designados.

Para saber mais sobre os tipos de intervalo, confira o intervalo de rastreamento.

Depois que a execução do fluxo for concluída, para verificar os resultados, você poderá selecionar o botão Exibir resultados do teste para verificar todos os registros de execução históricos em uma lista. Por padrão, os registros de execução criados nos últimos 7 dias são exibidos. Você pode selecionar o Filtro para alterar a condição.

Captura de tela do resultado do teste de fluxo.

Você também pode selecionar no Nome do registro de execução para exibir as informações detalhadas no modo de exibição de rastreamento.

Desenvolver um fluxo de chat

O fluxo de chat foi projetado para o desenvolvimento de aplicativos de conversa, aproveitando os recursos do fluxo padrão e fornecendo suporte aprimorado para entradas/saídas de chat e gerenciamento de histórico de chat. Com o fluxo de chat, você pode criar facilmente um chatbot que manipula a entrada e a saída do chat.

Na página de criação do fluxo de chat, o fluxo de chat é marcado com um rótulo de "chat" para distingui-lo do fluxo padrão e do fluxo de avaliação. Para testar o fluxo de chat, selecione o botão "Chat" para disparar uma caixa de chat para conversa.

Entrada/saída de chat e histórico de chat

Os elementos mais importantes que diferenciam um fluxo de chat de um fluxo padrão são Entrada de chat, Histórico de chat e Saída de chat.

  • Entrada de chat: a entrada de chat refere-se às mensagens ou consultas enviadas pelos usuários ao chatbot. Lidar efetivamente com a entrada de chat é crucial para uma conversa bem-sucedida, pois envolve entender as intenções do usuário, extrair informações relevantes e disparar respostas apropriadas.
  • Histórico de chat: o histórico de chat é o registro de todas as interações entre o usuário e o chatbot, incluindo entradas de usuário e saídas geradas por IA. Manter o histórico de chat é essencial para acompanhar o contexto da conversa e garantir que a IA possa gerar respostas contextualmente relevantes.
  • Saída do chat: a saída do chat refere-se às mensagens geradas por IA que são enviadas ao usuário em resposta às suas entradas. Gerar a saída de chat contextualmente apropriada e envolvente é vital para uma experiência positiva do usuário.

Um fluxo de chat pode ter várias entradas, o histórico e a entrada de chat são entradas obrigatórias no fluxo de chat.

  • Na seção de entradas de fluxo de chat, uma entrada de fluxo pode ser marcada como entrada de chat. Em seguida, você pode preencher o valor de entrada do chat digitando na caixa de chat.

  • O prompt flow pode ajudar o usuário a gerenciar o histórico de chat. O chat_history na seção Entradas é reservado para representar o histórico de chat. Todas as interações na caixa de chat, incluindo entradas de chat do usuário, saídas de chat geradas e outras entradas e saídas de fluxo, são armazenadas no histórico de chat. O usuário não pode definir manualmente o valor de chat_history na seção Entradas. Ele é estruturado como uma lista de entradas e saídas:

    [
    {
        "inputs": {
        "<flow input 1>": "xxxxxxxxxxxxxxx",
        "<flow input 2>": "xxxxxxxxxxxxxxx",
        "<flow input N>""xxxxxxxxxxxxxxx"
        },
        "outputs": {
        "<flow output 1>": "xxxxxxxxxxxx",
        "<flow output 2>": "xxxxxxxxxxxxx",
        "<flow output M>": "xxxxxxxxxxxxx"
        }
    },
    {
        "inputs": {
        "<flow input 1>": "xxxxxxxxxxxxxxx",
        "<flow input 2>": "xxxxxxxxxxxxxxx",
        "<flow input N>""xxxxxxxxxxxxxxx"
        },
        "outputs": {
        "<flow output 1>": "xxxxxxxxxxxx",
        "<flow output 2>": "xxxxxxxxxxxxx",
        "<flow output M>": "xxxxxxxxxxxxx"
        }
    }
    ]
    

Observação

A capacidade de salvar ou gerenciar automaticamente o histórico de chat é um recurso da página de criação ao realizar testes na caixa de chat. Para execuções em lote, é necessário que os usuários incluam o histórico de chat no conjunto de dados de execução em lote. Se não houver nenhum histórico de chat disponível para teste, basta definir o chat_history para uma lista vazia [] dentro do conjunto de dados de execução em lote.

Criar um prompt com o histórico de chat

Incorporar o histórico de chat em seus prompts é essencial para criar respostas de chatbot envolventes e com reconhecimento de contexto. Nos prompts, você pode referenciar chat_history para recuperar as interações anteriores. Isso permite que você faça referência a entradas e saídas anteriores para criar respostas contextualmente relevantes.

Use a gramática for-loop da linguagem Jinja para exibir uma lista de entradas e saídas de chat_history.

{% for item in chat_history %}
user:
{{item.inputs.question}}
assistant:
{{item.outputs.answer}}
{% endfor %}

Testar com a caixa de chat

A caixa de chat fornece uma maneira interativa de testar seu fluxo de chat simulando uma conversa com seu chatbot. Para testar o fluxo de chat usando a caixa de chat, siga estas etapas:

  1. Selecione o botão "Chat" para abrir a caixa de chat.
  2. Digite suas entradas de teste na caixa de chat e pressione Enter para enviá-las ao chatbot.
  3. Examine as respostas do chatbot para garantir que elas sejam contextualmente apropriadas e precisas.
  4. Exiba o rastreamento no local para observar e depurar rapidamente.

Próximas etapas