Dialogflow CX 생성기 및 데이터 저장소를 사용하여 정보에 입각한 의사 결정

1. 개요

최종 업데이트: 2023년 10월 10일

빌드할 항목

이 Codelab에서는 Vertex AI Conversation과 Dialogflow CX를 사용하여 헌혈하려는 사람들을 지원하고 필수 자격요건을 충족하는지 확인하는 가상 에이전트를 빌드, 배포, 구성합니다. 이 에이전트는 Dialogflow CX 처리 중에 실제 공개 데이터와 Google의 생성형 대규모 언어 모델 (LLM)을 사용합니다.

사용할 기능

Codelab을 완료하려면 세 가지 기능을 구성하고 사용합니다.

데이터 스토어 에이전트

Vertex AI Conversation 기능은 데이터 스토어 에이전트라는 특별한 Dialogflow 에이전트를 만듭니다.

이 기능을 사용하면 사용자가 웹사이트 URL, 정형 데이터 또는 구조화되지 않은 데이터 (데이터 스토어)를 제공하면 Google에서 콘텐츠를 파싱하고 데이터 스토어 및 대규모 언어 모델을 기반으로 하는 가상 에이전트를 만듭니다. 그러면 고객과 최종 사용자가 에이전트와 대화를 나누고 콘텐츠에 대해 질문할 수 있습니다. 이 유형의 에이전트에 대한 자세한 내용은 Vertex AI Conversation 소개를 참조하세요.

발전기

생성기 기능은 개발자가 Google의 최신 생성형 대규모 언어 모델 (LLM)과 커스텀 프롬프트를 사용하여 런타임에 에이전트 응답을 생성할 수 있는 Dialogflow CX 기능입니다. 생성기는 학습된 대규모 텍스트 데이터 세트의 일반 지식 또는 대화의 맥락과 관련된 일반적인 응답을 처리할 수 있습니다.

생성형 대체

생성형 대체 기능은 Google의 최신 생성형 대규모 언어 모델 (LLM)을 사용하여 최종 사용자 입력이 양식 작성을 위한 인텐트 또는 매개변수와 일치하지 않을 때 가상 에이전트 응답을 생성합니다. 이 기능은 LLM에 응답 방법을 알려주는 텍스트 프롬프트를 사용하여 구성할 수 있습니다. 사전 정의된 텍스트 프롬프트를 사용하거나 자체 프롬프트를 추가할 수 있습니다. 흐름, 페이지 또는 매개변수 채우기 중에 사용된 일치하지 않는 이벤트 핸들러에서 생성형 대체를 사용 설정할 수 있습니다. 일치하지 않는 이벤트에 생성형 대체가 사용 설정된 경우 이벤트가 트리거될 때마다 Dialogflow는 생성된 응답을 생성하려고 시도하고 사용자에게 이를 답합니다. 응답 생성에 실패하면 일반적인 규정된 에이전트 응답이 대신 발행됩니다. 생성형 대체에 관해 자세히 알아보려면 이 Codelab을 사용해 보세요.

학습할 내용

  • 구조화되지 않은 데이터에서 데이터 스토어 에이전트를 만드는 방법
  • 지식 핸들러를 사용하여 최종 사용자가 데이터 스토어에 추가된 콘텐츠에 대해 가상 에이전트와 대화할 수 있도록 허용하는 방법
  • 생성기 텍스트 프롬프트를 구성하고 기본 제공 생성기 프롬프트 자리표시자를 사용하여 컨텍스트에 맞게 생성하는 방법
  • 단어를 생성기 프롬프트 자리표시자로 표시하고 나중에 처리의 세션 매개변수에 연결하여 실행 중에 해당 값을 사용하는 방법
  • 대규모 텍스트 데이터 세트의 지식 및 현재 대화의 컨텍스트를 포함하는 응답을 처리하도록 생성기를 구성하는 방법
  • 생성기를 사용하여 공식 이메일을 생성하는 방법
  • 에이전트를 테스트하고 생성된 응답을 트리거하는 고객 질문을 시뮬레이션하는 방법

