데이터 스토어 에이전트

Vertex AI 대화 기능은 데이터 스토어 에이전트라는 특별한 Dialogflow 에이전트를 만듭니다. 이 기능을 사용하면 웹사이트 링크 또는 문서(데이터 스토어)를 제공하고 Google은 콘텐츠를 파싱하고 대규모 언어 모델을 기반으로 하는 가상 에이전트를 만듭니다. 이렇게 하려면 데이터 스토어 핸들러라고 하는 특수한 상태 핸들러를 만들면 됩니다. 데이터 스토어 에이전트는 이러한 데이터 스토어 핸들러를 사용하여 최종 사용자와 콘텐츠에 대한 대화를 할 수 있습니다.

도메인 이름을 지정하거나 개수에 관계없이 문서를 업로드하면 Google에서 색인을 생성합니다. 이 정보는 에이전트가 실시간으로 액세스할 수 있도록 제공됩니다. 이는 공개 또는 비공개 데이터에 대해 실행되는 Google 검색 알고리즘의 성능과 정확성을 Dialogflow의 자연스러운 대화 기능과 통합합니다.

새 데이터 저장소 에이전트를 만드는 방법은 Vertex AI Conversation 소개를 참조하세요.

하이브리드 에이전트 정보

기존 Dialogflow CX 에이전트가 있는 경우 이 에이전트를 정확한 대화 제어(흐름, 매개변수, 인텐트, 조건, 전환 등)의 기능과 데이터 스토어 핸들러 생성 기능을 결합한 하이브리드 에이전트로 업그레이드할 수 있습니다.

데이터 스토어 핸들러가 이러한 시나리오를 더 간단하게 처리할 수 있기 때문에 이 업그레이드의 일환으로 에이전트에서 특정 대화 시나리오에 대한 인텐트 경로(데이터 스토어 핸들러를 테스트하는 동안)를 삭제하거나 일시적으로 비활성화할 수 있습니다.

데이터 저장소 핸들러는 다음과 같은 시나리오에서 권장됩니다.

  • 조직의 문서 또는 웹사이트에서 답변할 수 있는 질문
  • 데이터베이스 조회가 필요 없는 FAQ

데이터 저장소 핸들러는 다음 시나리오에서 권장되지 않습니다.

  • 원하는 질문에 대해 답변이 없는 콘텐츠
  • 데이터베이스 조회 또는 서버 요청이 필요한 질문
  • 데이터 삭제가 필요한 시나리오
  • 결정론적 에이전트 응답이 필요한 시나리오

입력 평가 순서

Dialogflow는 하이브리드 에이전트에 대해 최종 사용자 입력을 다음 순서로 평가합니다.

  1. 양식 작성 도중 매개변수 입력
  2. 범위 내 경로의 인텐트 일치
  3. FAQ 데이터 스토어 콘텐츠가 있는 데이터 스토어 핸들러
  4. 구조화되지 않은 데이터 스토어 콘텐츠가 있는 데이터 스토어 핸들러

기존 에이전트의 데이터 저장소 핸들러 추가 또는 수정

데이터 스토어 핸들러는 특수한 유형의 Dialogflow 상태 핸들러입니다. 즉, 흐름 또는 페이지에 적용할 수 있으며 동일한 범위 규칙을 사용하여 평가됩니다.

데이터 스토어 핸들러를 추가하거나 수정하려면 다음 안내를 따르세요.

  1. Dialogflow CX 콘솔로 이동합니다.
  2. Google Cloud 프로젝트를 선택합니다.
  3. 에이전트를 선택합니다.
  4. 데이터 스토어 핸들러와 연결된 흐름을 선택합니다. 일반적으로 기본 시작 흐름입니다.
  5. 데이터 스토어 핸들러와 연결된 페이지를 선택합니다. 일반적으로 시작 페이지입니다.
  6. 페이지 데이터에서 상태 핸들러 추가를 클릭한 후 데이터 스토어를 선택합니다.
  7. 데이터 스토어를 만들어야 하는 경우 Vertex AI Search and Conversation 사용자 인터페이스로 이동합니다. 선택하는 데 도움이 필요하면 데이터 스토어 정보를 참조하세요.
  8. 이미 데이터 스토어가 있으면 데이터 스토어 수정을 클릭합니다.
  9. 필요에 따라 업데이트하고, 완료되면 저장합니다. 데이터 스토어별 설정에 관한 내용은 아래를 참고하세요.

에이전트 응답

에이전트 응답 섹션에서 생성형 응답을 참조하는 커스텀 응답을 제공할 수 있습니다. 에이전트 말하기 섹션에서 $request.knowledge.questions[0]을 사용하여 생성형 답변을 제공합니다.

데이터 스토어 응답 옵션

생성형 답변에서 제공해야 하는 최대 보조 링크 수를 나타내도록 링크 최댓값 필드를 업데이트할 수 있습니다.

대화 여담 처리

최종 사용자가 대화 중에 명확한 질문을 할 수 있습니다. 예를 들어 신용카드 정보 수집 중에 CVV가 무엇인지 명확히 하고 싶을 수 있습니다. 이 경우 에이전트는 질문에 답하고 필요한 신용카드 정보 수집으로 돌아가야 합니다. 이를 위해 질문에 답변하는 데이터 스토어가 포함된 데이터 스토어 핸들러를 만들고 이 핸들러를 신용카드 정보 수집을 처리하는 흐름의 흐름 시작 페이지에 적용하고 이 핸들러가 '현재 페이지'로 돌아가도록 전환 대상을 설정할 수 있습니다.

원치 않는 인텐트 일치 처리

