편집

다음을 통해 공유


대화 요약

Azure AI 서비스

대부분의 기업은 고객 서비스 지원을 제공하여 고객이 제품 쿼리, 문제 해결 및 기본 기능 또는 제품 자체를 확인하거나 업그레이드할 수 있도록 지원합니다. 만족스러운 해결 방법을 제공하려면 고객 지원 전문가가 정확한 정보로 신속하게 응답해야 합니다. OpenAI는 다양한 방법으로 고객 지원을 통해 조직을 지원할 수 있습니다.

이 가이드에서는 Azure OpenAI GPT-3 모델을 사용하여 고객-에이전트 상호 작용에 대한 요약을 생성하는 방법을 설명합니다. 여기에는 텍스트 입력 요약을 가져오는 데 관련된 주요 구성 요소를 보여 주는 엔드 투 엔드 샘플 아키텍처가 포함되어 있습니다. 텍스트 입력 생성이 이 가이드의 범위를 벗어납니다. 이 가이드의 초점은 샘플 에이전트-고객 대화 집합의 요약을 구현하는 프로세스를 설명하고 요약에 대한 다양한 접근 방식의 결과를 분석하는 것입니다.

대화 시나리오

  • 셀프 서비스 챗봇 (완전 자동화). 이 시나리오에서 고객은 GPT-3으로 구동되고 산업별 데이터에 대해 학습된 챗봇과 상호 작용할 수 있습니다. 챗봇은 고객 질문을 이해하고 기술 자료 배운 응답에 따라 적절하게 답변할 수 있습니다.
  • 에이전트 개입 이 있는 챗봇(반자동). 고객이 제기하는 질문은 때로는 복잡하고 인간의 개입이 필요합니다. 이러한 경우 GPT-3은 고객-챗봇 대화의 요약을 제공하고 에이전트가 대규모 기술 자료 추가 정보를 빠르게 검색할 수 있도록 도와줍니다.
  • 기록 요약(완전 자동화 또는 반자동). 대부분의 고객 지원 센터에서 에이전트는 기록 보관, 향후 후속 작업, 교육 및 기타 내부 프로세스를 위해 대화를 요약해야 합니다. GPT-3은 추가 사용을 위해 대화의 중요한 세부 정보를 캡처하는 자동화된 또는 반자동 요약을 제공할 수 있습니다.

이 가이드에서는 Azure OpenAI GPT-3을 사용하여 기록을 요약하는 프로세스에 중점을 둡니다.

평균적으로 단일 에이전트-고객 대화를 요약하는 데 5~6분이 걸립니다. 서비스 팀이 특정 날짜에 처리하는 요청의 양이 많으면 이 추가 작업이 팀에 과부하가 발생할 수 있습니다. OpenAI는 요약 관련 활동을 사용하는 에이전트를 돕는 좋은 방법입니다. 고객 지원 프로세스의 효율성을 향상시키고 정밀도를 향상시킬 수 있습니다. 대화 요약은 에이전트-고객 상호 작용을 포함하는 모든 고객 지원 작업에 적용할 수 있습니다.

대화 요약 서비스

대화 요약은 고객 지원 대화가 질문 및 답변 형식을 따르는 시나리오에 적합합니다.

요약 서비스를 사용할 경우의 몇 가지 이점은 다음과 같습니다.

  • 효율성 향상: 고객 서비스 에이전트가 고객 대화를 빠르게 요약하여 긴 앞뒤로 교환할 필요가 없도록 합니다. 이러한 효율성은 고객 문제 해결 속도를 높이는 데 도움이 됩니다.
  • 향상된 고객 서비스: 에이전트는 향후 상호 작용에서 대화 요약을 사용하여 고객 문제를 정확하게 해결하는 데 필요한 정보를 신속하게 찾을 수 있습니다.
  • 향상된 지식 공유: 대화 요약은 고객 서비스 팀이 서로 빠르고 효과적으로 지식을 공유하는 데 도움이 될 수 있습니다. 고객 서비스 팀에 더 나은 해상도를 제공하고 더 빠른 지원을 제공하는 데 도움이 됩니다.

아키텍처

대화 요약 작성기에 대한 일반적인 아키텍처에는 사전 처리, 요약 및 후처리의 세 가지 기본 단계가 있습니다. 입력에 구두 대화 또는 어떤 형태의 음성이 포함된 경우 음성을 텍스트로 전사해야 합니다. 자세한 내용은 Azure 음성 텍스트 변환 서비스를 참조 하세요.

샘플 아키텍처는 다음과 같습니다.

대화 요약을 위한 아키텍처를 보여 주는 다이어그램

이 아키텍처의 PowerPoint 파일을 다운로드합니다.

