共用方式為


AI:生成完成項目

除了 SQL 功能的自然語言之外,您也可以在 Foundry 模型中使用 Azure OpenAI 來產生電子郵件和簡訊,以提升用戶生產力並簡化通訊工作流程。 藉由利用 Azure OpenAI 的語言產生功能,使用者可以定義特定規則,例如「訂單延遲 5 天」,系統會根據這些規則自動產生內容適當的電子郵件和簡訊。

這項功能可做為使用者的跳躍起點,為使用者提供精心製作的訊息範本,讓他們在傳送之前可以輕鬆地自定義。 結果是撰寫訊息所需的時間和精力大幅減少,讓用戶能夠專注於其他重要工作。 此外,Azure OpenAI 的語言產生技術可以整合到自動化工作流程中,讓系統能夠自主產生和傳送訊息,以響應預先定義的觸發程式。 這種自動化層級不僅可加速通訊程式,還能確保各種案例的一致且精確的傳訊。

在本練習中,您將會:

  • 試驗不同的提示。
  • 使用提示來產生電子郵件和SMS訊息的完成。
  • 探索可啟用 AI 完成的程式代碼。
  • 瞭解提示工程的重要性,並在提示中包含規則。

讓我們開始試驗可用來產生電子郵件和簡訊的不同規則。

