생성형 플레이북

생성형 플레이북은 대규모 언어 모델(LLM)을 사용해서 Dialogflow CX 에이전트를 만들 수 있는 새로운 방법을 제공합니다. 흐름, 페이지, 인텐트, 전환을 정의하는 대신 플레이북 형식으로 자연어 안내와 구조화된 데이터를 제공합니다. 이렇게 하면 에이전트 생성 및 유지보수 시간을 크게 줄이고 비즈니스에 대해 완전히 새로운 유형의 대화 경험을 사용 설정할 수 있습니다.

특정 대화 시나리오에서 흐름이 제공하는 명시적인 제어가 필요한 경우 플레이북과 흐름의 성능을 단일 하이브리드 에이전트로 결합할 수 있습니다.

제한사항

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

  • 영어만 지원됩니다.
  • us-central1global 리전만 지원됩니다.
  • 플레이북 에이전트는 기본 시작 흐름의 기본 시작 인텐트 경로에서 호출 컴패니언 SMS 전송을 지원하지 않지만 표준 흐름에서 호출 컴패니언 SMS 옵션을 사용 설정할 수 있습니다.

플레이북 개요

플레이북은 플레이북 에이전트의 기본 템플릿입니다. 에이전트에는 일반적으로 여러 플레이북이 포함되며, 각 플레이북은 특정 태스크를 처리하도록 정의됩니다. 플레이북 데이터는 LLM에 제공되므로, 질문에 답변하고 태스크를 수행하는 데 필요한 정보가 포함됩니다. 각 플레이북은 정보를 제공하거나, 외부 서비스에 쿼리를 전송하거나, 하위 태스크 처리를 위해 대화 처리를 기존 흐름 또는 다른 플레이북으로 연기할 수 있습니다.

플레이북 에이전트 만들기

Dialogflow 에이전트를 만들 때는 플레이북(플레이북 에이전트) 또는 흐름(기존 에이전트)에 따라 에이전트가 대화를 시작하는 방식을 선택할 수 있습니다.

플레이북 에이전트를 만들려면 다음 안내를 따르세요.

  1. 직접 만들기를 선택하여 에이전트 만들기 단계를 수행합니다.
  2. 에이전트 유형으로 생성형을 선택합니다.
  3. 저장을 클릭합니다.

왼쪽 탐색 화면에 3개의 새로운 리소스 선택기가 있습니다. 이러한 선택기를 통해 다음 중에서 선택할 수 있습니다.

  • 흐름 리소스
  • 생성형 리소스
  • 공유 리소스

플레이북 에이전트를 만들면 기본 플레이북이 자동으로 생성됩니다.

플레이북 데이터

이 섹션에서는 플레이북을 정의하는 데이터를 설명합니다.

플레이북 이름

플레이북 이름은 플레이북의 표시 이름입니다. 플레이북은 이 이름으로 서로를 참조할 수 있습니다.

플레이북 목표

플레이북 목표는 플레이북이 수행할 작업에 대한 대략적인 설명입니다.

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

Help customers to book flights and hotels.

플레이북 단계

플레이북 단계는 플레이북 목표 달성을 위해 수행되어야 하는 프로세스를 정의합니다.

각 단계에는 다음과 같은 자연어 안내가 포함됩니다.

  • LLM이 이해할 수 있는 기본 안내
  • 사용자를 다른 플레이북으로 연결하는 안내. 플레이북은 ${PLAYBOOK: playbook_name} 형식을 사용해서 참조됩니다.
  • 특정 도구를 사용하기 위한 안내. 도구는 ${TOOL: tool_name} 형식을 사용해서 참조됩니다.
  • 사용자를 Dialogflow 흐름으로 연결하는 안내. 흐름은 ${FLOW: flow_name} 형식을 사용해서 참조됩니다.

각 단계 설명은 "- "로 시작하며 들여쓰기를 사용해서 하위 단계를 정의할 수 있습니다.

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

- greet the customer and ask them how you can help.
    - If the customer wants to book flights, route them to ${PLAYBOOK: flight_booking}.
    - If the customer wants to book hotels, route them to  ${PLAYBOOK: hotel_booking}.
    - If the customer wants to know trending attractions, use the ${TOOL: attraction_tool} to show them the list.