워크플로

  1. 입력 데이터 수집: 관련 입력 데이터를 파이프라인에 공급합니다. 원본이 오디오 파일인 경우 Azure 텍스트 음성 변환과 같은 TTS(텍스트 음성 변환) 서비스를 사용하여 텍스트로 변환해야 합니다.
  2. 데이터 사전 처리: 데이터에서 기밀 정보 및 중요하지 않은 대화를 제거합니다.
  3. 요약 작성기에 데이터 피드: Azure OpenAI API를 통해 프롬프트에 데이터를 전달합니다. 컨텍스트 내 학습 모델에는 제로샷, 몇 샷 또는 사용자 지정 모델이 포함됩니다.
  4. 요약 생성: 모델은 대화의 요약을 생성합니다.
  5. 데이터 사후 처리: 욕설 필터 및 다양한 유효성 검사 검사 요약에 적용합니다. 사전 프로세스 단계에서 제거된 중요한 또는 기밀 데이터를 요약에 다시 추가합니다.
  6. 결과 평가: 결과를 검토하고 평가합니다. 이 단계는 모델을 개선해야 하는 영역을 식별하고 오류를 찾는 데 도움이 될 수 있습니다.

다음 섹션에서는 세 가지 기본 단계에 대해 자세히 설명합니다.

사전 처리

사전 처리의 목표는 요약 도우미 서비스에 제공된 데이터가 관련성이 있고 중요한 정보나 기밀 정보를 포함하지 않도록 하는 것입니다.

다음은 원시 데이터를 조건화할 수 있는 몇 가지 사전 처리 단계입니다. 사용 사례에 따라 하나 이상의 단계를 적용해야 할 수 있습니다.

  • PII(개인 식별 정보)를 제거합니다. 대화형 PII API(미리 보기)를 사용하여 전사되거나 작성된 텍스트에서 PII를 제거할 수 있습니다. 이 예제에서는 API가 PII를 제거한 후의 출력을 보여줍니다.

    Document text: Parker Doe has repaid all of their loans as of
          2020-04-25. Their SSN is 999-99-9999. To contact them, use 
          their phone number 555-555-0100. They are originally from 
          Brazil and have Brazilian CPF number 998.214.865-68 
    Redacted document text: ******* has repaid all of their
          loans as of *******. Their SSN is *******. To contact 
          them, use their phone number *******. They are originally from Brazil and have Brazilian CPF number 998.214.865-68
    
    ...Entity 'Parker Doe' with category 'Person' got redacted
    ...Entity '2020-04-25' with category 'DateTime' got redacted
    ...Entity '999-99-9999' with category 'USSocialSecurityNumber' got redacted
    ...Entity '555-555-0100' with category 'PhoneNumber' got redacted
    
  • 불필요한 정보를 제거합니다. 고객 에이전트는 관련 정보를 포함하지 않는 일반 교환과 대화를 시작합니다. 트리거를 대화에 추가하여 우려 사항 또는 관련 질문이 먼저 해결되는 지점을 식별할 수 있습니다. 컨텍스트에서 해당 교환을 제거하면 모델이 대화에서 가장 관련성이 높은 정보에 대해 미세 조정되므로 요약 도우미 서비스의 정확도가 향상될 수 있습니다. Curie GPT-3 엔진은 인터넷의 콘텐츠를 통해 이러한 유형의 캐주얼 대화를 식별하기 위해 광범위하게 학습되기 때문에 이 작업에 인기 있는 선택입니다.

  • 지나치게 부정적인 대화를 제거합니다. 대화에는 불행한 고객의 부정적인 감정도 포함될 수 있습니다. Azure Content Moderator와 같은 Azure 콘텐츠 필터링 방법을 사용하여 분석에서 중요한 정보가 포함된 대화를 제거할 수 있습니다. 또는 OpenAI는 콘텐츠가 OpenAI의 콘텐츠 정책을 준수하는지 여부를 검사 데 사용할 수 있는 조정 엔드포인트를 제공합니다.

요약 작성기

OpenAI의 텍스트 완성 API 엔드포인트를 완성 엔드포인트라고 합니다. 텍스트 완성 프로세스를 시작하려면 프롬프트가 필요합니다. 프롬프트 엔지니어링 은 언어 모델을 사용하는 데 사용되는 프로세스입니다. 프롬프트의 첫 번째 부분에는 자연어 지침 또는 요청된 특정 작업의 예가 포함됩니다(이 시나리오에서는 요약). 프롬프트를 사용하면 개발자가 API에 몇 가지 컨텍스트를 제공할 수 있으므로 보다 관련성이 높고 정확한 텍스트 완성을 생성할 수 있습니다. 그런 다음, 모델은 가장 가능성이 큰 다음 텍스트를 예측하여 작업을 완료합니다. 이 기술을 컨텍스트 내 학습이라고 합니다.

참고 항목

추출 요약은 텍스트에서 눈에 띄는 정보를 식별하고 추출하고 그룹화 하여 의미나 컨텍스트를 이해하지 않고 간결한 요약을 생성하려고 시도합니다.

추상적 요약 은 먼저 내부 의미 체계 표현을 만든 다음 자연어 처리를 사용하여 요약을 만들어 텍스트를 다시 작성합니다. 이 프로세스에는 의역이 포함됩니다.

