AI時代的網站與手機App建置與開發Part35 - 使用Azure OpenAI的圖片生成功能

 l  摘要

Azure OpenAI支援的圖片生成功能可以用來生成企畫需要使用的海報, LOGO, 文宣或報告用的圖片, 網站使用的圖案, 或是日常生活需要用到的節日祝賀卡片, 既精巧又迅速確實, 短短幾分鐘就可以生出需要的圖片, 相較於人工繪製, 成本更是低廉. 例如輸入以下的內容當做提示:[LABUBU與台北101大樓], 或是[請生成包括企鵝, 駝鹿, 與聖誕老人的聖誕卡片]等等, 都是圖片生成的典型範例.

 

: 使用Azure OpenAI圖片生成功能生成的聖誕卡範例

l  使用Azure OpenAI服務

欲使用Azure OpenAI資源實踐文字生成, 首先要登入Microsoft Azure Portal(網址: https://portal.azure.com), 登入成功後您會看到如圖1的畫面:

1: Microsoft Azure Portal建立資源的畫面

點選圖1中的[建立資源], 螢幕就會出現如圖2的畫面

2: 建立Azure OpenAI資源的畫面

點選圖2畫面左方的[AI應用程式與代理程式], 再點選右邊的[Azure OpenAI], 您將會看到如圖3的畫面:

3: 輸入Azure OpenAI資源的基本資訊

請於圖3畫面建立新的或選擇資源群組或選擇現有的資源群組, 選擇建立群組的區域, 收費層級, 然後點選[下一頁], 您將會看到圖4的畫面:

4: 設定Azure OpenAI資源網路安全性的畫面

請於圖4畫面中選擇[所有網路], 點選[下一頁], 您就會看到設定分類標籤的畫面, 如圖5所示:

5: 設定分類標籤的畫面, 請點選[下一頁]繼續, 您將會看到如圖6的畫面:

6: 建立Azure OpenAI資源的畫面

請點選[建立]鍵執行建立Azure OpenAI資源, 建立完成後請瀏覽至建立妥的Azure

OpenAI資源, 您將會看到如圖7的畫面

7: Azure OpenAI資源管理畫面

點選[探索Azure AI Foundry入口網站], 再點選左邊功能表的[影像]功能, 您將會看到如圖8的畫面:

8: 影像生成功能的體驗館

點選[建立部署]功能, 您會看到如圖9的畫面:

9: 選擇部署影像生成模型的畫面, 請點選左方欲使用的影像生成模型(例如dalle-e-3), 再按下[確認], 螢幕上就會出現影像生成模型的相關使用資料, 如圖10所示:

10: 檢視欲部署的影像生成模型的詳細資料

按下圖10畫面中的[部署到選取的資源]鍵進行部署, 部署完成後就會出現體驗影像生成功能的體驗畫面, 如圖11所示:

11: 體驗影像生成功能的體驗畫面

點選圖11畫面中的[檢視程式碼], 可以看到叫用影像生成功能的範例程式碼, 如圖12所示:

12: 檢視叫用影像生成功能的範例程式碼的畫面. 請點選畫面中的[金鑰認証]頁籤, 在畫面的下方就可以看到叫用影像生成功能的諯點與金鑰, 我們需要這兩個資訊以製作叫用影像生成功的程式:

以下就是使用JavaScript叫用Azure OpenAI影像生成功能的網頁程式

<!DOCTYPE html>

<html>

<head>

  <title>Azure OpenAI Image Example</title>

  <link rel="stylesheet" href="https://cdn.jsdelivr.net/

npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" >

</head>

<body>

    <div class="container" style="width:40%">

      <h3 class="mb-3 text-center">圖片生成</h3>  

      <div class="form-floating mb-3">

        <input id="prompt" class="form-control"

value="LABUBU與台北101大樓" placeholder=""/>

        <label class="form-label">圖片生成提示</label>

      </div>

      <div class="mb-3">

        <button id="generate" class="btn btn-success"

onclick="generateImage()">圖片生成</button>

      </div>

      <div class="mb-3">

        <img id="result" width="512" />      

      </div>

    </div>

  <script>

    const endpoint = "Azure OpenAI的圖片生成功能的端點";

    const deployment = "dall-e-3"; 

    const apiVersion = "2024-04-01-preview";  

    const apiKey = "Azure OpenAI的圖片生成功能金鑰";    

 

    // 叫用Azure OpenAI的圖片生成功能的函式

    async function generateImage() {

      // 取得使用者輸入的提示

const prompt = document.getElementById("prompt").value;  

      // 叫用Azure OpenAI的圖片生成功能

      try {

          const response = await fetch(

          `${endpoint}/openai/deployments/${deployment}/

images/generations?api-version=${apiVersion}`,

          {

            method: "POST",

            headers: {

              "Content-Type": "application/json",

              "api-key": apiKey

            },

            body: JSON.stringify({

              prompt: prompt,

              model:deployment,

              n:1,

              style:"vivid",

              quality:"standard",

            })

          }

        );

        if (response.ok){                           // 如果呼叫成功

          const result = await response.json();     // 取得呼叫結果

          // 顯示Azure OpenAI生成的圖片

document.getElementById("result").src=result.data[0].url;  

        }    

      }

      catch(err) {                // 捕捉呼叫 Azure OpenAI功能的錯誤

        alert(err.message);       // 顯示呼叫 Azure OpenAI功能的錯誤

      }        

    }

  </script>

</body>

</html>

程式碼範例下載網址: https://github.com/CraigIII/AzureOpenAIImageGeneration.git

留言

這個網誌中的熱門文章

AI時代的網站與手機App建置與開發Part27 - ML.NET與物件偵測

AI時代的網站與手機App建置與開發Part24 - ML.NET與圖片異常偵測

AI時代的網站與手機App建置與開發Part28 - 使用YOLO模型進行物件偵測