데이터 스토어 에이전트는 웹사이트 콘텐츠 및 업로드된 데이터를 기반으로 LLM 생성 에이전트 응답을 제공할 수 있는 특수한 유형의 Dialogflow 에이전트입니다.
이 에이전트를 만들려면 에이전트를 만들 때 데이터 스토어를 제공합니다.
데이터 스토어 에이전트에는 데이터 스토어 핸들러라고 하는 특수한 상태 핸들러가 있습니다. 데이터 스토어 에이전트는 이러한 데이터 스토어 핸들러를 사용하여 최종 사용자와 콘텐츠에 대한 대화를 할 수 있습니다.
제한사항
다음과 같은 제한사항이 적용됩니다.
- 이 기능은 현재 GA에서 일부 언어만 지원합니다. 언어 참조에서 데이터 스토어 열을 참조하세요.
global
,us
멀티 리전,eu
멀티 리전의 리전만 지원됩니다.- 지원되는 유일한 구조화된 데이터 스토어 유형은 FAQ입니다.
- 청크로 분할된 데이터 스토어와 분할되지 않은 데이터 스토어가 모두 있는 앱은 지원되지 않습니다.
액세스 제어
프로젝트 소유자인 경우에는 데이터 스토어 에이전트를 만드는 데 필요한 모든 권한이 있습니다. 프로젝트 소유자가 아닌 경우 다음 역할이 부여되어 있어야 합니다.
- Dialogflow 관리자
- 검색 엔진 관리자
자세한 내용은 Dialogflow 액세스 제어 가이드를 참조하세요.
데이터 스토어 에이전트 만들기
데이터 스토어 에이전트를 만들려면 다음 안내를 따르세요.
- 아직 수행하지 않은 경우 Dialogflow 설치 안내를 따르세요.
에이전트 빌더 콘솔로 이동합니다.
콘솔 드롭다운에서 프로젝트를 선택합니다.
API를 아직 활성화하지 않았으면 서비스 약관을 읽고 동의한 후 계속 및 API 활성화를 클릭합니다.
새 앱 만들기 또는 새 앱을 클릭합니다.
채팅을 선택합니다.
에이전트 구성 섹션에 회사 이름을 입력합니다.
시간대 및 언어 설정 섹션을 펼칩니다.
시간대를 선택합니다.
기본 언어를 선택합니다.
에이전트 이름 섹션에 에이전트 이름을 입력합니다.
에이전트 위치 섹션에서 리전 또는 멀티 리전을 선택합니다.
계속을 클릭합니다.
다음 중 하나를 수행하여 데이터 스토어를 에이전트에 연결합니다.
만들기를 클릭합니다.
이제 에이전트가 생성되었으며 사용 가능한 데이터 스토어 페이지로 자동 리디렉션됩니다. 여기에서 필요에 따라 데이터 스토어를 더 추가할 수 있습니다.
웹사이트용 새 데이터 스토어를 만든 경우 도메인을 확인해야 합니다.
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는 최종 사용자 입력을 다음 선호도 순서로 평가합니다.
- 범위 내 경로의 인텐트 일치
- FAQ 데이터 스토어 콘텐츠
- 구조화되지 않은 데이터 스토어 콘텐츠
입력 평가 순서
Dialogflow는 하이브리드 에이전트에 대해 최종 사용자 입력을 다음 순서로 평가합니다.
- 양식 작성 도중 매개변수 입력
- 범위 내 경로의 인텐트 일치
- FAQ 데이터 스토어 콘텐츠가 있는 데이터 스토어 핸들러
- 구조화되지 않은 데이터 스토어 콘텐츠가 있는 데이터 스토어 핸들러
기존 에이전트의 데이터 스토어 핸들러 추가 또는 수정
데이터 스토어 핸들러는 특수한 유형의 Dialogflow 상태 핸들러입니다. 즉, 흐름 또는 페이지에 적용할 수 있으며 동일한 범위 규칙을 사용하여 평가됩니다.
데이터 스토어 핸들러를 추가하거나 수정하려면 다음 안내를 따르세요.
- Dialogflow CX 콘솔로 이동합니다.
- Google Cloud 프로젝트를 선택합니다.
- 에이전트를 선택합니다.
- 데이터 스토어 핸들러와 연결된 흐름을 선택합니다. 일반적으로 기본 시작 흐름입니다.
- 데이터 스토어 핸들러와 연결된 페이지를 선택합니다. 일반적으로 시작 페이지입니다.
- 페이지 데이터에서 상태 핸들러 추가를 클릭한 후 데이터 스토어를 선택합니다.
- 데이터 스토어를 만들어야 하는 경우 Vertex AI Agent Builder 사용자 인터페이스로 이동합니다. 선택하는 데 도움이 필요하면 데이터 스토어 정보를 참조하세요.
- 이미 데이터 스토어가 있으면 데이터 스토어 수정을 클릭합니다.
- 필요에 따라 업데이트하고, 완료되면 저장합니다. 데이터 스토어별 설정에 관한 내용은 아래를 참고하세요.
에이전트 응답
에이전트 응답 섹션에서 생성형 응답을 참조하는 커스텀 응답을 제공할 수 있습니다.
에이전트 말하기 섹션에서 $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 메서드를 참조하세요.