상황에 맞는 학습을 위한 모델을 학습하는 세 가지 기본 방법이 있습니다. 즉, 제로샷, 몇 샷 및 미세 조정입니다. 이러한 접근 방식은 모델에 제공되는 작업별 데이터의 양에 따라 달라집니다.

  • 제로샷: 이 접근 방식에서는 모델에 예제가 제공되지 않습니다. 작업 요청이 유일한 입력입니다. 제로 샷 학습에서 모델은 GPT-3이 이미 학습된 데이터(인터넷에서 사용 가능한 거의 모든 데이터)를 사용합니다. 지정된 작업을 이미 학습하고 그에 따라 응답한 기존 범주와 연결하려고 시도합니다.

  • 몇 번의 실행: 이 방법을 사용하는 경우 프롬프트에 예상되는 응답 형식과 컨텍스트를 보여 주는 소수의 예제가 포함됩니다. 모델은 예측을 안내하기 위해 매우 적은 양의 학습 데이터(일반적으로 몇 가지 예)를 제공합니다. 작은 예제 집합을 사용하여 학습하면 모델이 관련 작업을 일반화하고 이해할 수 있지만 이전에는 볼 수 없었던 작업을 이해할 수 있습니다. 이러한 몇 번의 예제를 만드는 것은 모델에서 수행할 작업을 명확히 해야 하기 때문에 어려울 수 있습니다. 일반적으로 관찰되는 문제 중 하나는 모델, 특히 작은 모델이 학습 예제에 사용되는 쓰기 스타일에 민감하다는 것입니다.

    이 방법의 기본 장점은 작업별 데이터의 필요성이 크게 감소하고 크지만 좁은 미세 조정 데이터 세트에서 지나치게 좁은 분포를 학습할 수 있는 가능성을 줄인 것입니다.

    이 방법을 사용하면 미리 학습된 모델의 가중치를 업데이트할 수 없습니다.

    자세한 내용은 언어 모델이 몇 명의 학습자인 경우를 참조 하세요.

  • 미세 조정: 미세 조정은 사용자 고유의 데이터 세트로부터 원하는 특정 결과를 얻기 위해 모델을 조정하는 프로세스입니다. 여기에는 새 데이터에 대한 모델 재학습이 포함됩니다. 자세한 내용은 애플리케이션에 맞게 모델을 사용자 지정하는 방법 알아보기를 참조하세요.

    다음을 통해 이 사용자 지정 단계를 사용하여 프로세스를 개선할 수 있습니다.

    • 더 큰 예제 데이터 집합을 포함합니다.
    • 백프로포지션과 함께 기존의 최적화 기술을 사용하여 모델의 가중치를 다시 조정합니다. 이러한 기술은 자체에서 제공하는 제로 샷 또는 몇 샷 접근 방식보다 더 높은 품질의 결과를 가능하게합니다.
    • 특정 프롬프트 및 특정 구조를 사용하여 모델 가중치를 학습시켜 몇 샷 학습 접근 방식을 개선합니다. 이 기술을 사용하면 프롬프트에 예제를 제공할 필요 없이 더 많은 수의 작업에서 더 나은 결과를 얻을 수 있습니다. 그 결과 전송된 텍스트가 줄어들고 토큰이 줄어듭니다.

    단점으로는 모든 작업에 대한 대규모 새 데이터 세트의 필요성, 배포에서 일반화가 저하될 가능성, 학습 데이터의 가짜 기능을 악용하여 인간의 성능과 불공정한 비교 가능성이 높아질 가능성이 있습니다.

    모델 사용자 지정을 위한 데이터 세트를 만드는 것은 다른 모델에서 사용할 프롬프트를 디자인하는 경우와 다릅니다. 완료 호출에 대한 프롬프트는 종종 자세한 지침 또는 몇 번의 학습 기술을 사용하며 여러 예제로 구성됩니다. 미세 조정의 경우 각 학습 예제는 단일 입력 예제와 원하는 출력으로 구성되는 것이 좋습니다. 프롬프트에 자세한 지침이나 예제를 제공할 필요가 없습니다.

    학습 예제 수를 늘리면 결과가 향상됩니다. 500개 이상의 예제를 포함하는 것이 좋습니다. 일반적으로 수천에서 수십만 개의 레이블이 지정된 예제를 사용합니다. 테스트는 데이터 세트 크기를 두 배로 늘리면 모델 품질이 선형으로 증가한다는 것을 나타냅니다.

이 가이드에서는 curie-instruct/text-curie-001 및 davinci-instruct/text-davinci-001 엔진을 보여 줍니다. 이러한 엔진은 자주 업데이트됩니다. 사용하는 버전이 다를 수 있습니다.

사후 처리

GPT-3에서 가져오는 결과의 유효성을 검사 것이 좋습니다. 사용 사례에 따라 프로그래밍 방식 또는 분류자를 사용하여 유효성 검사 구현합니다. 몇 가지 중요한 검사 다음과 같습니다.

  • 중요한 지점을 놓치지 않는지 확인합니다.
  • 사실의 부정확성을 확인합니다.
  • 모델에 사용되는 학습 데이터에 의해 도입된 편견을 확인합니다.
  • 모델이 새 아이디어 또는 포인트를 추가하여 텍스트를 변경하지 않는지 확인합니다. 이 문제를 환각이라고 합니다.
  • 문법 및 맞춤법 오류를 확인합니다.
  • Content Moderator와 같은 콘텐츠 욕설 필터를 사용하여 부적절하거나 관련이 없는 콘텐츠가 포함되지 않도록 합니다.

마지막으로, 이전에 요약에서 제거된 중요한 정보(예: 기밀 정보)를 다시 도입합니다.