- help the customer to pay for their booking by routing them to ${FLOW: make_payment}.

플레이북 매개변수

플레이북은 명시적으로 정의된 매개변수를 사용하여 컨텍스트 정보를 수락하고 내보낼 수 있습니다. 매개변수는 플레이북을 만든 후 매개변수 탭을 사용하여 플레이북별로 정의됩니다.

플레이북 매개변수에는 유형, 이름, 설명이 포함됩니다. 매개변수를 정의한 후 플레이북 예시에 이를 사용하여 매개변수 값을 안정적으로 읽고, 쓰고, 사용하는 방법을 플레이북에 표시합니다. 자세한 내용은 플레이북 예시 입력 및 출력매개변수 전달을 참조하세요.

플레이북 입력 매개변수

입력 매개변수를 통해 플레이북에서 흐름 및 기타 플레이북에서 전달된 값을 사용할 수 있습니다. 예를 들어 플레이북에서 사용자가 원하는 이름을 매개변수로 수신하여 사용자에게 개인적인 감사 인사를 전하는 데 이를 사용할 수 있습니다. 또는 플레이북에서 주문 식별자를 매개변수로 수신하여 도구로 주문 세부정보를 가져오는 데 이를 사용할 수 있습니다.

플레이북 입력 매개변수는 플레이북별로 정의되며, 플레이북은 기본적으로 다른 Dialogflow CX 매개변수 유형을 볼 수 없습니다. 흐름이 플레이북으로 전환될 때 대상 플레이북에 이름이 같은 입력 매개변수가 있는 경우 페이지 및 세션 매개변수가 플레이북에 전파됩니다. 전환 중에 흐름에서 플레이북으로 정보를 전달하려면 전환 전에 존재하는 세션 또는 페이지 매개변수와 동일한 이름으로 플레이북 입력 매개변수를 정의합니다.

입력 매개변수 값이 플레이북 작업에 미치는 영향을 제어하는 예시를 만듭니다. 예를 들어 에이전트가 사용자를 참조하는 방식에 입력 매개변수가 영향을 미쳐야 하는 경우 매개변수 값을 정의하는 예시를 만들고 예시 내의 발화 작업에 동일한 값을 사용합니다. 자세한 내용은 매개변수 전달을 참조하세요.

플레이북 출력 매개변수

출력 매개변수를 사용하면 플레이북이 다른 흐름 또는 플레이북에서 사용할 정보를 내보낼 수 있습니다. 예를 들어 플레이북에서 사용자로부터 주문 번호를 수집하여 출력 매개변수를 통해 내보낼 수 있습니다. 또는 플레이북에서 도구를 사용하여 출력 매개변수를 통해 항공편을 예약하고 확인 번호를 내보낼 수 있습니다.

플레이북이 각 출력 매개변수 값을 결정하는 방식을 제어하는 예시를 만듭니다. 예를 들어 확인 번호를 나타내는 출력 매개변수가 도구 사용의 출력에서 값을 도출해야 하는 경우 도구 사용의 출력이 플레이북 출력 매개변수의 값과 일치하는 예시를 만듭니다.

매개변수 전달

흐름과 달리 플레이북은 특정 구문을 사용한 매개변수 삽입을 지원하지 않습니다. 대신 플레이북은 지침 및 퓨삿 프롬프트 예시를 사용하여 매개변수 값을 사용할 방법과 매개변수 값을 지정할 때 값을 결정하는 방법을 결정합니다.

다음 플레이북을 사용하는 이벤트 티켓 판매용으로 설계된 에이전트가 있다고 생각해 보세요.

  1. Ticket ordering이라는 플레이북은 Ticket sales API라는 도구를 사용하여 주문합니다.
    1. 이 플레이북은 유형이 number이고 이름이 event_id인 입력 매개변수를 수락합니다.
    2. Ticket sales API 도구는 event_id가 포함된 요청을 기대합니다.
  2. Event selection이라는 플레이북에서는 사용자의 이벤트 선택을 도운 후 티켓을 구매할 수 있도록 매개변수 event_id를 사용하여 Ticket ordering으로 라우팅합니다.

