다음을 통해 공유


AI: 완료 생성

SQL에 대한 자연어 기능 외에도 Foundry 모델의 Azure OpenAI를 사용하여 전자 메일 및 SMS 메시지를 생성하여 사용자 생산성을 높이고 통신 워크플로를 간소화할 수도 있습니다. 사용자는 Azure OpenAI의 언어 생성 기능을 활용하여 "주문이 5일 지연됨"과 같은 특정 규칙을 정의할 수 있으며, 시스템은 해당 규칙에 따라 상황에 맞는 적절한 이메일 및 SMS 메시지를 자동으로 생성합니다.

이 기능은 사용자가 보내기 전에 쉽게 사용자 지정할 수 있는 신중하게 작성된 메시지 템플릿을 제공하는 점프 스타트 역할을 합니다. 그 결과 메시지를 작성하는 데 필요한 시간과 노력이 크게 감소하여 사용자가 다른 중요한 작업에 집중할 수 있습니다. 또한 Azure OpenAI의 언어 생성 기술을 자동화 워크플로에 통합하여 시스템이 미리 정의된 트리거에 대한 응답으로 메시지를 자율적으로 생성하고 보낼 수 있습니다. 이러한 수준의 자동화는 통신 프로세스를 가속화할 뿐만 아니라 다양한 시나리오에서 일관되고 정확한 메시징을 보장합니다.

이 연습에서 다음을 수행합니다.

  • 다른 프롬프트를 사용하여 실험합니다.
  • 프롬프트를 사용하여 전자 메일 및 SMS 메시지에 대한 완성을 생성합니다.
  • AI 완성을 가능하게 하는 코드를 탐색합니다.
  • 프롬프트 엔지니어링의 중요성과 프롬프트에 규칙을 포함하는 방법에 대해 알아봅니다.

전자 메일 및 SMS 메시지를 생성하는 데 사용할 수 있는 다양한 규칙을 실험해 보겠습니다.

AI 완성 기능 사용

  1. 이전 연습에서는 데이터베이스, API 및 애플리케이션을 시작했습니다. 또한 파일을 업데이트했습니다 .env . 이러한 단계를 완료하지 않은 경우 계속하기 전에 연습의 끝에 있는 지침을 따릅니다.

  2. 브라우저(http://localhost:4200)로 돌아가서 datagrid의 모든 행에서 고객에게 문의 를 선택한 다음 , 이메일/SMS 고객을 선택하여 메시지 생성기 화면으로 이동합니다.

  3. Azure OpenAI를 사용하여 정의한 메시지 규칙을 이메일/SMS 메시지로 변환합니다. 다음 작업을 수행합니다.

    • 입력에 순서가 5일 지연되는 등의 규칙을 입력하고 전자 메일/SMS 메시지 생성 단추를 선택합니다.

      Azure OpenAI 전자 메일/SMS 메시지 생성기.

    • 전자 메일에 대해 생성된 제목과 본문과 SMS에 대해 생성된 짧은 메시지가 표시됩니다.

    비고

    Azure Communication Services는 아직 사용하도록 설정되지 않았으므로 전자 메일 또는 SMS 메시지를 보낼 수 없습니다.

  4. 브라우저에서 전자 메일/SMS 대화 상자를 닫습니다. 이제 이 기능이 작동하는 것을 살펴보았으므로 구현 방법을 살펴보겠습니다.

AI 완성 코드 탐색

팁 (조언)

Visual Studio Code를 사용하는 경우 다음을 선택하여 파일을 직접 열 수 있습니다.

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

그런 다음 열려는 파일의 이름을 입력합니다.

  1. 서버/apiRoutes.ts 파일을 열고 경로를 찾습니다completeEmailSmsMessages. 이 API는 이메일/SMS 메시지 생성 단추를 선택할 때 앱의 프런트 엔드 부분에서 호출됩니다. 본문에서 사용자 프롬프트, 회사 및 연락처 이름 값을 검색하고 completeEmailSMSMessages() 파일의 함수에 전달합니다. 그런 다음 결과가 클라이언트에 반환됩니다.

    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 는 이메일 및 SMS 메시지를 생성할 수 있는 AI 도우미가 필요하도록 정의하는 데 사용됩니다. 여기에는 다음 systemPrompt 이 포함됩니다.
      • 도우미가 메시지의 톤, 시작 및 종료 형식, SMS 메시지의 최대 길이 등을 제어하기 위해 따라야 하는 규칙입니다.
      • 응답에 포함해야 하는 데이터에 대한 정보입니다. 이 경우 JSON 개체입니다.
    • userPrompt 는 최종 사용자가 전자 메일 및 SMS 메시지가 생성될 때 포함하려는 규칙 및 연락처 이름을 정의하는 데 사용됩니다. 이전에 입력한 순서가 5일 지연된 규칙이 포함userPrompt됩니다.
    • 이 함수는 이전에 탐색한 함수를 호출 callOpenAI() 하여 이메일 및 SMS 완성을 생성합니다.
  3. 브라우저로 돌아가서 페이지를 새로 고치고, 전자 메일/SMS 고객이 있는 행에서 고객에게 문의를 선택하여 메시지 생성기 화면으로 다시 이동합니다.

  4. 메시지 생성기 입력에 다음 규칙을 입력합니다.

    • 주문이 일정보다 깁니다.
    • 고객에게 다시는 주문하지 말라고 말하면, 우리는 그들의 사업을 원하지 않습니다.
  5. 이메일/SMS 메시지 생성을 선택하고 메시지를 기록해 둡다. 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. 변경 내용을 systemPromptcompleteEmailSMSMessages()실행 취소하고 파일을 저장한 다음 다시 실행하지만 규칙을 사용합니다 Order is ahead of schedule. (음수 규칙은 포함하지 않음). 이번에는 예상대로 반환된 전자 메일 및 SMS 메시지가 표시됩니다.

  11. 다음 연습으로 넘어가기 전에 고려해야 할 몇 가지 마지막 사항은 다음과 같습니다.

    • 생성된 메시지를 검토하려면 루프에 사람이 있어야 합니다. 이 예제에서 Azure OpenAI 완성은 제안된 전자 메일 및 SMS 메시지를 반환하지만 사용자는 메시지를 보내기 전에 재정의할 수 있습니다. 전자 메일을 자동화하려는 경우 승인된 메시지를 보낼 수 있도록 일부 유형의 사용자 검토 프로세스를 사용하는 것이 중요합니다. AI를 autopilot이 아닌 부조종사로 봅니다.
    • 완료는 프롬프트에 추가하는 규칙만큼만 적합합니다. 시간을 내어 프롬프트 및 반환되는 완료를 테스트합니다. 프롬프트 흐름을 사용하여 AI 애플리케이션의 프로토타입 생성, 실험, 반복 및 배포를 간소화하는 포괄적인 솔루션을 만드는 것이 좋습니다. 다른 프로젝트 관련자를 초대하여 완료도 검토합니다.
    • 예기치 않은 결과가 제대로 처리되도록 하기 위해 사후 처리 코드를 포함해야 할 수 있습니다.
    • 시스템 프롬프트를 사용하여 AI 도우미가 따라야 하는 규칙 및 정보를 정의합니다. 사용자 프롬프트를 사용하여 최종 사용자가 완료에 포함할 규칙 및 정보를 정의합니다.

다음 단계