경우에 따라 대화 요약이 원래 대화 내용과 함께 고객에게 전송됩니다. 이러한 경우 사후 처리에는 요약에 대본을 추가하는 작업이 포함됩니다. "아래 요약을 참조하세요"와 같은 리드 인 문장을 추가하는 것도 포함될 수 있습니다.

고려 사항

업계별 학습 데이터 세트를 사용하여 기본 모델을 미세 조정하고 사용 가능한 데이터 세트의 크기를 변경하는 것이 중요합니다. 미세 조정된 모델은 학습 데이터에 1,000개 이상의 데이터 요소가 포함되고 모델을 학습하는 데 사용되는 지상 진리(사람이 생성한 요약)가 고품질인 경우 가장 잘 수행됩니다.

절충은 비용입니다. 데이터 세트에 레이블을 지정하고 클린 프로세스는 비용이 많이 들 수 있습니다. 고품질 학습 데이터를 보장하려면 지상 진리 요약을 수동으로 검사하고 저품질 요약을 다시 작성해야 할 수 있습니다. 요약 단계에 대해 다음 사항을 고려합니다.

  • 프롬프트 엔지니어링: 명령이 거의 없는 경우 Davinci는 다른 모델보다 성능이 더 좋은 경우가 많습니다. 결과를 최적화하려면 다양한 모델에 대한 다양한 프롬프트를 사용하여 실험합니다.
  • 토큰 크기: GPT-3을 기반으로 하는 요약 도우미는 프롬프트 및 완료를 포함하여 총 4,098개의 토큰으로 제한됩니다. 더 큰 구절을 요약하려면 텍스트를 이러한 제약 조건을 준수하는 부분으로 구분합니다. 각 파트를 개별적으로 요약한 다음 최종 요약에서 결과를 수집합니다.
  • 가비지 인, 가비지 아웃: 학습된 모델은 사용자가 제공하는 학습 데이터만큼만 좋습니다. 학습 데이터의 기본 진리 요약이 대화 상자에서 요약하려는 정보에 적합해야 합니다.
  • 중지 지점: 모델이 제공하는 자연 중지 지점 또는 중지 시퀀스에 도달하면 요약을 중지합니다. 이 매개 변수를 테스트하여 여러 요약 중에서 선택하고 요약이 불완전해 보이는지 검사.

예제 시나리오: 콜 센터에서 기록 요약

이 시나리오에서는 Azure OpenAI 요약 기능을 통해 고객 서비스 에이전트가 요약 작업을 수행하는 데 어떻게 도움이 되는지 보여 줍니다. 제로샷, 몇 샷 및 미세 조정 방법을 테스트하고 결과를 사람이 생성한 요약과 비교합니다.

이 시나리오에서 사용되는 데이터 세트는 다양한 Xbox 제품 및 서비스에 대한 Xbox 고객 지원 센터의 고객과 에이전트 간의 가상 대화 집합입니다. 가상 채팅은 프롬프트레이블이 지정됩니다. 사람이 작성한 추상적 요약은 완료로 레이블이 지정됩니다.

프롬프트 Completion
고객: XAIL에 대한 질문

에이전트: 안녕하세요! 오늘 어떻게 도와드리나요?

고객: 안녕하세요, 접근성 참가자 링에 대한 질문이 있습니다.

에이전트: 좋아. 나는 확실히 당신을 도울 수 있습니다.

고객: 접근성 리그에 참가하려면 미리 보기 링에 등록해야 하나요?

에이전트: 아니요. Xbox Preview 링에서 본체를 나가고 리그에 참가할 수 있습니다. 그러나 사용할 수 있는 일부 환경은 Xbox Preview 링에 가입해야 할 수 있습니다.

고객: 좋아. 그리고 난 그냥 나중에 예 미리 보기 링에 가입 할 수 있습니다?

에이전트: 맞습니다.

고객: 달콤합니다.
고객은 Xbox 접근성 참가자 리그에 참가하기 위해 미리 보기 링에 등록해야 하는지 여부를 알고 싶어 합니다. 에이전트는 필수는 아니지만 일부 환경에서 필요할 수 있다고 응답합니다.

이상적인 출력입니다. 목표는 다음 형식을 따르는 요약을 만드는 것입니다. 에이전트가 y"라고 응답했습니다. 또 다른 목표는 고객 불만, 제안된 해결 방법 및 후속 작업과 같은 대화 상자의 눈에 띄는 기능을 캡처하는 것입니다.

다음은 고객 지원 상호 작용의 예이며, 그 다음에는 포괄적인 사람이 작성한 요약이 있습니다.

대화 상자

고객: 안녕하세요. 나는 게임 패스에 대한 질문이 있습니다.

에이전트: 안녕하세요. 오늘 어떻게 하고 있나요?

고객 : 나는 좋다.

에이전트. Xbox 게임 패스에 대한 도움이 필요한 것을 볼 수 있습니다.

고객: 예. 나는 그들이 게임 패스를 떠난 후 게임에 액세스 할 수있는 기간을 알고 싶었다.

에이전트: 게임이 Xbox Game Pass 카탈로그를 벗어나면 Windows 또는 Microsoft Store용 Xbox 앱 디지털 복사본을 구입하거나, 디스크에서 재생하거나, 게임을 계속 플레이하려면 다른 형태의 자격을 얻어야 합니다. Xbox는 게임 종료 전에 Xbox 게임 패스 카탈로그를 종료하기 전에 구성원에게 알립니다. 그리고 회원으로서 카탈로그에서 게임을 최대 20% 할인(또는 사용 가능한 가장 할인된 가격)으로 구매하여 카탈로그를 떠난 후 게임을 계속 플레이할 수 있습니다.

