Partilhar via


Desenvolver fluxo imediato

O Prompt flow é uma ferramenta de desenvolvimento que simplifica o ciclo de desenvolvimento de aplicações de IA alimentadas por Large Language Models (LLMs). Neste artigo, você aprenderá a criar e desenvolver um fluxo de prompt e um fluxo de bate-papo no estúdio do Azure Machine Learning.

À medida que o ímpeto para aplicativos de IA baseados em LLM cresce, o fluxo imediato fornece uma solução abrangente que simplifica o processo de prototipagem, experimentação, iteração e implantação de aplicativos de IA. Usando o fluxo de prompt, você pode:

  • Orquestre fluxos executáveis com LLMs, prompts e ferramentas Python por meio de um gráfico visualizado.
  • Teste, depure e itere facilmente seus fluxos.
  • Crie variantes de prompt e compare seu desempenho.

Crie e desenvolva seu fluxo de prompt

Para criar um fluxo de prompt, selecione Fluxo de prompt na navegação à esquerda do estúdio do Azure Machine Learning e selecione Criar na página Fluxo de prompt .

Na tela Criar um novo fluxo, você pode criar um fluxo por:

  • Criação de um fluxo Padrão, Chat ou Avaliação a partir de um modelo.
  • Clonagem de uma amostra disponível da galeria Explorar.
  • Importar um fluxo existente de arquivos locais ou de um compartilhamento de arquivos.

Captura de tela da criação de fluxo de prompt do zero ou galeria.

Para criar um fluxo, selecione Criar ou Clonar na placa de fluxo desejada. No painel de tela seguinte, você pode alterar o novo nome de fluxo, se desejar, e selecionar Criar ou Clonar. O novo fluxo é aberto na interface do usuário de criação.

Sessão de computação

Antes de começar a criação, inicie a sessão de computação selecionando Iniciar sessão de computação na parte superior da página de criação de fluxo. Uma sessão de computação é necessária para a execução do fluxo. A sessão de computação gerencia os recursos de computação necessários para a execução do aplicativo, incluindo uma imagem do Docker que contém todos os pacotes de dependência necessários.

Captura de tela do início da sessão de computação em estúdio.

Página de criação

A sessão de computação pode levar alguns minutos para iniciar. Enquanto a sessão de computação estiver iniciando, inspecione as partes da página de criação de fluxo.

  • A visualização Fluxo ou nivelamento no lado esquerdo da página é a principal área de trabalho onde você cria o fluxo. Na visualização de nivelamento, você pode editar nós, ferramentas, prompts e entradas; executar nós ou todo o fluxo; e definir e visualizar saídas.

  • Arquivos no canto superior direito mostra a estrutura de pastas e arquivos do fluxo. Cada fluxo tem uma pasta que contém um arquivo flow.dag.yaml , arquivos de código-fonte e pastas do sistema. Você pode adicionar, editar, excluir, carregar ou baixar arquivos para teste, implantação ou colaboração.

  • A visualização Gráfico no canto inferior direito visualiza a estrutura de fluxo. Você pode aumentar ou diminuir o zoom ou usar o layout automático. Não é possível editar essa exibição diretamente, mas você pode selecionar um nó para localizá-la e editá-la na visualização nivelada.

Entrada e saída de fluxo

Nas seções Entradas e Saídas, você pode visualizar, adicionar ou remover e editar entradas e saídas.

  • Entrada de fluxo são os dados passados para o fluxo como um todo. Você define o esquema de entrada especificando o nome e o tipo e define o valor de cada entrada para testar o fluxo. Você pode fazer referência à entrada de fluxo nos nós de fluxo usando ${input.<input name>}.

  • Saída de fluxo são os dados produzidos pelo fluxo como um todo, que resume os resultados da execução do fluxo. Você pode definir o valor de saída de fluxo fazendo referência a uma saída de nó único usando a sintaxe ${<node name>.output} ou ${<node name>.output.<field name>}. Você pode exibir e exportar a tabela de resultados de saída após a conclusão de uma execução de fluxo ou de lote.

Ferramentas de fluxo

Em um fluxo, você pode consumir diferentes tipos de ferramentas, como LLM, Python, Prompt, Serp API e Content Safety. A seleção de uma ferramenta adiciona um novo nó para essa ferramenta ao final do fluxo. Você deve especificar o nome do nó e definir as configurações necessárias. Você pode usar os controles de nó para alterar a posição do nó no fluxo.

Entradas e saídas de nós

