데이터 스토어 에이전트

데이터 스토어 에이전트는 웹사이트 콘텐츠 및 업로드된 데이터를 기반으로 LLM 생성 에이전트 응답을 제공할 수 있는 특수한 유형의 Dialogflow 에이전트입니다.

이 에이전트를 만들려면 에이전트를 만들 때 데이터 스토어를 제공합니다.

데이터 스토어 에이전트에는 데이터 스토어 핸들러라고 하는 특수한 상태 핸들러가 있습니다. 데이터 스토어 에이전트는 이러한 데이터 스토어 핸들러를 사용하여 최종 사용자와 콘텐츠에 대한 대화를 할 수 있습니다.

제한사항

다음과 같은 제한사항이 적용됩니다.

액세스 제어

프로젝트 소유자인 경우에는 데이터 스토어 에이전트를 만드는 데 필요한 모든 권한이 있습니다. 프로젝트 소유자가 아닌 경우 다음 역할이 부여되어 있어야 합니다.

  • Dialogflow 관리자
  • 검색 엔진 관리자

자세한 내용은 Dialogflow 액세스 제어 가이드를 참조하세요.

데이터 스토어 에이전트 만들기

데이터 스토어 에이전트를 만들려면 다음 안내를 따르세요.

  1. 아직 수행하지 않은 경우 Dialogflow 설치 안내를 따르세요.
  2. 에이전트 빌더 콘솔로 이동합니다.

    에이전트 빌더 콘솔

  3. 콘솔 드롭다운에서 프로젝트를 선택합니다.

  4. API를 아직 활성화하지 않았으면 서비스 약관을 읽고 동의한 후 계속 및 API 활성화를 클릭합니다.

  5. 새 앱 만들기 또는 새 앱을 클릭합니다.

  6. 채팅을 선택합니다.

  7. 에이전트 구성 섹션에 회사 이름을 입력합니다.

  8. 시간대 및 언어 설정 섹션을 펼칩니다.

  9. 시간대를 선택합니다.

  10. 기본 언어를 선택합니다.

  11. 에이전트 이름 섹션에 에이전트 이름을 입력합니다.

  12. 에이전트 위치 섹션에서 리전 또는 멀티 리전을 선택합니다.

  13. 계속을 클릭합니다.

  14. 다음 중 하나를 수행하여 데이터 스토어를 에이전트에 연결합니다.

    • 이전에 만든 기존 데이터 스토어를 선택합니다.
    • 새 데이터 스토어를 만듭니다.
      1. 새 데이터 스토어 만들기를 클릭합니다.
      2. 데이터 소스를 선택합니다.
      3. 선택한 데이터 스토어 소스의 데이터와 구성을 입력합니다. 데이터 스토어 위치는 에이전트 위치와 일치해야 합니다.
      4. 만들기를 클릭하여 데이터 스토어를 만듭니다.
      5. 새 데이터 스토어를 선택합니다.
  15. 만들기를 클릭합니다.

  16. 이제 에이전트가 생성되었으며 사용 가능한 데이터 스토어 페이지로 자동 리디렉션됩니다. 여기에서 필요에 따라 데이터 스토어를 더 추가할 수 있습니다.

  17. 웹사이트용 새 데이터 스토어를 만든 경우 도메인을 확인해야 합니다.

  18. Dialogflow CX로 에이전트를 열려면 왼쪽 패널에서 미리보기를 클릭합니다. Dialogflow CX 콘솔에서 데이터 스토어 핸들러를 수정 또는 추가하고 에이전트를 배포할 수 있습니다. 데이터 스토어에서 다루지 않는 시나리오를 처리하는 흐름은 선택적으로 추가합니다.

에이전트 테스트

Dialogflow CX 시뮬레이터를 사용하여 에이전트를 테스트할 수 있습니다.

설정

다음 데이터 스토어 에이전트 설정을 사용할 수 있습니다.

그라운딩

연결된 데이터 스토어의 콘텐츠에서 생성된 각 응답에 대해 신뢰도 수준이 계산되어 응답의 모든 정보가 데이터 스토어의 정보로 지원된다는 신뢰도를 측정합니다. 허용되는 가장 낮은 신뢰도 수준을 선택할 수 있습니다. 그러면 에이전트는 해당 수준보다 낮은 응답을 반환하지 않습니다.

매우 낮음, 낮음, 중간, 높음, 매우 높음 등 5가지 신뢰도 수준 중에서 선택할 수 있습니다.