고객 : 그것을 가지고, 감사합니다

지상 진실 요약

고객은 Game Pass를 떠난 후 게임에 액세스할 수 있는 기간을 알고 싶어 합니다. 에이전트는 계속 액세스하려면 게임을 구매해야 한다고 고객에게 알릴 수 있습니다.

Zero-shot

제로샷 접근 방식은 충분한 레이블이 지정된 학습 데이터가 없는 경우에 유용합니다. 이 경우 근거 요약이 충분하지 않습니다. 관련 정보를 추출하려면 프롬프트를 신중하게 디자인하는 것이 중요합니다. 다음 형식은 고객 에이전트 채팅에서 일반 요약을 추출하는 데 사용됩니다.

prefix = "Please provide a summary of the conversation below: "

suffix = "The summary is as follows: "

다음은 제로샷 모델을 실행하는 방법을 보여 주는 샘플입니다.

rouge = Rouge()
# Run zero-shot prediction for all engines of interest
deploymentNames = ["curie-instruct","davinci-instruct"] # also known as text-davinci/text-instruct
for deployment in deploymentNames:
url = openai.api_base + "openai/deployments/" + deployment + "/completions?api-version=2022-12-01-preivew"
response_list = []
rouge_list = []
print("calling..." + deployment)
for i in range(len(test)):
response_i = openai.Completion.create(
engine = deployment,
prompt = build_prompt(prefix, [test['prompt'][i]], suffix),
temperature = 0.0,
max_tokens = 400,
top_p = 1.0,
frequence_penalty = 0.5,
persence_penalty = 0.0,
stop=["end"] # We recommend that you adjust the stop sequence based on the dataset
)
scores = rouge.get_scores(normalize_text(response_i['choices'][ 0]['text']),test['completion'][i])
rouge_list += [scores[0]['rouge-1']['f']],
response_list += [response_i]
summary_list = [normalize_text(i['choices'][0]['text']) for i in response_list]
test[deployment + "_zeroshotsummary"] = summary_list
test[deployment + "_zeroshotroguescore"] = rouge_list

결과 및 관찰

제로샷 모델의 출력은 기본 모델에서 직접 생성됩니다. 이 경우 Curie와 Davinci 모두 대화 상자를 상당히 잘 요약합니다. 유일한 눈에 띄는 차이점은 Curie 모델이 조금 덜 세부 사항을 제공한다는 것입니다. Curie는 "고객이 에이전트에게 Xbox 게임 패스에 대해 묻습니다."로 요약을 시작합니다. Davinci의 해당 문장은 "고객이 Xbox 게임 패스 카탈로그를 떠난 후 게임에 얼마나 오래 액세스할 수 있는지 물었습니다."

대화 상자

고객: 안녕하세요. 나는 게임 패스에 대한 질문이 있습니다.

에이전트: 안녕하세요. 어떻게 지내니?

고객 : 나는 좋다.

에이전트: Xbox 게임 패스에 대한 도움이 필요한 것으로 확인되었습니다.

고객: 예. 나는 그들이 게임 패스를 떠난 후 게임에 액세스 할 수있는 기간을 알고 싶었다.

에이전트: 게임이 Xbox 게임 패스 카탈로그를 벗어나면 Windows 또는 Microsoft Store용 Xbox 앱 디지털 복사본을 구입하거나, 디스크에서 재생하거나, 게임을 계속 플레이하려면 다른 형태의 자격을 얻어야 합니다. Xbox는 게임 종료 전에 Xbox 게임 패스 카탈로그를 종료하기 전에 구성원에게 알립니다. 그리고 회원으로서 카탈로그에서 게임을 최대 20% 할인된 가격으로 구매하거나 카탈로그를 종료한 후 게임을 계속 플레이하기 위해 가장 저렴한 가격으로 구매할 수 있습니다.

지상 진실

고객은 Game Pass를 떠난 후 게임에 액세스할 수 있는 기간을 알고 싶어 합니다. 에이전트는 계속 액세스하려면 게임을 구매해야 한다고 고객에게 알릴 수 있습니다.

다빈치 결과

고객은 Xbox 게임 패스 카탈로그를 떠난 후 게임에 얼마나 오래 액세스할 수 있는지 물었습니다. 에이전트는 게임을 계속하기 위해 windows 또는 Microsoft 스토어용 Xbox 앱 게임의 디지털 복사본을 구입해야 한다고 말했습니다. 또한 에이전트는 Xbox 게임 패스 카탈로그를 종료하기 전에 고객에게 알림을 받을 것임을 상기시켰습니다. 회원으로서 고객은 카탈로그의 모든 게임을 최대 20개 할인된 가격으로 구매할 수 있습니다.

Curie 결과