필요한 항목

  • Google Cloud 프로젝트
  • 브라우저(예: Chrome)

2. API 사용 설정

Vertex AI Conversation에서 데이터 스토어 에이전트를 만들려면 먼저 Dialogflow와 Vertex AI Search and Conversation API를 사용 설정해야 합니다.

Dialogflow API를 사용 설정하려면 다음 단계를 따르세요.

  1. 브라우저에서 Dialogflow API 서비스 세부정보 페이지로 이동합니다.
  2. 사용 설정 버튼을 클릭하여 Google Cloud 프로젝트에서 Dialogflow API를 사용 설정합니다.

Vertex AI Search and Conversation API를 사용 설정하려면 다음 단계를 따르세요.

  1. Google Cloud 콘솔에서 Vertex AI Search and Conversation 콘솔로 이동합니다.
  2. 서비스 약관을 읽고 동의한 후 계속 및 API 활성화를 클릭합니다.

3. 앱의 새 채팅 앱 및 데이터 스토어 만들기

이제 가상 에이전트용 채팅 앱을 새로 만들고 데이터 소스로 구성합니다. 작성할 에이전트의 목적은 혈액 검사에 관한 질문이 있는 고객을 지원하는 것입니다. 호주 적십자 Lifeblood를 정보 소스로 사용하고 혈액 자격 요건 웹사이트에서 비정형 데이터를 기반으로 데이터 스토어를 만듭니다.

  1. Vertex AI Conversation에서 새 채팅 앱을 만들려면 다음 중 하나를 수행하면 됩니다.
    1. Vertex AI Conversation 콘솔로 이동한 다음 콘솔 상단의 +새 앱을 클릭합니다.
    2. Dialogflow CX 콘솔로 이동하여 +새 에이전트 만들기를 클릭한 다음 자동 생성 옵션을 선택하면 Vertex AI Conversation 콘솔에서 다음 단계로 리디렉션됩니다.
  2. Vertex AI Conversation 콘솔에서 만들려는 앱 유형으로 Chat을 선택합니다.
  3. Save a Life회사 이름을 입력합니다. 이 매개변수는 에이전트가 대표하는 회사와 에이전트의 범위를 정의하는 데 사용됩니다.
  4. 에이전트 이름Blood Donation Agent로 지정합니다.
  5. 계속을 클릭합니다.
  6. 새 데이터 스토어 만들기를 클릭합니다.
  7. 데이터 스토어의 데이터 소스로 Cloud Storage를 선택합니다.
  8. 이 Codelab의 샘플 데이터가 포함된 다음 Google Cloud Storage 폴더를 지정합니다. gs:// 프리픽스는 필요하지 않습니다.
    cloud-samples-data/dialogflow-cx/arc-lifeblood
    
  9. 가져올 데이터 유형으로 구조화되지 않은 문서를 선택합니다.
  10. 계속을 클릭합니다.
  11. 데이터 저장소 이름Australian Red Cross Lifeblood Unstructured로 지정합니다.
  12. 만들기를 클릭하여 데이터 스토어를 만듭니다.
  13. 데이터 스토어 목록에서 새로 만든 Australian Red Cross Lifeblood Unstructured를 선택합니다.
  14. 만들기를 클릭하여 채팅 앱을 만듭니다.

축하합니다. 잠재적 기부자를 도울 준비가 된 지식 기반 채팅 앱의 빌드가 완료되었습니다. 잠시 시간을 내어 축하해 주세요.

하지만 사용자가 에이전트에 액세스할 수 있도록 하려면 아직 해야 할 작업이 더 많이 있습니다. 다음 섹션에서는 지식 핸들러를 사용하여 상담사와 최종 사용자 간에 자격 요건에 대한 대화를 지원합니다.