그라운딩 휴리스틱 필터를 적용할 수도 있습니다. 사용 설정하면 일반적인 할루시네이션에 따라 부정확할 수 있는 콘텐츠가 포함된 응답이 숨겨집니다.

데이터 스토어 프롬프트

에이전트에 대한 추가 정보를 추가하여 데이터 스토어 콘텐츠에서 생성된 답변의 품질을 개선하고 브랜드와 더 비슷한 느낌을 받도록 할 수 있습니다.

  • 에이전트 이름 - 에이전트에서 스스로 지칭하는 이름입니다. 설정하지 않은 상태로 두면 기본값인 AI 어시스턴트가 사용됩니다.
  • 에이전트 ID - 상담사의 페르소나입니다. 설정하지 않은 상태로 두면 기본값인 AI 어시스턴트가 사용됩니다.
  • 회사 이름: 회사 이름으로 설정합니다. 에이전트 만들기 흐름의 일부로 이미 설정되어 있어야 하지만 필요에 따라 조정할 수 있습니다. 생성된 답변의 품질이 저하되지 않도록 이 필드를 올바르게 설정하는 것이 좋으며 특히 비워 두지 않는 것이 좋습니다.
  • 회사 설명: 회사가 제공하는 업무에 대한 간단한 설명입니다.
  • 에이전트 범위 - 에이전트가 사용되는 위치입니다. 설정하지 않으면 회사 웹사이트의 기본값이 사용됩니다.

이 섹션을 일부 또는 전부 작성했으면 오른쪽 프롬프트 아래에서 이러한 설정에서 파생된 짧은 단락을 검사할 수 있습니다. 이것이 답변 생성의 일부로 사용됩니다.

데이터 스토어 모델 선택 및 요약 프롬프트

사용자 쿼리가 처리되면 에이전트는 데이터 스토어를 검색하여 적절한 소스를 찾습니다. 그런 다음 에이전트가 사용자 쿼리 및 발견된 소스를 LLM으로 전송하여 요약을 수행합니다.

요약에 사용할 모델을 선택하고 원하는 경우 자체 프롬프트를 제공할 수 있습니다.

생성 모델 선택

요약 생성 요청에 데이터 스토어 에이전트에서 사용되는 생성 모델을 선택할 수 있습니다. 사용 가능한 옵션은 다음 표에 나와 있습니다.

모델 식별자 언어 지원
기본값 이는 현재 권장되는 구성으로서 시간이 지나면 변경될 수 있습니다. 이 옵션을 사용하면 에이전트 동작이 변경(개선 등)될 수 있습니다. 에이전트 동작의 일관성을 높이려면 특정 모델을 선택합니다.
text-bison@001 지원되는 모든 언어로 사용 가능합니다.
text-bison@002 지원되는 모든 언어로 사용 가능합니다.
text-bison@001 조정(대화형) 현재는 영어만 지원됩니다.
text-bison@001 조정(정보 제공) 현재는 영어만 지원됩니다.
gemini-1.0-pro-001 지원되는 모든 언어로 사용 가능합니다.

요약 프롬프트 맞춤설정

요약 LLM 호출에 대한 자체 프롬프트를 제공할 수 있습니다. 프롬프트는 사전 정의된 자리표시자가 포함될 수 있는 텍스트 템플릿입니다. 런타임 시 자리표시자가 적절한 값으로 대체되고 최종 텍스트가 LLM으로 전송됩니다.

자리표시자는 다음과 같습니다.

  • $original-query: 사용자의 쿼리 텍스트입니다.
  • $rewritten-query: Dialogflow는 재작성기 모듈을 사용하여 원래 사용자 쿼리를 더 정확한 형식으로 다시 작성합니다.
  • $sources: Dialogflow는 엔터프라이즈 검색을 사용하여 사용자의 쿼리를 기반으로 소스를 검색합니다. 발견된 소스는 특정 형식으로 렌더링됩니다.

    [1] title of first source
    content of first source
    [2] title of second source
    content of second source
    
  • $conversation: 대화 기록은 다음 형식으로 렌더링됩니다.

    Human: user's first query
    AI: answer to user's first query
    Human: user's second query
    AI: answer to user's second query
    

커스텀 프롬프트는 답변을 제공할 수 없을 때 'NOT_ENOUGH_INFORMATION'을 반환하도록 LLM에 지시해야 합니다. 이 경우 에이전트는 일치 항목 없음 이벤트를 호출합니다.

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

Given the conversation between a Human and a AI assistant and a list of sources,
write a final answer for the AI assistant.
Follow these guidelines:
+ Answer the Human's query and make sure you mention all relevant details from
  the sources, using exactly the same words as the sources if possible.