고객은 에이전트에게 Xbox 게임 패스에 대해 묻습니다. 에이전트는 게임이 Xbox 게임 패스 카탈로그를 벗어나면 고객이 디스크에서 창 또는 Microsoft 스토어 플레이용 Xbox 앱 디지털 복사본을 구입하거나 게임을 계속 플레이하기 위해 다른 형태의 자격을 얻어야 한다고 고객에게 알릴 수 있습니다. 또한 에이전트는 Xbox 게임 패스 카탈로그를 종료하기 전에 Xbox가 구성원에게 알릴 것임을 고객에게 알립니다.

Few-shot

몇 가지 방법을 사용하면 모델에 적은 수의 예제가 제공됩니다.

context_primer = "Below are examples of conversations and their corresponding summaries:"

prefix = "Please provide a summary of the conversation below: "

suffix = "The summary is as follows: "

다음은 몇 샷 모델을 실행하는 방법을 보여 주는 샘플입니다.

train_small = train[]
train_small_json = train_small.to_dict(orient='records')
compiled_train_prompt = build_prompt_fewshot(prefix,context_primer, train_small_json, suffix)

for deployment in deploymentNames:
url = openai.api_base + "openai/deployments/" + deployment + "/completions?api-version=2022-12-01-preivew"
response_list = []
rouge_list = []
print("calling..." + deployment)
for i in range(len(test)):
response_i = openai.Completion.create(
engine = deployment,
prompt = compiled_train_prompt+build_prompt(prefix, [test['prompt'][i]], suffix),
temperature = 0.0,
max_tokens = 400,
top_p = 1.0,
frequence_penalty = 0.5,
persence_penalty = 0.0,
stop=["end"] # We recommend that you adjust the stop sequence based on the dataset
)
scores = rouge.get_scores(normalize_text(response_i['choices'][ 0]['text']),test['completion'][i])
rouge_list += [scores[0]['rouge-1']['f']],
response_list += [response_i]
summary_list = [normalize_text(i['choices'][0]['text']) for i in response_list]
test[deployment + "_fewshot"] = summary_list
test[deployment + "_FSscore1"] = rouge_list

결과 및 관찰

몇 가지 방법을 사용하면 요약이 대화의 눈에 띄는 기능을 계속 캡처합니다. 다빈치 요약은 더 간결하고 지상 진실에 더 가깝습니다. Curie는 몇 가지 사소한 세부 사항을 제작합니다.

대화 상자

고객: 안녕하세요. 나는 게임 패스에 대한 질문이 있습니다.

에이전트: 안녕하세요. 어떻게 지내니?

고객 : 나는 좋다.

에이전트: Xbox 게임 패스에 대한 도움이 필요한 것으로 확인되었습니다.

고객: 예. 나는 그들이 게임 패스를 떠난 후 게임에 액세스 할 수있는 기간을 알고 싶었다.

에이전트: 게임이 Xbox Game Pass 카탈로그를 벗어나면 Windows 또는 Microsoft Store용 Xbox 앱 디지털 복사본을 구입하거나, 디스크에서 재생하거나, 게임을 계속 플레이하려면 다른 형태의 자격을 얻어야 합니다. Xbox는 게임 종료 전에 Xbox 게임 패스 카탈로그를 종료하기 전에 구성원에게 알립니다. 그리고 회원으로서 카탈로그에서 게임을 최대 20% 할인된 가격으로 구매하거나 카탈로그를 종료한 후 게임을 계속 플레이하기 위해 가장 저렴한 가격으로 구매할 수 있습니다.

지상 진실

고객은 Game Pass를 떠난 후 게임에 액세스할 수 있는 기간을 알고 싶어 합니다. 에이전트는 계속 액세스하려면 게임을 구매해야 한다고 고객에게 알릴 수 있습니다.

다빈치 결과

고객은 게임 패스를 종료한 후 게임에 액세스할 수 있는 기간을 알고 싶었습니다. 에이전트는 게임이 Xbox 게임 패스 카탈로그를 벗어나면 고객이 디지털 복사본을 구입하거나 게임을 계속 플레이하기 위해 다른 형태의 자격을 얻어야 한다고 알릴 수 있습니다.

Curie 결과

고객에게 게임 패스에 대한 질문이 있습니다. 고객이 좋습니다. 에이전트는 Xbox 게임 패스에 대한 도움이 필요합니다. 고객은 게임 패스 카탈로그를 종료한 후 게임에 얼마나 오래 액세스할 수 있는지 묻습니다. 에이전트는 게임이 Xbox 게임 패스 카탈로그를 벗어나면 고객이 창용 Xbox 앱 디지털 복사본을 구매하거나 디스크에서 Microsoft 스토어 플레이를 하거나 게임을 계속 플레이하기 위해 다른 형태의 자격을 얻어야 한다고 알릴 수 있습니다. 고객은 이것을 듣고 기쁘게 생각하고 에이전트에게 감사드립니다.

미세 조정

미세 조정 은 사용자 고유의 데이터 세트로부터 원하는 특정 결과를 얻기 위해 모델을 조정하는 프로세스입니다.

예제 형식은 다음과 같습니다.

{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}

결과 및 관찰

테스트를 통해 미세 조정된 Curie 모델이 Davinci 몇 샷 모델과 비슷한 결과를 초래한다는 것을 알 수 있습니다. 두 요약 모두 할인에 대한 세부 정보를 캡처하지 않고 콘텐츠를 추가하지 않고 고객의 질문과 에이전트의 답변을 캡처합니다. 두 요약은 모두 지상 진실과 유사합니다.

