프롬프트는 작업이 사용자에게 응답을 렌더링하는 방법과 작업이 사용자에게 계속하라는 메시지를 표시하는 방법을 정의합니다. 작업을 빌드하면서 호출 및 장면 내의 다양한 위치에 프롬프트를 추가할 수 있습니다. 프롬프트는 텍스트 또는 음성 응답처럼 단순할 수도 있고, 좀 더 복잡하고 카드, 이미지, 테이블과 같은 리치 콘텐츠를 포함할 수도 있습니다.
응답 유형
프롬프트마다 어시스턴트가 사용자에게 표시할 다양한 흥미로운 응답 유형 중에서 선택합니다.
- 간단한 응답: 단순한 응답은 채팅 풍선의 형태를 취하며 사운드를 위해 TTS (텍스트 음성 변환) 또는 SSML (Speech Synthesis Markup Language)을 사용합니다. 간단한 응답은 모든 기기 유형에서 지원되는 유일한 응답입니다.
- 리치 응답: 리치 응답에는 작업과의 사용자 상호작용을 향상하는 시각적 요소나 기능적 요소가 포함되어 있습니다. 리치 응답을 사용하면 표 형식의 데이터를 표시하거나 더 긴 형식의 오디오 콘텐츠를 재생할 수도 있습니다.
- 시각적 선택 응답: 시각적 선택 응답은 사용자가 제목이나 이미지로 가장 쉽게 구분할 수 있는 여러 옵션 중에서 선택할 수 있는 시각적 인터페이스를 제공합니다.
- 미디어 응답: 미디어 응답을 사용하면 작업이 SSML보다 긴 형식의 오디오 콘텐츠를 재생하고 미디어 컨트롤이 포함된 시각적 구성요소를 제공할 수 있습니다.
- Interactive Canvas: Interactive Canvas는 응답을 전체 화면 웹 뷰로 렌더링하고 대화형 웹 앱으로 작동하여 어시스턴트가 대화에서 사용자에게 응답으로 전송합니다. 캔버스는 HTML, CSS, 자바스크립트와 같은 웹 표준의 유연성을 높이기 위해 약간 다른 프롬프트 형식을 사용합니다.
이러한 각 응답 유형은 동일한 기본 프롬프트 형식을 사용하며 아래에 설명된 동일한 일반 기능에 액세스할 수 있습니다.
프롬프트 형식
작업 프로젝트에서는 YAML 또는 JSON 형식으로 프롬프트를 정의합니다. 각 프롬프트에는 최대 2개의 간단한 응답이 포함될 수 있으며, 원하는 경우 다양한 응답을 정의할 수 있습니다. 응답은 다음과 같은 방식으로 정의됩니다.
first_simple
: 사용자에게 전송할 초기 텍스트 또는 음성 (단순) 응답입니다.content
: 간단한 응답 후에 보낼 풍부한 보충 콘텐츠 콘텐츠입니다.last_simple
사용자에게 전송할 최종 텍스트 또는 음성 (단순) 응답입니다.canvas
: Interactive Canvas와 통합되는 웹 앱을 참조합니다.
기본적으로 프롬프트는 위의 순서대로 프롬프트 큐에 추가됩니다. 사용자가 응답하기 전에 어시스턴트는 사용자에게 프롬프트 대기열의 모든 메시지를 표시합니다.
또한 다음 기능을 사용하여 메시지를 유연하게 조정할 수 있습니다.
- 후보: 후보를 사용하면 사용자의 기기 기능에 따라 응답을 정의할 수 있습니다. 예를 들어 사용자가 디스플레이 지원 기기에서 작업과 상호작용할 때만 어시스턴트가 리치 응답을 표시하도록 할 수 있습니다.
- 변형: 변형은 단일 메시지의 대체 변형입니다. 예를 들어 사용자가 작업을 호출할 때마다 어시스턴트가 5가지 환영 메시지 변형 중에서 선택하도록 할 수 있습니다.
- 추천: 추천은 어시스턴트가 메시지를 표시할 때 디스플레이 지원 기기의 사용자에게 추천 칩을 제공합니다.
기본 프롬프트는 후보 1개, 변형 1개, first_simple
응답 1개를 사용합니다.
후보자
프롬프트에서 candidates
객체를 사용하면 사용자의 기기 기능에 따라 응답을 정의할 수 있습니다. 예를 들어 사용자가 디스플레이 지원 기기에서 작업과 상호작용할 때만 어시스턴트가 리치 응답을 표시하도록 할 수 있습니다. 어시스턴트가 후보를 반환할 수 있는 기기 유형을 정의하려면 candidates
객체의 selector
속성을 사용하세요.
아래 예에서 selector
속성에는 기기 기능 정보가 포함되어 있습니다. 첫 번째 후보에 설정된 프롬프트는 리치 응답을 렌더링할 수 있는 기기의 사용자에게 전송됩니다. 두 번째 후보에는 텍스트 및 음성 응답만 받을 수 있는 사용자를 위한 프롬프트가 포함되어 있습니다.
YAML
candidates: - selector: surface_capabilities: capabilities: - RICH_RESPONSE first_simple: variants: - speech: Here's a simple message. content: card: title: Image card title text: Some details about the image image: url: 'https://www.example.com/image/' - first_simple: variants: - speech: Text explains what the image might have shown in more detail.
JSON
{ "candidates": [{ "selector": { "surface_capabilities": { "capabilities": ["RICH_RESPONSE"] } }, "first_simple": { "variants": [{ "speech": "Here's a simple message." }] }, "content": { "card": { "title": "Image card title", "text": "Some details about the image", "image": { "url": "https://www.example.com/image/" } } } }, { "first_simple": { "variants": [{ "speech": "Text explains what the image might have shown in more detail." }] } }] }
특정 후보에게 하나 이상의 기능 요구사항을 제공할 수 있습니다. 다음 목록은 사용 가능한 각 기능 요구사항을 설명합니다.
SPEECH
: 기기가 텍스트 음성 변환 또는 SSML을 통해 사용자와 대화할 수 있습니다.RICH_RESPONSE
: 기기가 카드, 목록, 테이블과 같은 리치 응답을 표시할 수 있습니다.LONG_FORM_AUDIO
: 기기에서 음악 및 팟캐스트와 같은 긴 형식의 오디오 미디어를 재생할 수 있습니다.INTERACTIVE_CANVAS
: 기기가 Interactive Canvas 응답을 표시할 수 있습니다.WEB_LINK
: 기기에서 리치 응답의 웹 링크를 사용하여 웹브라우저를 열 수 있습니다.HOME_STORAGE
: 기기에서 홈 저장소에 데이터를 저장하고 액세스할 수 있습니다.
대안
변형을 사용하면 여러 버전의 응답을 정의할 수 있습니다. 어시스턴트가 사용자에게 메시지를 보내면 변형 중 하나가 무작위로 선택됩니다. 대화 설계에 관한 권장사항은 사용자가 작업과 대화할 때 대체 응답을 제공하는 것입니다.
예를 들어 사용자가 작업을 호출할 때마다 동일한 응답을 듣지 않도록 다양한 환영 메시지 변형을 제공합니다.
YAML
candidates: - first_simple: variants: - speech: Hello. - speech: Hi there. - speech: Welcome.
JSON
{ "candidates": [{ "first_simple": { "variants": [{ "speech": "Hello." },{ "speech": "Hi there." },{ "speech": "Welcome." }] } }] }
추천
![스마트 디스플레이의 추천 칩 예](https://developers.google.cn/static/assistant/conversational/images/smart-display/chips.png?authuser=8&hl=ko)
어시스턴트가 메시지를 표시할 때 추천은 디스플레이 지원 기기의 사용자에게 추천 칩을 제공합니다. 추천 검색어 칩을 사용하여 사용자 응답에 힌트를 줌으로써 대화를 계속하거나 피벗하세요. 탭하면 추천 칩이 사용자가 입력한 것처럼 표시된 텍스트를 대화에 그대로 반환합니다.
단일 프롬프트에 최대 8개의 제안이 있을 수 있으며 각 제안은 최대 길이가 25자인 일반 텍스트입니다.
추천을 추가하려면 각 추천이 포함된 Suggestion
객체를 별도의 title
필드에 제공합니다. 각 제목은 추천 칩 세트 내에서 고유해야 합니다. Actions Builder에서 이 객체는 YAML 및 JSON에서 suggestions
로 표시됩니다.
예를 들어 질문과 함께 '예' 또는 '아니요' 제안을 제공할 수 있습니다.
YAML
candidates: - first_simple: variants: - speech: 'Welcome, do you want to play a game?' suggestions: - title: 'Yes' - title: 'No'
JSON
{ "candidates": [{ "first_simple": { "variants": [{ "speech": "Welcome, do you want to play a game?" }] }, "suggestions": [{ "title": "Yes" }, { "title": "No" }] }] }