+ The answer must be based only on the sources and not introduce any additional
  information.
+ All numbers, like price, date, time or phone numbers must appear exactly as
  they are in the sources.
+ Give as comprehensive answer as possible given the sources. Include all
  important details, and any caveats and conditions that apply.
+ The answer MUST be in English.
+ Don't try to make up an answer: If the answer cannot be found in the sources,
  you admit that you don't know and you answer NOT_ENOUGH_INFORMATION.
You will be given a few examples before you begin.

Example 1:
Sources:
[1] <product or service> Info Page
Yes, <company> offers <product or service> in various options or variations.

Human: Do you sell <product or service>?
AI: Yes, <company> sells <product or service>. Is there anything else I can
help you with?

Example 2:
Sources:
[1] Andrea - Wikipedia
Andrea is a given name which is common worldwide for both males and females.

Human: How is the weather?
AI: NOT_ENOUGH_INFORMATION

Begin! Let's work this out step by step to be sure we have the right answer.

Sources:
$sources

$conversation
Human: $original-query
AI:

에이전트 응답 개선

테스트 중 일부 응답이 기대에 부합하지 않는 경우 다음을 수행하세요.

  • 특정 질문에 대한 FAQ 항목을 추가하여 답을 덮어쓸 수 있습니다.
  • 구조화된 FAQ에 품질이 낮은 답변이 표시되는 경우 구조화되지 않은 FAQ를 사용해 보세요.
  • 검색 구성을 사용하면 올바른 답변을 제공할 수 있습니다.
  • 파싱 및 청크 구성을 사용하여 응답을 최적화합니다.
  • 특정 문구를 차단하려면 에이전트 설정: 차단된 문구를 참조하세요.

에이전트 배포

에이전트를 배포하는 방법에는 여러 가지가 있습니다.

  • 가장 간단한 옵션은 에이전트에 사용자 인터페이스를 제공하는 Dialogflow CX 통합을 사용하는 것입니다. 각 통합은 배포 안내를 제공합니다.

  • Dialogflow Messenger 통합은 데이터 스토어 에이전트에 특히 적합한 옵션입니다. 생성형 기능을 위한 옵션이 기본 제공됩니다.

  • 자체 사용자 인터페이스를 만들고 상호작용에 Dialogflow CX API를 사용할 수 있습니다. 사용자 인터페이스 구현은 배포를 제어합니다.

에이전트의 성능 추적

에이전트 대화 기록을 모니터링하고 분석 도구를 사용하여 에이전트 통계를 확인할 수 있습니다.

특수 인텐트

데이터 스토어 에이전트는 사용자가 제공하는 콘텐츠에 대한 질문을 처리하는 것 외에도 다음 유형의 질문을 처리할 수 있습니다.

  • 에이전트 식별: '누구인가요?' 또는 '사람인가요?와 같은 질문을 처리합니다.
  • 상담사에게 에스컬레이션: '사람과 이야기하고 싶어요' 또는 '실제 사람과 대화하고 싶어요'와 같은 질문을 처리합니다.

이는 자동으로 생성되는 인텐트인텐트 경로를 통해 수행됩니다.

하이브리드 에이전트

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

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

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

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

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

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

Dialogflow는 최종 사용자 입력을 다음 선호도 순서로 평가합니다.

  1. 범위 내 경로의 인텐트 일치
  2. FAQ 데이터 스토어 콘텐츠
  3. 구조화되지 않은 데이터 스토어 콘텐츠

입력 평가 순서

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

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

기존 에이전트의 데이터 스토어 핸들러 추가 또는 수정

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

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

  1. Dialogflow CX 콘솔로 이동합니다.
  2. Google Cloud 프로젝트를 선택합니다.
  3. 에이전트를 선택합니다.
  4. 데이터 스토어 핸들러와 연결된 흐름을 선택합니다. 일반적으로 기본 시작 흐름입니다.
  5. 데이터 스토어 핸들러와 연결된 페이지를 선택합니다. 일반적으로 시작 페이지입니다.
  6. 페이지 데이터에서 상태 핸들러 추가를 클릭한 후 데이터 스토어를 선택합니다.
  7. 데이터 스토어를 만들어야 하는 경우 Vertex AI Agent Builder 사용자 인터페이스로 이동합니다. 선택하는 데 도움이 필요하면 데이터 스토어 정보를 참조하세요.
  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 Messenger로 검색 구성 설정

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

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

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

setQueryParameters 메서드를 참조하세요.