대화 상자

고객: 안녕하세요. 나는 게임 패스에 대한 질문이 있습니다.

에이전트: 안녕하세요. 어떻게 지내니?

고객 : 나는 좋다.

에이전트: Xbox 게임 패스에 대한 도움이 필요한 것으로 확인되었습니다.

고객: 예. 나는 그들이 게임 패스를 떠난 후 게임에 액세스 할 수있는 기간을 알고 싶었다.

에이전트: 게임이 Xbox Game Pass 카탈로그를 벗어나면 Windows 또는 Microsoft Store용 Xbox 앱 디지털 복사본을 구입하거나, 디스크에서 재생하거나, 게임을 계속 플레이하려면 다른 형태의 자격을 얻어야 합니다. Xbox는 게임 종료 전에 Xbox 게임 패스 카탈로그를 종료하기 전에 구성원에게 알립니다. 그리고 회원으로서 카탈로그에서 게임을 최대 20% 할인된 가격으로 구매하거나 카탈로그를 종료한 후 게임을 계속 플레이하기 위해 가장 저렴한 가격으로 구매할 수 있습니다.

지상 진실

고객은 Game Pass를 떠난 후 게임에 액세스할 수 있는 기간을 알고 싶어 합니다. 에이전트는 계속 액세스하려면 게임을 구매해야 한다고 고객에게 알릴 수 있습니다.

Curie 결과

고객은 게임 패스를 종료한 후 게임에 얼마나 오래 액세스할 수 있는지 알고 싶어 합니다. 에이전트는 게임이 Xbox 게임 패스 카탈로그를 떠나면 창용 Xbox 앱 디지털 복사본을 구입하거나 디스크에서 Microsoft 스토어 플레이를 하거나 게임을 계속 플레이하려면 다른 형태의 자격을 얻어야 한다고 설명합니다.

결론

일반적으로 Davinci 모델에는 Curie와 같은 다른 모델보다 작업을 수행하는 데 필요한 지침이 더 적습니다. Davinci는 컨텍스트 또는 특정 언어를 이해해야 하는 텍스트를 요약하는 데 더 적합합니다. Davinci는 가장 복잡한 모델이므로 대기 시간이 다른 모델보다 높습니다. 퀴리는 다빈치보다 빠르며 대화를 요약할 수 있습니다.

이러한 테스트는 몇 번의 실행 또는 미세 조정을 통해 모델에 더 많은 지침을 제공할 때 더 나은 요약을 생성할 수 있음을 시사합니다. 미세 조정된 모델은 학습 데이터 세트에서 학습된 구조 및 컨텍스트를 준수하는 데 더 적합합니다. 이 기능은 요약이 수행되는 경우 특히 유용합니다기본 특정(예: 의사의 노트 또는 온라인 처방 고객 지원에서 요약 생성). 미세 조정을 사용하는 경우 표시되는 요약 유형을 더 잘 제어할 수 있습니다.

간편한 비교를 위해 앞에서 제시한 결과에 대한 요약은 다음과 같습니다.

지상 진실

고객은 Game Pass를 떠난 후 게임에 액세스할 수 있는 기간을 알고 싶어 합니다. 에이전트는 계속 액세스하려면 게임을 구매해야 한다고 고객에게 알릴 수 있습니다.

다빈치 제로샷 결과

고객은 Xbox 게임 패스 카탈로그를 떠난 후 게임에 얼마나 오래 액세스할 수 있는지 물었습니다. 에이전트는 게임을 계속하기 위해 windows 또는 Microsoft 스토어용 Xbox 앱 게임의 디지털 복사본을 구입해야 한다고 말했습니다. 또한 에이전트는 Xbox 게임 패스 카탈로그를 종료하기 전에 고객에게 알림을 받을 것임을 상기시켰습니다. 회원으로서 고객은 카탈로그의 모든 게임을 최대 20오프 또는 사용 가능한 최상의 할인 가격으로 구매할 수 있습니다.

퀴리 제로샷 결과

고객은 에이전트에게 Xbox 게임 패스에 대해 묻습니다. 에이전트는 게임이 Xbox 게임 패스 카탈로그를 벗어나면 고객이 디스크에서 창 또는 Microsoft 스토어 플레이용 Xbox 앱 디지털 복사본을 구입하거나 게임을 계속 플레이하기 위해 다른 형태의 자격을 얻어야 한다고 고객에게 알릴 수 있습니다. 또한 에이전트는 Xbox 게임 패스 카탈로그를 종료하기 전에 Xbox가 구성원에게 알릴 것임을 고객에게 알립니다.

다빈치 몇 샷 결과

고객은 게임 패스를 종료한 후 게임에 액세스할 수 있는 기간을 알고 싶었습니다. 에이전트는 게임이 Xbox 게임 패스 카탈로그를 벗어나면 고객이 디지털 복사본을 구입하거나 게임을 계속 플레이하기 위해 다른 형태의 자격을 얻어야 한다고 알릴 수 있습니다.

큐리 몇 샷 결과