이 예시에서 event_idEvent selection에서 Ticket ordering으로, 그리고 Ticket ordering에서 Ticket sales API로 안정적으로 전달되기 위해서는 여러 예시가 필요합니다.

Ticket ordering 플레이북에는 다음과 같은 여러 예시가 포함되어야 합니다.

  • 입력 매개변수 event_id가 예시마다 다른 몇 가지 현실적인 값으로 지정됩니다.
  • 입력 매개변수에 지정된 것과 동일한 현실적인 event_id 값을 포함하는 요청 본문에 도구 사용 작업을 포함합니다.

Event selection 플레이북에는 다음과 같은 여러 예시가 포함되어야 합니다.

  • 사용자가 예시마다 다른 몇 가지 현실적인 event_id가 있는 이벤트를 선택하는 사용자 발화를 포함합니다.
  • event_id 매개변수를 사용자 선택으로 결정된 것과 동일한 현실적인 event_id로 설정하는 Ticket ordering의 플레이북 호출을 포함합니다.

예시 추가 외에 플레이북 단계, 플레이북 목표 또는 도구 세부정보에 매개변수 사용 방법을 설명하는 구체적인 지침을 추가해 보세요. 예를 들어 플레이북 Ticket ordering에는 다음 단계가 포함되어 있습니다.

- Use parameter event_id to send a buy_tickets request with ${TOOL: Ticket sales API}

설명된 예시와 지침을 통해 Event selection 플레이북은 사용자의 선택에 따라 event_id를 올바르게 결정하고 이를 event_id라는 입력 매개변수로 Ticket ordering playbook에 전달합니다. 그런 다음 Ticket ordering은 요청 본문에서 동일한 event_idTicket sales API에 전달합니다. 플레이북은 매개변수 사용 방법을 추론하는 데 도움이 되는 고유한 매개변수 값을 가진 예시를 사용합니다.

플레이북 예시

각 플레이북에는 하나 이상의 예시가 포함됩니다. 이러한 예시는 대화 및 에이전트가 수행하는 작업을 포함하여 최종 사용자와 에이전트 사이의 샘플 대화입니다. 이것들은 실제로 LLM에 대한 퓨샷 프롬프트 예시로 사용됩니다.

콘솔은 작업을 입력할 수 있는 인터페이스를 제공합니다. 예를 들면 다음과 같습니다.

예시 항목 스크린샷

예시 입력 요약 및 출력 요약

입력 및 출력 매개변수 외에도 플레이북에서 다른 플레이북과 정보를 교환하기 위해 입력 요약을 수신하고 출력 요약을 내보낼 수 있습니다. 요약은 플레이북 간에 추상적인 컨텍스트 정보를 전달하는 데 유용한 반면, 매개변수는 플레이북 간에 구조화되고 잘 정의된 필드를 전달하는 데 더 유용합니다. 매개변수는 흐름과 플레이북 간에 데이터를 교환하는 유일한 방법입니다.

관련 입력 요약을 예시에 추가하면 플레이북이 조건부로 런타임에 입력 요약에 따라 작업을 조정합니다. 예시 대화에 대한 관련성 높은 정확한 세부정보를 포함한 출력 요약을 추가하여 플레이북에 요약해야 하는 세부정보가 무엇인지 표시합니다.

예시 입력 및 출력 매개변수

플레이북이 입력 또는 출력 매개변수를 정의하는 경우 입력 요약 및 출력 요약 외에 플레이북의 예시도 모두 이러한 입력 또는 출력 매개변수를 정의하여 언어 모델에서 매개변수 값을 안정적으로 사용하는 방법을 추론하도록 도와야 합니다.

2개의 입력 매개변수와 1개의 출력 매개변수가 있는 이 플레이북과 같이 플레이북의 각 예시에서 플레이북에 정의된 각 매개변수의 값을 지정하고 사용해야 합니다.

입력 및 출력 매개변수가 채워진 예시의 스크린샷

예시 플레이북 출력 상태