4. 혈액 검사 FAQ에 답변하도록 상담사 구성

날짜 스토어 프롬프트 제공

백그라운드에서 문서 수집 프로세스가 실행되는 동안 데이터 스토어 프롬프트를 수정하여 에이전트에 브랜드를 부여해 보겠습니다.

  1. Vertex AI Conversation 콘솔에서 채팅 앱 이름을 클릭하면 추가 테스트 및 맞춤설정을 위해 Dialogflow CX 콘솔로 리디렉션됩니다.
  2. Dialogflow CX 콘솔의 에이전트 내에서 에이전트 설정 (페이지 오른쪽 상단)을 클릭한 후 ML 탭으로 이동하여 마지막으로 생성형 AI 탭을 엽니다.

데이터 스토어 프롬프트로 이동

  1. 아래 양식을 작성하여 다음 데이터 스토어 메시지를 생성하세요. 귀하의 이름은 Donate이며 Save a life, a fictitious organization의 유익하고 정중한 chatbot입니다. 여러분의 임무는 humans with eligibility information님을 지원하는 것입니다.

프롬프트를 생성하려면 양식을 작성하세요.

기본 시작 흐름의 일치하지 않는 이벤트에 생성형 대체 사용 설정

  1. 빌드 탭으로 전환하고 시작 페이지를 엽니다.
  2. sys.no-match-default 이벤트 핸들러를 클릭합니다. 체크박스가 이미 선택되어 있지 않은 경우 생성형 대체 기능을 사용 설정합니다.

흐름 불일치 시 생성형 대체 사용 설정

에이전트의 데이터 스토어 확인

시작 페이지에서 데이터 저장소 수정을 클릭하여 데이터 스토어 설정을 확인합니다.

데이터 스토어 수정

이전에 만든 데이터 스토어는 Dialogflow에 의해 이미 선택되어 있습니다.

생성한 데이터 스토어 연결

fulfillment에서 상담사 응답까지 아래로 스크롤합니다. fulfillment는 최종 사용자에 대한 에이전트 응답입니다. Dialogflow는 런타임에 사용자 질문에 대한 최상위 답변이 포함된 $request.knowledge.answers[0] 매개변수를 상담사가 매개변수로 미리 채웠습니다.

상담사 응답에 사용자 질문에 대한 최상위 답변이 포함됨

5. 에이전트 테스트

문서가 제공되고 에이전트가 사용할 준비가 되면 답변이 얼마나 양호한지 확인합니다.

테스트 에이전트를 클릭하여 시뮬레이터를 다시 엽니다.

에이전트 다시 테스트

웹사이트의 FAQ 페이지에서 찾을 것으로 예상되는 질문을 합니다.

  • What age do I need to be to donate?
  • Can pregnant women donate?
  • I've just come back from a trip to Africa. Can I donate?
  • How can I schedule an appointment?

답변이 기술 자료에서 제공되는지 확인

답변은 호주 적십자 Lifeblood 사이트에서 가져온 것입니다. 이 페이지에 나와 있는 것처럼 헌혈에는 최소 및 최대 연령이 정해져 있습니다. 최초 기부자의 최소 연령은 18세이고 최대 연령은 75세입니다. 데이터 저장소에서 정보를 가져오고 있다는 사실에 대한 추가 증거는 에이전트 응답에 표시되는 작은 별표 아이콘과 원래 JSON 응답을 통해 제공됩니다.

원본 JSON 응답 검사

마지막으로, 상담사에게 헌혈과 전혀 무관한 질문을 던져 보겠습니다.

사용자: "멜버른 날씨는 어때?"

담당자: "죄송하지만 말씀하신 내용에 관해서는 도와드릴 수 없습니다. 자격요건 정보와 관련하여 무엇을 도와드릴까요?"