고객에게 게임 패스에 대한 질문이 있습니다. 고객이 좋습니다. 에이전트는 Xbox 게임 패스에 대한 도움이 필요합니다. 고객은 게임 패스 카탈로그를 종료한 후 게임에 얼마나 오래 액세스할 수 있는지 묻습니다. 에이전트는 게임이 Xbox 게임 패스 카탈로그를 벗어나면 고객이 창용 Xbox 앱 디지털 복사본을 구매하거나 디스크에서 Microsoft 스토어 플레이를 하거나 게임을 계속 플레이하기 위해 다른 형태의 자격을 얻어야 한다고 알릴 수 있습니다. 고객은 이것을 듣고 기쁘게 생각하고 에이전트에게 감사드립니다.

Curie 미세 조정 결과

고객은 게임 패스를 종료한 후 게임에 얼마나 오래 액세스할 수 있는지 알고 싶어 합니다. 에이전트는 게임이 Xbox 게임 패스 카탈로그를 떠나면 창용 Xbox 앱 디지털 복사본을 구입하거나 디스크에서 Microsoft 스토어 플레이를 하거나 게임을 계속 플레이하려면 다른 형태의 자격을 얻어야 한다고 설명합니다.

요약 평가

요약 모델의 성능을 평가하기 위한 여러 가지 기술이 있습니다.

몇 가지 예를 들면 다음과 같습니다.

ROUGE(게이팅 평가를 위한 리콜 지향 언더스터디). 이 기술에는 요약을 사용자가 만든 이상적인 요약과 비교하여 요약의 품질을 자동으로 결정하는 측정값이 포함되어 있습니다. 측정값은 평가 중인 컴퓨터에서 생성된 요약과 이상적인 요약 사이에 n-gram, 단어 시퀀스 및 단어 쌍과 같은 겹치는 단위 수를 계산합니다.

예를 들면 다음과 같습니다.

reference_summary = "The cat ison porch by the tree"
generated_summary = "The cat is by the tree on the porch"
rouge = Rouge()
rouge.get_scores(generated_summary, reference_summary)
[{'rouge-1': {'r':1.0, 'p': 1.0, 'f': 0.999999995},
  'rouge-2': {'r': 0.5714285714285714, 'p': 0.5, 'f': 0.5333333283555556},
  'rouge-1': {'r': 0.75, 'p': 0.75, 'f': 0.749999995}}]

BertScore. 이 기술은 토큰 수준에서 생성된 요약 및 참조 요약을 정렬하여 유사성 점수를 계산합니다. 토큰 맞춤은 BERT에서 컨텍스트화된 토큰 포함 간의 코사인 유사성을 최대화하기 위해 탐욕적으로 계산됩니다.

예를 들면 다음과 같습니다.

  import torchmetrics
  from torchmetrics.text.bert import BERTScore
  preds = "You should have ice cream in the summer"
  target = "Ice creams are great when the weather is hot"
  bertscore = BERTScore()
  score = bertscore(preds, target)
  print(score)

유사성 행렬입니다. 유사성 행렬은 요약 평가에서 서로 다른 엔터티 간의 유사성을 나타냅니다. 이를 사용하여 동일한 텍스트의 다른 요약을 비교하고 유사성을 측정할 수 있습니다. 각 셀에 두 요약 간의 유사성 측정값이 포함된 2차원 표로 표시됩니다. 코사인 유사성, Jac카드 유사성 및 편집 거리와 같은 다양한 방법을 사용하여 유사성을 측정할 수 있습니다. 그런 다음 행렬을 사용하여 요약을 비교하고 원래 텍스트의 가장 정확한 표현을 결정합니다.

다음은 두 개의 유사한 문장에 대한 BERTScore 비교의 유사성 행렬을 생성하는 샘플 명령입니다.

bert-score-show --lang en -r "The cat is on the porch by the tree"
                          -c "The cat is by the tree on the porch"
                          -f out.png

첫 번째 문장인 "고양이는 나무 옆에 있는 현관에 있다"는 것을 후보자라고 합니다. 두 번째 문장을 참조라고 합니다. 이 명령은 BERTScore를 사용하여 문장을 비교하고 행렬을 생성합니다.

다음 행렬은 이전 명령에서 생성된 출력을 표시합니다.

유사성 행렬을 보여 주는 다이어그램

자세한 내용은 SummEval: 요약 평가 재평가를 참조하세요. 요약을 위한 PyPI 도구 키트는 Summ-eval 0.892를 참조하세요.

책임 있는 사용

GPT는 우수한 결과를 생성할 수 있지만 사회적, 윤리적, 법적 편견과 유해한 결과에 대한 출력을 검사 합니다. 모델을 미세 조정하는 경우 모델이 학습하는 데 해로울 수 있는 데이터 요소를 제거해야 합니다. 빨간색 팀을 사용하여 모델의 유해한 출력을 식별할 수 있습니다. 이 프로세스를 수동으로 구현하고 반자동 메서드를 사용하여 지원할 수 있습니다. 언어 모델을 사용하여 테스트 사례를 생성한 다음 분류자를 사용하여 테스트 사례에서 유해한 동작을 감지할 수 있습니다. 마지막으로 생성된 요약의 수동 검사 수행하여 사용할 준비가 되었는지 확인해야 합니다.

자세한 내용은 언어 모델을 사용하는 Red Teaming 언어 모델을 참조하세요.

참가자

Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.

보안 주체 작성자:

기타 기여자:

비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인하세요.

다음 단계