만드는 예시마다 예시 대화의 종료 상태를 가장 잘 나타내는 플레이북 상태를 선택합니다.

  • OK: 플레이북의 목표를 달성했습니다.
  • CANCELLED: 대화 상황으로 인해 목표를 달성하지 못한 채 플레이북이 중지되었습니다. 예를 들어 원하는 것에 대한 생각이 바뀐 사용자가 대화에 포함되어 있는 경우에 이 상태가 적절할 수 있습니다.
  • FAILED: 오류 또는 처리할 수 없는 상황으로 인해 플레이북이 목표를 달성하지 못한 채 중지되었습니다. 예를 들어 도구 호출 중에 네트워크 문제로 인해 목표를 달성할 수 없는 경우 이 상태가 적절할 수 있습니다.
  • ESCALATED: 사용자가 상담사에게 에스컬레이션을 요청하여 플레이북이 목표를 달성하지 못한 채 중지되었습니다.

가져오기 전략

가져오기 전략은 각 예시가 플레이북의 프롬프트에 포함되는지 여부를 제어합니다.

  • DEFAULT: 프롬프트가 토큰 한도에 가까워지면 이 예시가 생략될 수 있습니다.
  • STATIC: 예시가 항상 포함됩니다.
  • NEVER: 예시가 프롬프트에 포함되지 않았습니다. 이 예시는 플레이북의 성능에 영향을 주지 않습니다.

플레이북 만들기

플레이북을 만들려면 다음 안내를 따르세요.

  1. 왼쪽 탐색 메뉴에서 생성형 리소스를 선택합니다.
  2. 플레이북을 클릭합니다.
  3. 새로 만들기를 클릭합니다.
  4. 위에 설명된 대로 데이터를 제공합니다.

기본 플레이북

생성형 에이전트를 만들면 기본 플레이북이 자동으로 생성됩니다.

기본 플레이북은 대화의 시작점이므로 다른 플레이북과 몇 가지 중요한 차이점이 있습니다.

  • 기본 플레이북에는 이전 대화 차례에 대한 요약이 수신되지 않습니다.
  • 기본 플레이북은 입력 매개변수를 정의하거나 수신할 수 없습니다.

플레이북 버전

변경할 수 없는 플레이북 스냅샷인 플레이북 버전을 저장할 수 있습니다.

플레이북 버전을 저장하려면 다음 안내를 따르세요.

  1. 콘솔에서 플레이북을 로드합니다.
  2. 버전 기록을 클릭합니다.
  3. 버전 만들기를 클릭합니다.
  4. 버전 이름을 제공하고 저장을 클릭합니다.

버전 기록을 보려면 다음 안내를 따르세요.

  1. 콘솔에서 플레이북을 로드합니다.
  2. 버전 기록을 클릭합니다.
  3. 버전 기록 보기를 클릭합니다.
  4. 오른쪽에 버전 기록 패널이 열립니다. 각 버전을 클릭하여 콘텐츠를 볼 수 있습니다.

도구

플레이북 단계는 해당 단계를 수행하는 데 사용해야 하는 도구를 참조할 수 있습니다. 플레이북에 사용되는 각 도구에 대해 OpenAPI 스키마를 제공하여 도구 세부정보를 제공합니다.

현재 HTTP API 호출 또는 데이터 스토어 쿼리가 지원됩니다.

세션 ID를 경로 또는 쿼리 매개변수로 제공할 수 있습니다. 예를 들면 다음과 같습니다.

parameters:
  - name: petId
    in: path
    description: ID of pet that needs to be updated
    required: true
    schema:
      $ref: '@dialogflow/sessionId'
  - name: petName
    in: query
    description: ID of pet that needs to be updated
    required: true
    schema:
      $ref: '@dialogflow/sessionId'

HTTP API 호출에는 다음 제한사항이 적용됩니다.

  • 세션 ID를 제외하고 쿼리 매개변수는 지원되지 않습니다.
  • 요청 및 응답 본문은 비어 있거나 JSON이어야 합니다.
  • oneOf와 같은 고급 스키마 기능은 지원되지 않습니다.

다음 예시는 데이터 스토어를 참조하는 방법을 보여줍니다.

"dataStoreConnections": [
    {
       "dataStoreType": "DATA_STORE_TYPE",
       "dataStore": "projects/PROJECT_ID/locations/LOCATION_ID/collections/default_collection/dataStores/DATA_STORE_ID"
    }
]