이 답변은 AI 생성 콘텐츠가 포함되어 있으며 이전에 제공된 지식 커넥터 설정에서 Dialogflow가 생성한 텍스트 프롬프트에서 파생됩니다. '귀하의 이름은 기부하기이며 Save a Life의 유익하고 정중한 챗봇입니다. 여러분의 임무는 자격요건 정보를 사람들에게 지원하는 것입니다.". 이 텍스트 프롬프트에는 회사 이름, 에이전트 이름, 그리고 가장 중요한 것은 Dialogflow가 에이전트 응답을 생성하는 데 사용하는 범위 내에 있는 항목이 포함됩니다.

잘하셨습니다. 지금까지 헌혈과 관련하여 자주 묻는 질문에 대한 답변을 제공하기 위해 데이터 스토어를 사용하고 계십니다. Codelab의 다음 부분에서는 생성기 텍스트 프롬프트를 동일한 콘텐츠에 바인딩하여 정보에 입각한 결정을 내리는 방법을 알아봅니다.

6. 상담사의 자격요건 퀴즈 설정

다음 과제는 사용자가 헌혈할 자격이 있는지 판단할 수 있도록 에이전트를 설계하는 것입니다. 기부자는 연령, 체중, 기존 상태, 최근 여행 등 엄격한 요구사항을 충족해야 합니다. 이 Codelab에서는 나이와 체중만 고려합니다. 생성기는 Google의 대규모 언어 모델 (LLM)을 사용하여 대화의 컨텍스트와 기술 자료를 기반으로 정보에 입각한 결정을 동적으로 내립니다.

새 경로 및 매개변수 구성

  1. 시작 페이지를 열고 데이터 저장소 수정을 클릭합니다.
  2. 기존 에이전트의 응답을 $request.knowledge.answers[0] Would you like to take the eligibility quiz to find out if you can donate blood, and start changing lives?로 변경합니다.

사용자 FAQ에 대한 에이전트의 응답 보강

  1. 저장 버튼을 클릭합니다.
  2. 이제 에이전트가 'yes'를 처리하도록 설계해야 합니다. '아니요'를 선택합니다. 확인할 수 있습니다 먼저 confirmation.yes 인텐트와 confirmation.no 인텐트를 만듭니다. 인텐트 재사용에 관한 다음 가이드라인을 따르세요.
  3. 그런 다음 시작 페이지에서 새 페이지 자격 퀴즈로 전환하는 confirmation.yes 인텐트의 경로를 만듭니다.

Confirm.yes 인텐트의 경로 만들기

Confirm.yes가 트리거되면 새 페이지 자격 요건 퀴즈로 전환됩니다.

  1. 앞서 언급했듯이 퀴즈를 단순화하기 위해 사용자의 연령과 체중만을 고려하여 기부 가능 여부를 결정합니다. 자격 요건 퀴즈 페이지를 열고 새 양식 매개변수 age-weight를 추가하고 @sys.any를 항목 유형으로 선택합니다. "What is your age and weight?"를 초기 프롬프트 처리로 제공합니다. 나이와 체중을 한 번에 수집하려고 합니다. 모든 변경사항을 저장합니다.

매개변수 만들기

자격 요건 생성기 만들기 및 구성

생성기 기능은 개발자가 Dialogflow CX 처리 중에 Google의 최신 생성형 대규모 언어 모델 (LLM)을 사용할 수 있도록 지원하는 Dialogflow CX 기능입니다. 런타임에 에이전트 응답을 생성하는 생성기 생성기는 학습된 대규모 텍스트 데이터 세트의 일반 지식 또는 대화의 맥락과 관련된 일반적인 응답을 처리할 수 있습니다.

YouTube는 사용자가 제공한 정보 (예: 연령, 체중)와 자격 요건을 비교하여 사용자의 기부 가능 여부를 판단하는 새로운 생성기를 만들어야 합니다.

  1. Dialogflow CX 콘솔에서 관리 탭으로 이동하여 생성기를 선택하고 새로 만들기를 클릭합니다.