에이전트가 데이터 스토어 핸들러를 사용해야 할 때 인텐트가 일치하는 경우 다음을 시도하여 이를 수정할 수 있습니다.

  • 모호한 학습 문구를 삭제하거나 수정하여 모든 학습 문구가 원하는 인텐트를 정확하게 처리하고 데이터 스토어 콘텐츠와 충돌하지 않도록 합니다.
  • 인텐트 일치를 방지하려면 부정 예시를 사용하세요.

데이터 스토어 필터링

때로는 세션 매개변수 값에 따라 쿼리에 특정 데이터 스토어만 사용할 수 있습니다. 예를 들어 제품 카테고리에 고유한 데이터 스토어가 있을 수 있습니다. 제품 카테고리에 데이터 스토어 필터링을 수행하려면 다음 안내를 따르세요.

  • 세션 매개변수를 제품 카테고리로 설정합니다.
  • 세션 매개변수 값을 확인하고 원하는 데이터 스토어 핸들러가 있는 특정 페이지로 전환하는 조건 경로를 만듭니다.
  • 데이터 스토어 핸들러는 대화를 계속할 수 있도록 호출 페이지로 다시 전환해야 합니다.

맞춤설정

최종 사용자에게 보다 관련이 높은 생성형 답변을 만들려면 사용자 관련 정보를 Dialogflow에 제공할 수 있습니다.

이 정보는 JSON으로 제공됩니다. 예상 스키마가 없으므로 객체 속성을 자유롭게 정의할 수 있습니다. 이 JSON은 대규모 언어 모델에 있는 그대로 전송되므로, 설명적인 속성 이름과 값을 사용하는 것이 가장 좋은 결과로 이어집니다.

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

{
  "subscription plan": "Business Premium Plus",
  "devices owned": [
    {"model": "Google Pixel 7"},
    {"model": "Google Pixel Tablet"}
  ]
}

Dialogflow API로 맞춤설정

인텐트 인식 요청을 전송할 때 이 데이터를 Dialogflow에 제공할 수 있습니다. 이 정보는 세션에 지속되지 않기 때문에 모든 인텐트 인식 요청에 제공되어야 합니다.

Sessions.detectIntent 메서드의 queryParams.endUserMetadata 필드에 이 정보를 제공합니다.

세션 참조의 프로토콜 및 버전을 선택합니다.

프로토콜 V3 V3beta1
REST 세션 리소스 세션 리소스
RPC 세션 인터페이스 세션 인터페이스
C++ SessionsClient 사용 불가능
C# SessionsClient 사용 불가능
Go SessionsClient 사용 불가능
자바 SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP 사용 불가능 사용 불가능
Python SessionsClient SessionsClient
Ruby 사용 불가능 해당 사항 없음

Dialogflow 메신저로 맞춤설정

Dialogflow 메신저 통합에 이 데이터를 제공할 수 있습니다. setContext 메서드를 참조하세요.

검색 구성

에이전트 동작을 보다 효율적으로 제어하고 답변의 품질을 개선하기 위해 부스트 및 필터 검색 구성을 노출시켜 문서를 부스트, 숨기기 및 필터링할 수 있습니다.

부스트 컨트롤을 사용하면 특정 문서에 부스트 값(순위가 높은 경우 0보다 큼, 순위가 낮은 경우 0보다 작음)을 적용하여 검색 결과 순위를 변경할 수 있습니다.

필터 컨트롤을 사용하면 지정된 필터 기준에 따라 검색 결과를 유지하거나 삭제할 수 있습니다.

이 정보는 Dialogflow 요청에 JSON으로 제공됩니다. JSON 형식은 검색 제어 유형에 따라 다릅니다.

부스트 컨트롤

다음 검색 구성은 부스트 컨트롤을 설명합니다.

"searchConfig": {
  "boostSpecs": [
    {
      "dataStores": [ "DATASTORE_ID" ],
      "spec": [
        {
          "conditionBoostSpecs": {
            "condition": "CONDITION",
            "boost": "1.0"
          }
        }
      ]
    }
  ]
}

필터 컨트롤

다음 검색 구성에서는 필터 컨트롤을 설명합니다.

"searchConfig": {
  "filterSpecs": [
    {
      "dataStores": [ "DATASTORE_ID" ],
      "filter": "CONDITION"
    }
  ]
}

Dialogflow API로 검색 구성 설정

인텐트 인식 요청을 전송할 때 이 데이터를 Dialogflow에 제공할 수 있습니다. 이 정보는 세션에 지속되지 않기 때문에 모든 인텐트 인식 요청에 제공되어야 합니다.

Sessions.detectIntent 메서드의 queryParams.searchConfig 필드에 이 정보를 제공합니다.

세션 참조의 프로토콜 및 버전을 선택합니다.

프로토콜 V3 V3beta1
REST 세션 리소스 세션 리소스
RPC 세션 인터페이스 세션 인터페이스
C++ SessionsClient 사용 불가능
C# SessionsClient 사용 불가능
Go SessionsClient 사용 불가능
자바 SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP 사용 불가능 사용 불가능
Python SessionsClient SessionsClient
Ruby 사용 불가능 해당 사항 없음

Dialogflow 메신저로 검색 구성 설정

Dialogflow 메신저 통합에 이 데이터를 제공할 수 있습니다.

검색 컨트롤을 적용하려면 웹 사이트에 DF 메신저 코드를 삽입할 때 다음 스니펫을 추가해야 합니다.

<script>
  document.addEventListener('df-messenger-loaded', () => {
    const dfMessenger = document.querySelector('df-messenger');
    const searchConfig = { ... }
    dfMessenger.setQueryParameters(searchConfig);
  });
</script>

setQueryParameters 메서드를 참조하세요.

Codelab

데이터 스토어 에이전트 및 생성형 채팅 앱 Codelab도 참조하세요.