添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款

多模態大型語言模型 (LLM),可以處理和解譯各種形式的資料輸入,提供強大的工具,可將純語言系統的功能提升到新的高度。 在各種資料類型中,影像對於許多真實世界應用程式都很重要。 將影像資料併入 AI 系統可提供基本的視覺理解層。

在本文章中,您將了解:

  • 如何在提示流程中使用影像資料
  • 如何使用內建 GPT-4V 工具分析影像輸入。
  • 如何建置聊天機器人處理影像和文字輸入。
  • 如何使用影像資料建立批次執行。
  • 如何使用影像資料取用線上端點。
  • 您必須針對這項功能使用 中樞型專案 。 不支援 Azure AI Foundry 專案 。 請參閱 如何知道我所擁有的項目類型? 建立中樞型專案

    提示流程中的影像類型

    提示流程輸入和輸出支援 Image 作為新的資料類型。

    在提示流程製作頁面中使用影像資料:

  • 新增流程輸入,針對資料類型選取 [Image] 。 您可以上傳、拖放影像檔案、從剪貼簿貼上影像,或者指定影像 URL 或流程資料夾中的相對影像路徑。

    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 using a Python function, you need to use the `Image` class that you import from the `promptflow.contracts.multimedia` package. The `Image` class is used to represent an `Image` type within prompt flow. It is designed to work 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, you need to 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.
    
  • 執行 Python 節點並檢查輸出。 在此範例中,Python 函式會傳回已處理的 Image 物件。 選取影像輸出以預覽影像。

    使用 GPT-4V 工具

    Azure OpenAI GPT-4 Turbo with Vision 工具和 OpenAI GPT-4V 均為提示流程中的內建工具,可使用 OpenAI GPT-4V 模型,根據輸入影像回答問題。 您可以在流程製作頁面中選取 [+ 更多工具] 來尋找此工具。

    Azure OpenAI GPT-4 Turbo with Vision 工具新增至流程。 確定您有 Azure OpenAI 連線,並具備 GPT-4 視覺預覽模型的可用性。

    在 GPT-4V 工具中撰寫提示的 Jinja 範本會遵循 LLM 工具中聊天 API 的類似結構。 若要在提示中代表影像輸入,您可以使用語法 ![image]({{INPUT NAME}})。 影像輸入可以在 usersystemassistant 訊息中傳遞。

    撰寫提示之後,選取 [驗證並剖析輸入] 按鈕來剖析輸入預留位置。 ![image]({{INPUT NAME}}) 所代表的影像輸入將剖析為輸入名稱為 INPUT NAME 的影像類型。

    您可以透過下列方式將值指派給影像輸入:

  • 來自 Image 類型流程輸入的參考。
  • 來自 Image 類型其他節點輸出的參考。
  • 上傳、拖曳、貼上影像,或指定影像 URL 或相對影像路徑。
  • 建置聊天機器人以處理影像

    在本節中,您會了解如何建置聊天機器人,以處理影像和文字輸入。

    假設您想要建置聊天機器人,以同時回答任何有關影像和文字的問題。 您可以遵循本節中的步驟來達成此目的。

  • 建立聊天流程

  • [輸入] 中,選取數據類型為 “list”。 在聊天方塊中,使用者可以輸入文字和影像的混合序列,而提示流程服務會將該序列轉換成清單。 在項目檔案中,您應該使用格式:{"data:<mime type>;path": "<image relative path>"} 來參考每個影像檔案。 例如: {"data:image/png;path": "./images/1.png"}

  • 公用影像 URL:您也可以使用下列格式來參考項目檔案中的影像 URL:{"data:<mime type>;url": "<image URL>"}。 例如: {"data:image/png;url": "https://www.example.com/images/1.png"}
  • Base64 字串: 您可以使用下列格式來參考項目檔案中的 Base64 字串: {"data:<mime type>;base64": "<base64 string>"} 。 例如: {"data:image/png;base64": "iVBORw0KGgoAAAANSUhEUgAAAGQAAABLAQMAAAC81rD0AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABlBMVEUAAP7////DYP5JAAAAAWJLR0QB/wIt3gAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB+QIGBcKN7/nP/UAAAASSURBVDjLY2AYBaNgFIwCdAAABBoAAaNglfsAAAAZdEVYdGNvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVDnr0DLAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIwLTA4LTI0VDIzOjEwOjU1KzAzOjAwkHdeuQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMC0wOC0yNFQyMzoxMDo1NSswMzowMOEq5gUAAAAASUVORK5CYII="}

    總之,提示流程會使用唯一的字典格式來表示影像,也就是 {"data:<mime type>;<representation>": "<value>"} 。 在這裡, <mime type> 是指 HTML 標準 MIME 影像類型,並 <representation> 參考支援的影像表示法: path url base64

    建立批次執行

    在流程製作頁面中,選取 [評估] ->[自訂評估] 按鈕以起始批次執行。 在 [批次執行設定] 中,選取資料集,其可以是資料夾 (包含項目檔案和影像檔案) 或檔案 (只包含項目檔案)。 您可以預覽項目檔案並執行輸入對應,以將項目檔案中的資料行與流程輸入對齊。

    目前部署詳細資料頁面中的 [測試] 索引標籤不支援影像輸入或輸出。

    現在,您可以傳送包含影像輸入的要求來測試端點。

    若要使用影像輸入取用線上端點,您應該使用格式 {"data:<mime type>;<representation>": "<value>"} 來代表影像。 在此案例中, <representation> 可以是 url base64

    如果流程產生影像輸出,則會以 base64 格式傳回,例如 {"data:<mime type>;base64": "<base64 string>"}

    使用變體微調提示來逐一查看並最佳化流程