As ferramentas LLM e Prompt usam Jinja como uma linguagem de modelagem para gerar dinamicamente o prompt. Por exemplo, você pode usar {{}} para incluir seu nome de entrada em vez de usar texto fixo, para que ele possa ser substituído imediatamente.

Você pode definir entradas e saídas do nó das seguintes maneiras:

  • Defina o valor de entrada diretamente.
  • Faça referência à entrada de fluxo usando ${input.<input name>}.
  • Faça referência à saída do nó usando ${<node name>.output} ou ${<node name>.output.<field name>}.

Depois de terminar de compor um prompt ou script Python, selecione Validar e analisar a entrada para o sistema para analisar automaticamente a entrada do nó com base no modelo de prompt e na entrada da função Python.

Você pode vincular nós fazendo referência à saída do nó. Por exemplo, você pode fazer referência à saída do nó LLM na entrada do nó Python para que o nó Python consuma a saída do nó LLM. Na visualização Gráfico, você pode ver os dois nós ligados entre si.

Nós LLM

Para um nó Azure OpenAI LLM, você precisa selecionar Conexão, Api e deployment_name e definir o Prompt. Você usa a conexão para armazenar e gerenciar com segurança chaves secretas ou outras credenciais confidenciais necessárias para interagir com o Azure OpenAI.

Se você ainda não tiver uma conexão, crie-a antes de adicionar o nó LLM e verifique se o recurso do Azure OpenAI tem um chat ou uma implantação de conclusão. Para obter mais informações, consulte Configurar uma conexão e Criar um recurso e implantar um modelo usando o Azure OpenAI.

Nós Python

Para usar a ferramenta Python, você precisa definir o script Python, o valor de entrada e outras configurações. Um novo nó Python fornece a seguinte função Python clichê que define entradas e saídas.

from promptflow import tool

# The inputs section will change based on the arguments of the tool function, after you save the code
# Adding type to arguments and return value will help the system show the types properly
# Please update the function name/signature per need
@tool
def my_python_tool(input1: str) -> str:
    return 'hello ' + input1

Controlo condicional

O fluxo de prompt oferece controle condicional, que permite definir condições para a execução de qualquer nó em um fluxo.

O controle condicional fornece a capacidade de associar cada nó em um fluxo a uma configuração de ativação. Essa configuração é uma when instrução que determina quando um nó deve ser executado. O poder deste recurso é realizado em fluxos complexos onde a execução de certas tarefas depende do resultado de tarefas anteriores. Usando o controle condicional, você pode configurar seus nós específicos para serem executados somente quando as condições especificadas forem atendidas.

Defina a configuração de ativação para um nó selecionando o botão Ativar configuração na placa de nó. Adicione uma instrução When e defina a condição. Você pode definir as condições fazendo referência à entrada de fluxo ou a uma saída de nó. Por exemplo, você pode definir a condição ${input.<input name>} ou ${<node name>.output} como valores específicos. Se a condição não for atendida, o nó será ignorado e o status do nó aparecerá como Ignorado.

Captura de tela da configuração ativar config para habilitar o controle condicional.

Testar um fluxo

Você pode testar um fluxo executando um único nó ou executando todo o fluxo.

  • Para executar um único nó, selecione o ícone Executar na placa do nó. Quando a execução do nó for concluída, você poderá verificar rapidamente os resultados na seção Saídas do nó.
  • Para executar todo o fluxo, selecione Executar na parte superior da página.

Saídas de fluxo

Depois de selecionar Executar para executar o fluxo, você pode ver o status da execução no banner na parte superior da página. Selecione Exibir saídas no banner superior ou na barra de menu superior para visualizar informações detalhadas de entrada, saída, execução de fluxo e orquestração.

 Captura de tela do botão de saída de exibição em dois locais.

Após a conclusão da execução do fluxo, você pode selecionar Exibir saídas para verificar todas as saídas históricas na tela Saídas.

Captura de tela do resultado do teste de fluxo.

Selecione a guia Rastreamento na tela Saídas para ver um gráfico que fornece informações sobre a duração e o custo de token associado do fluxo. Selecione fluxo sob o nome do nó para ver informações detalhadas de visão geral do fluxo no painel direito.

Expanda o fluxo e selecione qualquer etapa para ver informações detalhadas sobre essa etapa. Você pode ver a duração da execução de cada nó na árvore de extensão. Para obter mais informações, consulte Especificação de extensão de rastreamento.

 Captura de tela de detalhes de rastreamento.

Desenvolver um fluxo de bate-papo

