Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica solo a:Portale di Foundry (versione classica). Questo articolo non è disponibile per il nuovo portale foundry.
Altre informazioni sul nuovo portale.
Nota
I collegamenti in questo articolo potrebbero aprire contenuto nella nuova documentazione di Microsoft Foundry anziché nella documentazione di Foundry (versione classica) visualizzata.
Avviso
Prompt flow in Microsoft Foundry e Azure Machine Learning sarà ritirato il 20 aprile 2027. Prompt flow non è più consigliato per i nuovi sviluppi. Esegui la migrazione di applicazioni e distribuzioni Prompt flow esistenti ad Microsoft Agent Framework prima del 20 aprile 2027.
Le immagini container di prompt flow non ricevono più aggiornamenti, inclusi gli aggiornamenti di sicurezza e dei pacchetti. Questo vale per le immagini runtime di Prompt flow, tra cui promptflow-runtime, promptflow-runtime-stable e promptflow-python.
Dopo il 20 aprile 2027, Prompt flow, inclusi l'esperienza di creazione sul Web in Microsoft Foundry e Azure Machine Learning, le estensioni per VS Code e le immagini del contenitore correlate di Prompt flow, non sarà più supportato né disponibile.
Se l'applicazione dipende dalle distribuzioni di Prompt flow o dalle immagini di runtime, pianifica di spostare tali carichi di lavoro verso alternative supportate, ad esempio Microsoft Agent Framework, prima della data di ritiro. Per linee guida sulla migrazione, vedere la guida alla migrazione di Prompt flow e gli esempi di codice per la migrazione.
I modelli di linguaggio di grandi dimensioni (LLM) multimodali possono elaborare e interpretare diverse forme di input di dati. Questi modelli elevano le funzionalità dei sistemi di sola lingua. Tra i vari tipi di dati, le immagini sono importanti per molte applicazioni reali. L'incorporazione dei dati delle immagini nei sistemi di intelligenza artificiale offre un livello essenziale di comprensione visiva.
In questo articolo si apprenderà quanto segue:
- Come usare i dati di immagine nel prompt flow
- Come usare lo strumento GPT-4V predefinito per analizzare gli input delle immagini.
- Come creare un chatbot in grado di elaborare input di immagine e testo.
- Come creare una esecuzione batch usando i dati immagine.
- Come consumare l'endpoint online con i dati delle immagini.
Importante
Questo articolo fornisce il supporto legacy per i progetti basati su hub. Non funzionerà per i progetti Foundry. Vedere Come si conosce il tipo di progetto di cui si dispone?
nota di compatibilità SDK: gli esempi di codice richiedono una versione specifica Microsoft Foundry SDK. Se si verificano problemi di compatibilità, valutare la possibilità di eseguire la migrazione da un progetto basato su hub a un progetto Foundry.
Tipo di immagine nel flusso di richiesta
L'input e l'output del prompt flow supportano l'immagine come nuovo tipo di dati.
Per usare i dati delle immagini nella pagina di creazione del prompt flow:
Aggiungi un input di flusso, seleziona il tipo di dati come Immagine. È possibile caricare, trascinare e rilasciare un file di immagine, incollare un'immagine dagli Appunti o specificare un URL di immagine o il percorso dell'immagine relativa nella cartella del flusso.
Visualizzare in anteprima l'immagine. Se l'immagine non viene visualizzata correttamente, eliminare l'immagine e aggiungerla di nuovo.
È possibile pre-elaborare l'immagine usando lo strumento Python prima di immetterlo nell'LLM. Ad esempio, è possibile ridimensionare o ritagliare l'immagine in una dimensione inferiore.
from promptflow import tool from promptflow.contracts.multimedia import Image as PFImage from PIL import Image as Image import io @tool def process_image(input_image: PFImage) -> PFImage: # convert the input image data to a BytesIO object data_byteIO = io.BytesIO(input_image) # Open the image data as a PIL Image object image = Image.open(data_byteIO) # crop image cropped_image = image.crop((100, 100, 900, 900)) # Convert the cropped image back to BytesIO byte_arr = io.BytesIO() cropped_image.save(byte_arr, format = 'JPEG') # Create a new prompt flow Image object with the cropped image data # This image is now ready to be returned cropped_PF_image = PFImage(byte_arr.getvalue(), mime_type = "image/jpeg") return cropped_PF_image ``` > [!IMPORTANT] > To process images by using a Python function, use the `Image` class that you import from the `promptflow.contracts.multimedia` package. The `Image` class represents an `Image` type within prompt flow. It works with image data in byte format, which is convenient when you need to handle or manipulate the image data directly. > > To return the processed image data, use the `Image` class to wrap the image data. Create an `Image` object by providing the image data in bytes and the [MIME type](https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types) `mime_type`. The MIME type lets the system understand the format of the image data, or it can be `*` for unknown type.Eseguire il nodo Python e controllare l'output. In questo esempio, la funzione Python restituisce l'oggetto Image elaborato. Selezionare l'output dell'immagine per visualizzare l'anteprima dell'immagine.
Se l'oggetto Image del nodo Python è impostato come output del flusso, è possibile visualizzare l'anteprima dell'immagine anche nella pagina di output del flusso.
Usare lo strumento GPT-4V
Il Azure OpenAI GPT-4 Turbo con lo strumento Vision e OpenAI GPT-4V sono strumenti predefiniti nel flusso di richiesta che usano il modello OpenAI GPT-4V per rispondere alle domande in base alle immagini di input. È possibile trovare lo strumento selezionando + Altri strumenti nella pagina di creazione del flusso.
Aggiungere lo strumento Azure OpenAI GPT-4 Turbo con Visione al flusso. Assicurarsi di disporre di una connessione Azure OpenAI, con la disponibilità di modelli GPT-4 in anteprima.
Il modello Jinja per la composizione di richieste nello strumento GPT-4V segue una struttura simile all'API di chat nello strumento LLM. Per rappresentare un input di immagine all'interno del prompt, usare la sintassi . È possibile passare l'input dell'immagine nei user, system e assistant messaggi.
Dopo avere composto il prompt, selezionare convalida e analisi dell'input per analizzare i segnaposto di input. L'input dell'immagine rappresentato da  viene analizzato come tipo di immagine con il nome di input INPUT NAME.
È possibile assegnare un valore all'input dell'immagine nei modi seguenti:
- Applicare il riferimento dall'input del flusso di tipo Immagine.
- Riferimento all'output di tipo Image di un altro nodo.
- Caricare, trascinare, incollare un'immagine o specificare un URL di immagine o il percorso dell'immagine relativa.
Creare un chatbot per elaborare le immagini
In questa sezione si apprenderà come creare un chatbot in grado di elaborare input di immagine e testo.
Si supponga di voler creare un chatbot in grado di rispondere a qualsiasi domanda sull'immagine e sul testo insieme. A tale scopo, seguire i passaggi descritti in questa sezione.
Creare un flusso di chat.
In Input selezionare il tipo di dati come elenco. Nella casella di chat l'utente può immettere una sequenza mista di testi e immagini e il servizio flusso di richiesta trasforma tale input in un elenco.
Aggiungere lo strumento GPT-4V al flusso. È possibile copiare il prompt dalla chat predefinita dello strumento LLM e incollarlo nello strumento GPT-4V. Eliminare quindi la chat predefinita dello strumento LLM dal flusso.
In questo esempio,
{{question}}fa riferimento all'input della chat, che è un elenco di testi e immagini.In Outputs, modifica il valore di "answer" con il nome dell'output del tuo strumento di visione, ad esempio,
${gpt_vision.output}.
(Facoltativo) Aggiungere qualsiasi logica personalizzata al flusso per elaborare l'output GPT-4V. Ad esempio, è possibile aggiungere lo strumento Guardrails &controls per rilevare se la risposta contiene contenuto inappropriato e restituire una risposta finale all'utente.
Screenshot dell'elaborazione dell'output gpt-4v con lo strumento Guardrails & Controls. Testare il chatbot. Aprire la finestra della chat e immettere eventuali domande con le immagini. Il chatbot risponde alle domande in base all'immagine e agli input di testo. Il valore di input della chat viene automaticamente compilato dall'input nella finestra della chat. È possibile trovare i testi con immagini nella casella di chat che viene tradotta in un elenco di testi e immagini.
Nota
Per consentire al chatbot di rispondere con testo arricchito e immagini, impostare il tipo di output della chat list. L'elenco deve essere costituito da stringhe (per il testo) e gli oggetti Image del flusso di richiesta (per le immagini) in ordine personalizzato.
Creare un'esecuzione batch usando i dati dell'immagine
Un'esecuzione batch consente di testare il flusso con un set di dati di grandi dimensioni. È possibile rappresentare i dati dell'immagine in tre modi: usando un file di immagine, un URL di immagine pubblica o una stringa Base64.
-
File di immagine: Per testare i file di immagine in un'esecuzione batch, è necessario preparare una cartella dati. Questa cartella deve contenere un file di esecuzione batch in formato
jsonlnella directory radice, insieme a tutti i file di immagine salvati nella stessa cartella o nelle sottocartelle.
Nel file di ingresso, utilizzare il formato {"data:<mime type>;path": "<image relative path>"}per fare riferimento a ogni file di immagine. Ad esempio,{"data:image/png;path": "./images/1.png"}. -
URL immagine pubblica: Fare riferimento all'URL dell'immagine nel file di ingresso usando il formato
{"data:<mime type>;url": "<image URL>"}. Ad esempio,{"data:image/png;url": "https://www.example.com/images/1.png"}. -
Stringa Base64: Fare riferimento a una stringa Base64 nel file di voce usando il formato
{"data:<mime type>;base64": "<base64 string>"}. Ad esempio,{"data:image/png;base64": "iVBORw0KGgoAAAANSUhEUgAAAGQAAABLAQMAAAC81rD0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEUAAP7////DYP5JAAAAAWJLR0QB/wIt3gAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB+QIGBcKN7/nP/UAAAASSURBVDjLY2AYBaNgFIwCdAAABBoAAaNglfsAAAAZdEVYdGNvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVDnr0DLAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTA4LTI0VDIzOjEwOjU1KzAzOjAwkHdeuQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wOC0yNFQyMzoxMDo1NSswMzowMOEq5gUAAAAASUVORK5CYII="}.
In sintesi, il flusso di richiesta usa un formato di dizionario univoco per rappresentare un'immagine: {"data:<mime type>;<representation>": "<value>"}.
<mime type> fa riferimento ai tipi di immagine MIME standard HTML. Fa <representation> riferimento alle rappresentazioni di immagini supportate: path, urle base64.
Eseguire un batch
Nella creazione del flusso selezionare Evaluate-Custom evaluation (Valutazione personalizzata)> per avviare un'esecuzione batch. In Impostazioni esecuzione batch selezionare un set di dati. È possibile selezionare una cartella contenente il file di ingresso e i file di immagine oppure selezionare un file contenente solo il file di ingresso. È possibile visualizzare in anteprima il file di input ed effettuare la mappatura degli input per allineare le colonne nel file di input con gli input del flusso.
Visualizzare i risultati dell'esecuzione batch
È possibile controllare gli output di esecuzione batch nella pagina dei dettagli dell'esecuzione. Selezionare l'oggetto immagine nella tabella di output per visualizzare in anteprima l'immagine.
Se gli output di esecuzione batch contengono immagini, è possibile controllare il set di dati flow_outputs con il file jsonl di output e le immagini di output.
Consumare l'endpoint online con i dati delle immagini
È possibile distribuire un flusso in un endpoint online per l'inferenza in tempo reale.
La scheda Test nella pagina dei dettagli della distribuzione non supporta input o output di immagini.
Per il momento, è possibile testare l'endpoint inviando una richiesta che include input di immagine.
Per usare l'endpoint online con l'input dell'immagine, rappresentare l'immagine usando il formato {"data:<mime type>;<representation>": "<value>"}. In questo caso, <representation> può essere url o base64.
Se il flusso genera l'output immagine, restituisce il risultato nel formato base64. Ad esempio, {"data:<mime type>;base64": "<base64 string>"}.