새 생성기 만들기

  1. 다음으로, 구체적인 표시 이름을 입력하고 텍스트 프롬프트를 작성합니다. 기본 모델 품질 관리 설정을 그대로 둡니다. 그런 다음 Save를 클릭하여 생성기를 만듭니다.
    • 표시 이름: Blood Donation Eligibility
    • 텍스트 프롬프트: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. Weight should be above 50 Kg. The user age and weight is $last-user-utterance. Be nice and tell the user if they are eligible to donate (also tell them why not in case)

런타임 시 처리 중 텍스트 프롬프트가 생성 모델로 전송됩니다. 모델이 만족스러운 응답을 생성하려면 명확한 질문이나 요청이어야 합니다. 텍스트 프롬프트에서 특별한 내장 생성기 프롬프트 자리표시자를 사용할 수 있습니다.

  • $conversation 에이전트와 사용자 간의 대화(마지막 사용자 발화는 제외)
  • $last-user-utterance: 마지막 사용자 발화.

구성한 텍스트 프롬프트에서는 사용자가 한 번의 대화 (`$last-user-utterance`)에서 나이와 체중을 입력할 것으로 예상합니다.

처리에서 생성기를 사용하고 모든 필수 매개변수를 구성합니다.

  1. 자격 퀴즈 페이지에서 모든 매개변수가 채워질 때 실행될 새 경로를 추가합니다. 조건 요구사항 $page.params.status = "FINAL"을 입력하고 저장을 클릭합니다.

모든 매개변수가 채워질 때 발생할 새 경로를 추가합니다.

  1. fulfillment 창의 생성기 섹션으로 이동하여 펼칩니다. 그런 다음 생성기 추가를 클릭하고 헌혈 자격 생성기를 선택합니다. 생성기를 선택한 후에는 실행 후 생성기의 결과를 포함할 출력 매개변수를 정의해야 합니다.

'헌혈 가능 여부' 생성기를 선택하고 프롬프트 자리표시자를 세션 매개변수와 연결하고 출력 매개변수를 정의합니다.

  1. 에이전트 응답의 출력 매개변수를 사용하고 경로를 저장합니다. 이제 모두 테스트할 준비가 되었습니다.

에이전트 응답에서 출력 매개변수 사용

7. 에이전트 다시 테스트

테스트 에이전트를 클릭하여 시뮬레이터를 다시 엽니다.

에이전트 다시 테스트

시뮬레이터에서 상담사와 새 대화를 시작합니다. 먼저 연령 요건에 관해 질문한 다음 자격 요건 퀴즈를 진행합니다. 'eligible'을 테스트합니다. 18~75세의 나이와 50kg 이상의 체중을 입력하세요.

조건 충족 경로

그런 다음 요구사항 중 하나 또는 둘 다 충족되지 않으면 자격 확인에 실패하는지 확인합니다.

조건 미충족 경로

좋습니다. 생성기가 예상대로 작동합니다. 아니면 실제로 발생하나요? 사용자가 연령만 입력하고 체중은 알려주지 않으면 어떻게 되나요? 그 반대의 경우 어떻게 하나요?

체중은 아닌 연령은 입력하세요.

8. 생성기 프롬프트 조정

연령과 체중을 모두 입력하지 않으면 예전에 나이와 체중을 수집하는 것이 작동하지 않는 것 같습니다. 대신 두 값을 항목 매개변수로 수집하는 양식을 만들어야 합니다. 프롬프트 맥락에서 모든 자격 요건 (예: 연령, 체중)을 고려하도록 하기 위해 단어 앞에 $ 를 추가하여 자리표시자를 사용할 수 있습니다. 나중에 처리 시 이러한 생성기 메시지 자리표시자를 세션 매개변수와 연결하고 실행 중에 세션 매개변수 값으로 대체할 예정입니다.

  1. 자격 퀴즈 페이지를 열고 별도의 양식 매개변수 두 개(가중치 및 연령에 하나씩)를 추가합니다. 항목 유형으로 @sys.number-integer를 선택하고 필수 매개변수를 표시합니다. How old are you?What is your correct weight?와 같은 초기 프롬프트 처리를 제공합니다. 모든 변경사항을 저장합니다.