Um fluxo de bate-papo é um tipo específico de fluxo de prompt projetado para o desenvolvimento de aplicativos conversacionais. O fluxo de bate-papo se baseia nos recursos de fluxo padrão para fornecer suporte aprimorado para entradas/saídas de bate-papo e histórico de bate-papo. Usando o fluxo de bate-papo, você pode criar facilmente um chatbot que lida com a entrada e saída do bate-papo.

Para criar um fluxo de chat, na tela Criar um novo fluxo, selecione Criar no cartão de fluxo de bate-papo ou selecione Bate-papo na galeria Explorar e clone um dos fluxos disponíveis.

Em uma página de criação de fluxo de chat, o fluxo de chat é marcado com um rótulo de bate-papo para distingui-lo dos fluxos padrão e de avaliação. Para testar um fluxo de chat, selecione Chat na parte superior da página para abrir uma caixa de chat para conversação.

Captura de tela da página de criação do fluxo de chat.

Entrada de bate-papo, saída de bate-papo e histórico de bate-papo

Os elementos mais importantes que diferenciam um fluxo de chat de um fluxo padrão são a entrada de chat, o histórico de chat e a saída de chat. O histórico de bate-papo e a entrada de bate-papo são necessários nos fluxos de bate-papo.

  • A entrada de bate-papo refere-se às mensagens ou consultas enviadas pelos usuários ao chatbot. Lidar eficazmente 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 desencadear respostas apropriadas.

  • O histórico de bate-papo é o registro de todas as interações entre o usuário e o chatbot, incluindo entradas do usuário e saídas geradas por IA. Manter o histórico de bate-papo é essencial para acompanhar o contexto da conversa e garantir que a IA possa gerar respostas contextualmente relevantes.

  • A saída de bate-papo refere-se às mensagens geradas por IA que são enviadas aos usuários em resposta às suas entradas. Gerar resultados de bate-papo contextualmente apropriados e envolventes é vital para uma experiência positiva do usuário.

Um fluxo de bate-papo pode ter várias entradas. Na seção Entradas de fluxo de chat, você marca uma das entradas como a entrada de bate-papo e preenche o valor de entrada de bate-papo inserindo uma pergunta na caixa Bate-papo.

Captura de tela mostrando a pergunta de teste na seção Entradas e na caixa Bate-papo.

Gerenciar histórico de bate-papo

Para ajudá-lo a gerenciar o histórico de bate-papo, chat_history a seção Entradas é reservada para representar o histórico de bate-papo. Não é possível editar chat_historymanualmente o .

O histórico do bate-papo é estruturado como uma lista de entradas e saídas. Todas as interações na caixa de chat, incluindo entradas de bate-papo do usuário, saídas de bate-papo geradas e outras entradas e saídas de fluxo, são armazenadas automaticamente no histórico de bate-papo. O código a seguir mostra a estrutura do histórico de bate-papo.

[
{
    "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"
    }
}
]

Nota

Ao realizar testes na caixa Chat, você salva automaticamente o histórico do bate-papo. Para execuções em lote, você deve incluir o histórico de bate-papo no conjunto de dados de execução em lote. Se não houver histórico de bate-papo disponível, defina o chat_history como uma lista [] vazia dentro do conjunto de dados de execução em lote.

Para recuperar interações anteriores, consulte chat_history em seus prompts. Em seguida, você pode consultar entradas e saídas anteriores para criar respostas contextualmente relevantes. Incorporar o histórico de bate-papo em suas solicitações é essencial para criar respostas de chatbot sensíveis ao contexto e envolventes.

Você pode usar a gramática for-loop da linguagem Jinja para exibir uma lista de entradas e saídas do chat_history.

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

Teste com a caixa de chat

A caixa de bate-papo fornece uma maneira interativa de testar seu fluxo de bate-papo simulando uma conversa com seu chatbot. Para testar seu fluxo de bate-papo usando a caixa Chat :

  1. Selecione Chat para abrir a barra lateral do Chat .
  2. Insira as perguntas de teste na caixa de bate-papo na parte inferior da tela para enviá-las ao chatbot.
  3. Analise as respostas do chatbot para garantir que sejam contextualmente apropriadas e precisas.
  4. Selecione Exibir saídas na parte superior da página de criação para visualizar e depurar rapidamente entradas, saídas e histórico de bate-papo.
  5. Na tela Saídas, selecione a guia Rastreamento e, em seguida, selecione fluxo para ver informações detalhadas de visão geral do fluxo no painel direito. Expanda o fluxo e selecione qualquer etapa para ver informações detalhadas sobre essa etapa.

 Captura de tela da experiência da caixa de bate-papo de fluxo de bate-papo.