使用 AI 完成功能

  1. 在上一個 練習 中,您已啟動資料庫、API 和應用程式。 您也會更新檔案 .env 。 如果您未完成這些步驟,請遵循練習結尾的指示,再繼續進行。

  2. 返回瀏覽器 (http://localhost:4200) 並選取 datagrid 中任何數據列中的 [連絡客戶 ],然後選取 [ 電子郵件/SMS 客戶 ] 以移至 [訊息產生器 ] 畫面。

  3. 這會使用 Azure OpenAI 將您定義的訊息規則轉換成電子郵件/SMS 訊息。 執行下列工作:

    • 輸入 [訂單] 之類的規則會在輸入中 延遲 5 天 ,然後選取 [ 產生電子郵件/簡訊] 按鈕。

      Azure OpenAI 電子郵件/SMS 訊息產生器。

    • 您會看到針對電子郵件產生的主旨和本文,以及針對SMS產生的簡短訊息。

    備註

    因為尚未啟用 Azure 通訊服務,因此您將無法傳送電子郵件或簡訊。

  4. 關閉瀏覽器中的電子郵件/SMS 對話框視窗。 現在您已瞭解此功能運作情形,讓我們來檢查其實作方式。

探索 AI 完成程式碼

小提示

如果您使用 Visual Studio Code,您可以選取下列專案來直接開啟檔案:

  • Windows/Linux: Ctrl + P
  • Mac: Cmd + P

然後輸入您要開啟的檔案名。

  1. 開啟 伺服器/apiRoutes.ts 檔案並找出 completeEmailSmsMessages 路由。 選取 [ 產生電子郵件/SMS 訊息 ] 按鈕時,應用程式前端部分會呼叫此 API。 它會從本文擷取使用者提示、公司和聯繫人名稱值,並將其傳遞至completeEmailSMSMessages()伺服器/openAI.ts檔案中的函式。 然後,結果會傳回至用戶端。

    router.post('/completeEmailSmsMessages', async (req, res) => {
        const { prompt, company, contactName } = req.body;
    
        if (!prompt || !company || !contactName) {
            return res.status(400).json({ 
                status: false, 
                error: 'The prompt, company, and contactName parameters must be provided.' 
            });
        }
    
        let result;
        try {
            // Call OpenAI to get the email and SMS message completions
        result = await completeEmailSMSMessages(prompt, company, contactName);
        }
        catch (e: unknown) {
            console.error('Error parsing JSON:', e);
        }
    
        res.json(result);
    });
    
  2. 開啟 伺服器/openAI.ts 檔案,並找出 函 completeEmailSMSMessages() 式。

    async function completeEmailSMSMessages(prompt: string, company: string, contactName: string) {
        console.log('Inputs:', prompt, company, contactName);
    
        const systemPrompt = `
        Assistant is a bot designed to help users create email and SMS messages from data and 
        return a JSON object with the email and SMS message information in it.
    
        Rules:
        - Generate a subject line for the email message.
        - Use the User Rules to generate the messages. 
        - All messages should have a friendly tone and never use inappropriate language.
        - SMS messages should be in plain text format and NO MORE than 160 characters. 
        - Start the message with "Hi <Contact Name>,\n\n". Contact Name can be found in the user prompt.
        - Add carriage returns to the email message to make it easier to read. 
        - End with a signature line that says "Sincerely,\nCustomer Service".
        - Return a valid JSON object with the emailSubject, emailBody, and SMS message values in it:
    
        { "emailSubject": "", "emailBody": "", "sms": "" }
    
        - The sms property value should be in plain text format and NO MORE than 160 characters.
        `;
    
        const userPrompt = `
        User Rules: 
        ${prompt}
    
        Contact Name: 
        ${contactName}
        `;
    
        let content: EmailSmsResponse = { status: true, email: '', sms: '', error: '' };
        let results = '';
        try {
            results = await callOpenAI(systemPrompt, userPrompt, 0.5);
            if (results) {
                const parsedResults = JSON.parse(results);
                content = { ...content, ...parsedResults, status: true };
            }
        }
        catch (e) {
            console.log(e);
            content.status = false;
            content.error = results;
        }
    
        return content;
    }
    

    此函式具有下列功能:

    • systemPrompt 用來定義能夠產生電子郵件和簡訊的 AI 助理。 systemPrompt也包括:
      • 助理要遵循的規則,以控制訊息的語氣、開始和結束格式、SMS 訊息的最大長度等等。
      • 應該包含在回應中的數據相關信息 - 在此案例中為 JSON 物件。
    • userPrompt 用來定義使用者想要在產生電子郵件和簡訊時包含的規則和聯繫人名稱。 您稍早輸入 的訂單延遲 5 天 規則會包含在 中 userPrompt
    • 函式會呼叫 callOpenAI() 您稍早探索的函式,以產生電子郵件和簡訊完成。
  3. 返回瀏覽器,重新整理頁面,然後選取任何數據列上的 [連絡客戶 ],然後選取 [ 電子郵件/SMS 客戶 ] 以再次進入 [訊息產生器 ] 畫面。

  4. 訊息產生器 輸入中輸入下列規則:

    • 訂單早於排程。
    • 告知客戶再也不要再訂購,我們不希望他們的業務。
  5. 選取 [產生電子郵件/簡訊] ,並記下訊息。 系統 All messages should have a friendly tone and never use inappropriate language. 提示字元中的規則會覆寫使用者提示中的負規則。

  6. 回到編輯器中的伺服器/openAI.ts*,並從函式中的All messages should have a friendly tone and never use inappropriate language.提示中移除completeEmailSMSMessages()規則。 儲存檔案。

  7. 傳回瀏覽器中的電子郵件/SMS 訊息產生器,然後再次執行相同的規則:

    • 訂單早於排程。
    • 告知客戶再也不要再訂購,我們不希望他們的業務。
  8. 選取 [產生電子郵件/SMS 訊息 ],並注意傳回的訊息。

  9. 這些案例中會發生什麼事? 使用 Azure OpenAI 時,可以套用 內容篩選 ,以確保一律使用適當的語言。 如果您使用 OpenAI,系統會使用系統提示字元中定義的規則,以確保傳回的訊息是適當的。

    備註

    這說明使用正確的資訊和規則來設計提示的重要性,以確保傳回適當的結果。 如需此程式的詳細資訊,請參閱 提示工程文件的簡介

  10. 復原您在 中systemPrompt所做的completeEmailSMSMessages()變更、儲存盤案,然後再次重新執行,但只使用Order is ahead of schedule.規則(不包含負規則)。 這次您應該會看到如預期傳回的電子郵件和簡訊。

  11. 在繼續進行下一個練習之前,需要考慮幾個最後幾點:

    • 請務必讓迴圈中的人員檢閱產生的訊息。 在此範例中,Azure OpenAI 完成會傳回建議的電子郵件和簡訊,但用戶可以在傳送之前覆寫這些訊息。 如果您打算將電子郵件自動化,請執行某種類型的人工檢閱程式,以確保已核准的郵件已送出很重要。 將 AI 視為警戒,而不是 Autopilot。
    • 完成只會和您在提示中新增的規則一樣好。 花點時間測試提示和傳回的完成。 請考慮使用 提示流程 來建立完整的解決方案,以簡化原型設計、實驗、反覆運算和部署 AI 應用程式。 邀請其他項目項目關係人檢閱完成專案。
    • 您可能需要包含後置處理程序代碼,以確保正確處理非預期的結果。
    • 使用系統提示來定義 AI 助理應遵循的規則和資訊。 使用使用者提示來定義使用者想要包含在完成中的規則和資訊。

後續步驟