자격 요건 양식

  1. 생성기의 텍스트 프롬프트를 변경하기 전에 두 개의 새 맞춤 자리표시자를 추가할 것이므로 먼저 경로 처리에서 생성기를 삭제해야 합니다. 저장을 클릭합니다.

생성기 제거

  1. 관리 탭으로 이동하여 Generators를 선택하고 헌혈 자격 생성기의 텍스트 프롬프트를 Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. The weight must be at least 50 kg. The user is $age years old and weighs $weight Kg. Craft an email and politely explain to the user if they're eligible to donate and if not why.로 업데이트합니다. 저장을 클릭합니다.

연령 및 몸무게 양식 매개변수의 맥락에 맞는 텍스트 프롬프트를 만들었을 뿐 아니라, 자격 요건 퀴즈의 공식 결과가 포함된 공식 이메일을 사용자에게 보낼 수 있도록 마지막 문장도 변경했습니다.

텍스트 프롬프트 재구성

  1. 자격 요건 퀴즈 페이지에서 경로를 선택하고 처리 창의 생성기 섹션을 펼칩니다. 그런 다음 생성기 추가를 클릭하고 헌혈 자격 생성기를 선택합니다. 생성기를 선택한 후에는 새 프롬프트 자리표시자를 각 세션 매개변수와 연결해야 합니다. 출력 매개변수를 다시 설정해야 합니다. 저장을 클릭합니다.

생성기 바인딩 업데이트

  1. 에이전트를 다시 테스트합니다. 이제 자격요건 확인에서 연령과 체중을 모두 고려하며 표현이 대화 어조에서 잠재적 인간 참여 없이 전송될 준비가 된 보다 정중한 응답으로 변경되었습니다.

사용자가 자격요건을 충족하지 않음을 알리는 이메일

사용자가 자격을 충족한다고 안내하는 이메일

9. 축하합니다

수고하셨습니다. 이 Codelab을 완료했습니다.

수고하셨습니다. Codelab을 완료했습니다.

오늘은 자격요건 퀴즈의 맥락에서 생성기를 조사했습니다. 여러분은 생성기가 LLM을 사용하여 상담사 응답을 생성하고 기술 자료를 기반으로 충분한 정보를 바탕으로 결정을 내릴 수도 있음을 확인했습니다. 물론 생성기와 데이터 스토어를 활용하여 구현할 수 있는 사용 사례가 많이 있습니다. 앞으로 이러한 사용 사례를 자세히 알아보겠습니다.

삭제

이 Codelab에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 다음 정리를 수행할 수 있습니다.

  • 불필요한 Google Cloud 요금이 청구되지 않도록 하려면 Google Cloud 콘솔을 사용하여 필요하지 않은 프로젝트를 삭제하세요.
  • 기존 Google Cloud 프로젝트를 사용한 경우 계정에 요금이 청구되지 않도록 만든 리소스를 삭제하세요. 자세한 내용은 앱 삭제 단계를 참고하세요.
  • Vertex AI Conversation 및 Dialogflow의 API를 사용 중지하려면 Discovery Engine API 서비스 세부정보 페이지로 이동하고 API 사용 중지를 클릭하고 확인한 다음 Dialogflow API 서비스 세부정보 페이지로 이동하여 API 사용 중지를 클릭하고 확인합니다.

자세히 알아보기

다음 가이드 및 리소스를 통해 대화형 AI와 생성형 AI에 관해 계속 알아보세요.

라이선스

이 작업물은 Creative Commons Attribution 2.0 일반 라이선스에 따라 사용이 허가되었습니다.