Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os LLMs (Modelos de Linguagem Grande) Multimodais, que podem processar e interpretar diversas formas de entradas de dados, são uma ferramenta poderosa que pode elevar os recursos de sistemas somente linguagem para outro patamar. Entre os vários tipos de dados, as imagens são importantes para muitos aplicativos do mundo real. A incorporação de dados de imagem em sistemas de IA fornece uma camada essencial de compreensão visual.
Neste artigo, você aprenderá o seguinte:
- Como usar dados de imagem no prompt flow
- Como usar a ferramenta interna GPT-4V para analisar entradas de imagem.
- Como criar um chatbot que pode processar entradas de imagem e texto.
- Como criar uma execução em lotes usando dados de imagem.
- Como consumir o ponto de extremidade online usando dados de imagem.
Importante
O prompt flow está 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 é recomendada 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.
Tipo de imagem no prompt flow
A entrada e a saída do prompt flow dão suporte à imagem como um novo tipo de dados.
Para usar dados de imagem na página de criação do prompt flow:
Adicione uma entrada de fluxo, selecione o tipo de dados como Imagem. Você pode carregar, arrastar e soltar um arquivo de imagem, colar uma imagem da área de transferência ou especificar uma URL de imagem ou o caminho da imagem relativa na pasta de fluxo.
Visualizar a imagem. Se a imagem não for exibida corretamente, exclua a imagem e adicione-a novamente.
Talvez você queira pré-processar a imagem usando a ferramenta Python antes de alimentá-la para um LLM, por exemplo, você pode redimensionar ou recortar a imagem para um tamanho menor.
Importante
Para processar a imagem usando a função Python, você precisa usar a classe
Image
, importá-la do pacotepromptflow.contracts.multimedia
. A classe Image é usada para representar um tipo de imagem dentro do prompt flow. Ele foi projetado para trabalhar com os dados de imagem no formato byte, o que é conveniente quando você precisa tratar ou manipular os dados de imagem diretamente.Para retornar os dados de imagem processados, você precisa usar a classe
Image
para encapsular os dados da imagem. Crie um objetoImage
fornecendo os dados de imagem em bytes e o tipo MIMEmime_type
. O tipo MIME permite que o sistema entenda o formato dos dados da imagem ou pode ser*
para tipo desconhecido.Execute o nó Python e verifique a saída. Neste exemplo, a função Python retorna o objeto Image processado. Selecione a saída da imagem para visualizá-la.
Se o objeto Image do nó Python estiver definido como a saída do fluxo, você também poderá visualizar a imagem na página de saída do fluxo.
Usar a ferramenta GPT-4V
O GPT-4 Turbo do OpenAI do Azure com a ferramenta Visão e o GPT-4V do OpenAI são ferramentas integradas ao prompt flow que podem usar o modelo GPT-4V do OpenAI para responder a perguntas com base em imagens de entrada. Encontre a ferramenta selecionando Mais ferramentas na página de criação de fluxo.
Adicione a ferramenta GPT-4 Turbo do OpenAI do Azure com a Visão ao fluxo. Verifique se você tem uma conexão do OpenAI do Azure, com a disponibilidade de modelos de versão prévia da Visão GPT-4.
O modelo Jinja para compor prompts na ferramenta GPT-4V segue uma estrutura semelhante à API de chat na ferramenta LLM. Para representar uma entrada de imagem no prompt, você pode usar a sintaxe 
. A entrada da imagem pode ser passada nas mensagens user
, system
e assistant
.
Depois de compor o prompt, selecione o botão Validar e analisar entrada para analisar os espaços reservados de entrada. A entrada de imagem representada por 
será analisada como tipo de imagem com o nome de entrada definido como NOME DE ENTRADA.
Você pode atribuir um valor à entrada da imagem das seguintes maneiras:
- Referência da entrada de fluxo do tipo Imagem.
- Referência da saída de outro nó do tipo Imagem.
- Carregue, arraste, cole uma imagem ou especifique uma URL de imagem ou o caminho da imagem relativa.
Criar um chatbot para processar imagens
Nesta seção, você aprenderá como criar um chatbot que pode processar entradas de imagem e texto.
Suponha que você queira criar um chatbot que possa responder a perguntas sobre a imagem e o texto juntos. Você pode fazer isso seguindo as etapas abaixo:
Crie um fluxo de chat.
Adicione uma entrada de chat, selecione o tipo de dados como "lista". Na caixa de chat, o usuário pode inserir uma sequência mista de textos e imagens e o serviço prompt flow transformará isso em uma lista.
Adicione a ferramenta GPT-4V ao fluxo.
Neste exemplo,
{{question}}
refere-se à entrada de chat, que é uma lista de textos e imagens.(Opcional) Você pode adicionar qualquer lógica personalizada ao fluxo para processar a saída do GPT-4V. Por exemplo, você pode adicionar uma ferramenta de segurança de conteúdo para detectar se a resposta contém algum conteúdo inadequado e retornar uma resposta final ao usuário.
Agora você pode testar o chatbot. Abra a janela de chat e insira todas as perguntas com imagens. O chatbot responderá às perguntas com base nas entradas de imagem e texto. O valor de entrada do chat é provisionado automaticamente por meio da entrada na janela de chat. Você pode encontrar os textos com imagens na caixa de chat que é traduzida para uma lista de textos e imagens.
Observação
Para permitir que seu chatbot responda com rich text e imagens, defina a saída do chat com o tipo list
. A lista deve consistir de cadeias de caracteres (para texto) e objetos Image do prompt flow (para imagens) em ordem personalizada.
Criar uma execução em lotes usando dados de imagem
Uma execução em lotes permite testar o fluxo com um amplo conjunto de dados. Há três métodos para representar dados de imagem: por meio de um arquivo de imagem, uma URL de imagem pública ou uma cadeia de caracteres Base64.
- Arquivo de imagem: para testar com arquivos de imagem em execução em lotes, você precisa preparar uma pasta de dados. Essa pasta deve conter um arquivo de entrada de execução em lotes no formato
jsonl
localizado no diretório raiz, juntamente com todos os arquivos de imagem armazenados na mesma pasta ou subpastas.No arquivo de entrada, você deve usar o formato
{"data:<mime type>;path": "<image relative path>"}
para referenciar cada arquivo de imagem. Por exemplo,{"data:image/png;path": "./images/1.png"}
. - URL de imagem pública: você também pode referenciar a URL da imagem no arquivo de entrada usando este formato:
{"data:<mime type>;url": "<image URL>"}
. Por exemplo,{"data:image/png;url": "https://www.example.com/images/1.png"}
. - Cadeia de caracteres Base64: uma cadeia de caracteres Base64 pode ser referenciada no arquivo de entrada usando este formato:
{"data:<mime type>;base64": "<base64 string>"}
. Por exemplo,{"data:image/png;base64": "iVBORw0KGgoAAAANSUhEUgAAAGQAAABLAQMAAAC81rD0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEUAAP7////DYP5JAAAAAWJLR0QB/wIt3gAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB+QIGBcKN7/nP/UAAAASSURBVDjLY2AYBaNgFIwCdAAABBoAAaNglfsAAAAZdEVYdGNvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVDnr0DLAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTA4LTI0VDIzOjEwOjU1KzAzOjAwkHdeuQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wOC0yNFQyMzoxMDo1NSswMzowMOEq5gUAAAAASUVORK5CYII="}
.
Em resumo, o prompt flow usa um formato de dicionário exclusivo para representar uma imagem, que é {"data:<mime type>;<representation>": "<value>"}
. Aqui, <mime type>
refere-se aos tipos de imagem MIME de padrão HTML, enquanto <representation>
refere-se às representações de imagem compatíveis: path
, url
e base64
.
Criar uma conta de lote
Na página de criação de fluxo, selecione o botão Avaliar para iniciar uma execução em lotes. Nas configurações de execução do Lote, selecione um conjunto de dados, que pode ser uma pasta (contendo o arquivo de entrada e os arquivos de imagem) ou um arquivo (contendo apenas o arquivo de entrada). Você pode visualizar o arquivo de entrada e executar o mapeamento de entrada para alinhar as colunas no arquivo de entrada com as entradas de fluxo.
Exibir resultados de execução em lotes
Você pode verificar as saídas de execução em lotes na página de detalhes da execução. Selecione o objeto de imagem na tabela de saída para visualizar facilmente a imagem.
Se as saídas de execução em lote contiverem imagens, você poderá verificar o conjunto de dados flow_outputs com o arquivo jsonl de saída e as imagens de saída.
Consumir o ponto de extremidade online usando dados de imagem
Você pode implantar um fluxo em um ponto de extremidade online para inferência em tempo real.
Atualmente, a guia Teste na página de detalhes da implantação não dá suporte a entradas nem a saídas de imagem. Será compatível em breve.
Por enquanto, você pode testar o ponto de extremidade enviando uma solicitação que inclua entradas de imagem.
Para consumir o ponto de extremidade online com entrada de imagem, você deve representar a imagem usando o formato {"data:<mime type>;<representation>": "<value>"}
. Nesse caso, <representation>
pode ser url
ou base64
.
Se o fluxo gerar a saída da imagem, ele será retornado com o formato base64
, por exemplo, {"data:<mime type>;base64": "<base64 string>"}
.