DATA_STORE_TYPE 값은 다음 중 하나일 수 있습니다.

  • PUBLIC_WEB: 공개 웹 콘텐츠가 포함된 데이터 저장소입니다.
  • UNSTRUCTURED: 구조화되지 않은 비공개 데이터가 포함된 데이터 저장소입니다.
  • STRUCTURED: 구조화된 데이터(예: FAQ)가 포함된 데이터 저장소입니다.

다음 예시는 HTTP API 도구를 참조하는 방법을 보여줍니다.

openapi: 3.0.2
info:
  title: Search Attraction Tool
  description: >-
    This API search for attractions for travel purposes
  version: 1.0
servers:
  - url: https://search-attraction.app
paths:
  /search:
    post:
      summary: Search for attractions given a query
      operationId: search
      requestBody:
        description: Query
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Query'
      responses:
        '200':
          description: Successfully got results (may be empty)
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: string
components:
  schemas:
    Query:
      required:
        - text
      type: object
      properties:
        text:
          type: string

권장사항

다음 권장사항은 강력한 에이전트를 빌드하는 데 도움이 됩니다.

각 플레이북에 대한 하나 이상의 예시

플레이북마다 하나 이상의 예시가 있어야 합니다. 예시가 충분하지 않으면 플레이북이 예기치 않은 동작을 일으킬 수 있습니다. 에이전트가 예상한 방식으로 응답하지 않거나 작동하지 않으면 예시가 누락되었거나 잘못 정의된 것일 수 있습니다. 예시를 개선하거나 새 예시를 추가해 보세요.

지침 및 예시의 정밀도

명확하고 설명적인 지침 단계를 작성하면 도움이 되지만 실제로 에이전트 동작의 정확성을 결정하는 것은 예시의 품질과 수량입니다. 즉, 완벽하게 정확한 지침을 작성하는 것보다 예시를 철저하게 작성하는 데 더 많은 시간을 할애하세요.

도구 스키마 operationId 필드

도구에 대한 스키마를 정의할 때는 operationId 값이 중요합니다. 플레이북 지침에서 이 값을 참조합니다. 다음은 이 필드의 이름 지정 권장사항입니다.

  • 문자, 숫자, 밑줄만 사용할 수 있습니다.
  • 스키마에 설명된 모든 operationId에서 고유해야 합니다.
  • 제공된 기능을 반영한 의미 있는 이름이어야 합니다.

도구 스키마 검증

도구 스키마를 검증해야 합니다. Swagger Editor를 사용하여 openAPI 3.0 스키마 구문을 확인할 수 있습니다.

Bard를 사용하여 스키마 생성

Bard는 자동으로 스키마를 생성할 수 있습니다. 예를 들어 'Google Calendar용 openAPI 3.0 스키마 예시를 만들어 줘'라고 입력해 보세요.

집중적인 플레이북

크고 복잡한 플레이북을 만들지 마세요. 각 플레이북은 구체적이고 명확한 태스크를 수행해야 합니다. 복잡한 플레이북의 경우 더 작은 하위 플레이북으로 나누는 것이 좋습니다.

테스트 사례

기존 테스트 사례 기능이 플레이북을 지원하도록 향상되었습니다.

필수 예상 테스트 사례 결과 필드가 추가되어 플레이북 예시 형식으로 작업 목록을 제공합니다. 이러한 테스트 사례는 작업이 예상대로 수행되었는지 확인합니다.

플레이북 또는 플레이북 버전을 볼 때는 플레이북 데이터 위에 있는 테스트 사례 탭을 클릭하여 테스트 사례 결과를 확인하고 필요에 따라 테스트 사례를 실행할 수 있습니다.

또한 여러 플레이북 버전에 대해 테스트 사례 결과를 비교할 수 있습니다. 테스트 사례를 선택한 다음 비교를 클릭합니다.

에이전트의 모든 테스트 사례를 보려면 왼쪽 탐색 메뉴에서 테스트 사례를 클릭합니다.

대화 기록

기존 대화 기록 기능이 플레이북을 지원하도록 향상되었습니다.

도구 실행, 플레이북 호출, 플레이북 에이전트에서 흐름 호출에 대한 정보가 추가되었습니다.