> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryvox.co/llms.txt
> Use this file to discover all available pages before exploring further.

# 대화 노드

> 사용자와의 대화를 처리하는 대화 노드를 설정하는 방법을 안내합니다.

대화 노드는 대화 흐름에서 가장 일반적으로 사용되는 노드 타입입니다. 사용자와 대화하는 노드입니다. 이 노드 내에서 에이전트는 어떤 함수도 호출하거나 액션을 수행하지 않습니다.

에이전트는 하나의 노드 내에서 여러 턴의 대화를 진행할 수 있으므로, 에이전트가 말해야 하는 모든 문장에 대해 새로운 대화 노드를 생성할 필요는 없습니다. 로직이 분기되거나 지시사항이 너무 길어질 때 노드를 분리하는 것이 좋습니다.

## 프롬프트 타입

노드 내에서 에이전트가 따라야 할 지시사항을 작성하는 방법을 선택할 수 있습니다:

<CardGroup cols={2}>
  <Card title="동적 프롬프트" icon="pen">
    에이전트가 동적으로 대화 내용을 생성할 수 있도록 프롬프트를 작성합니다.
  </Card>

  <Card title="고정 발화" icon="comment">
    에이전트가 먼저 말할 고정된 문장을 설정합니다. 이후 같은 노드에 머무를 경우,
    설정된 고정 문장을 기반으로 내용을 동적으로 생성합니다.
  </Card>
</CardGroup>

## 반복 조건

반복 조건은 다음 노드로 이동하려면 반드시 충족해야 하는 조건입니다. 조건이 충족되지 않으면 에이전트가 이 노드에 머무르며 조건 달성을 유도합니다.

### 작성 방법

반복 조건은 자연어로 작성하며, 여러 조건이 있을 경우 조건별로 나열합니다. 하나의 조건만 충족되면 다음 노드로 이동하도록 OR 구조로 작성하는 것이 일반적입니다.

<Accordion title="필수 정보 수집">
  고객의 이름과 본인 확인 정보를 수집해야 하는 노드:

  ```text theme={null}
  다음 조건 중에 하나가 만족 되어야 합니다.

  - 조건 1) 고객이 성함과 휴대전화 뒤 네자리를 말함
  - 조건 2) 고객이 주문을 하지 않았다고 함
  ```
</Accordion>

<Accordion title="동의 확인 + 재확인 횟수 제한">
  고객 동의를 받되, 반복 거부 시 무한 루프를 방지하는 패턴:

  ```text theme={null}
  다음 조건 중에 하나가 만족 되어야 합니다.

  - 조건 1) 고객이 동의함
  - 조건 2) 고객이 동의하지 않음 + 3회 이상 재확인을 함
  ```
</Accordion>

<Accordion title="변수 매칭 확인">
  동적 변수의 값과 고객 응답을 대조하는 패턴:

  ```text theme={null}
  다음 조건 중에 하나가 만족 되어야 합니다.

  - 조건 1) 고객이 답한 학습자 성별이 {{learner_gender}}과 일치함
  - 조건 2) 불일치 + 4회 이상 재확인을 함
  ```
</Accordion>

<Accordion title="예약 정보 수집">
  병원 예약처럼 여러 항목을 한꺼번에 수집해야 하는 경우:

  ```text theme={null}
  환자가 이름, 예약 날짜와 시간을 명확하게 제시할 때까지 반복합니다.
  ```
</Accordion>

<Tip>
  거부/불일치 시 재확인 횟수 제한을 두면 고객이 반복 질문에 불쾌감을 느끼는 것을 방지할 수 있습니다.
</Tip>

## 노드별 지식 베이스

이 노드에 특정 지식 베이스를 연결할 수 있습니다. 연결된 지식 베이스는 이 노드에서 대화할 때만 참조되므로, 노드의 주제에 맞는 정보만 제공하여 응답 정확도를 높일 수 있습니다.

<Info>
  지식 베이스 생성 및 관리 방법은 [지식 베이스 개요](/docs/build/knowledge/overview)를 참조하세요.
</Info>

## 노드 설정

### 글로벌 노드

이 노드를 글로벌 노드로 활성화할 수 있습니다. 글로벌 노드로 설정하면 어떤 노드에서든 이 노드로 전환할 수 있습니다. 자세한 내용은 [글로벌 노드](../advanced/global-node)에서 확인하세요.

### 응답 건너뛰기

활성화하면 사용자 응답을 기다리지 않고 에이전트가 말을 마친 후 즉시 다음 노드로 이동합니다. 전환에 연결할 수 있는 에지가 하나만 생기며, 에이전트가 면책 조항과 같은 내용을 말하고 사용자의 응답 없이 다음 노드로 넘어가야 할 때 유용합니다.

### 끼어들기 허용

에이전트 발화 중 사용자가 끼어들 수 있는지를 설정합니다. 비활성화하면 에이전트가 발화를 완료할 때까지 사용자의 입력을 무시합니다.

### 노드별 LLM 오버라이드

이 노드에서 다른 LLM 모델을 사용할 수 있습니다. 글로벌 설정의 기본 모델 대신 이 노드에 특화된 모델을 지정하여, 특정 대화 시나리오에 더 적합한 모델을 선택할 수 있습니다.

## 전환 조건

다음과 같은 경우에 전환조건을 판단하여 전환여부를 결정합니다:

* 사용자가 말을 마쳤을 때
* '응답 건너뛰기'가 활성화되어 있고 에이전트가 말을 마쳤을 때

## 전환 조건 예시

실제 운영에서 자주 사용되는 전환 조건 패턴입니다. 전환 조건은 자연어로 작성하며, 각 조건이 명확하게 구분되도록 작성하는 것이 중요합니다.

### 통화 가능 여부 확인

아웃바운드 전화에서 고객의 통화 가능 여부를 먼저 확인하는 패턴입니다.

```text theme={null}
- 통화 가능: 고객이 '네', '괜찮아요', '가능해요' 등 통화 가능을 말한 경우.
- 통화 불가능: 고객이 '지금은 어려워요' 또는 '나중에 연락 주세요' 등 통화 불가를 명확히 말한 경우.
- 강한 거절 종료: 고객이 '관심 없어요' 또는 '전화하지 마세요' 등 통화를 확정 거절한 경우.
- 본인 아님: 고객이 '저 아니에요' 또는 '잘못 거셨습니다'처럼 본인 아님을 명확히 말한 경우.
```

<Tip>
  통화 가능/불가 외에 **강한 거절**과 **본인 아님**을 별도 분기로 두면, 각 상황에 맞는 종료 멘트를 설정할 수 있습니다.
</Tip>

### 의사 결정 분기

고객의 의향이나 결정을 확인하는 패턴입니다.

```text theme={null}
- 참여 의향 있음: 고객이 참여하겠다고 말한 경우.
- 참여 의향 없음: 고객이 참여하지 않겠다고 명확히 말한 경우.
- 고민 중: 고객이 결정을 보류하거나 더 생각해보겠다고 말한 경우.
```

### 도움 요청 분기

고객이 도움을 원하는지에 따라 분기하는 패턴입니다.

```text theme={null}
- 유저가 도움을 요청한 경우
- 유저가 도움이 필요하지 않은 경우
```

### 본인 인증 (DTMF)

고객이 입력한 DTMF 번호로 본인 확인을 하는 패턴입니다.

```text theme={null}
- 고객이 입력한 DTMF 번호 6자리가 {{생년월일}}과 일치한다면
- 고객이 동의한다면
```

***

<Accordion title="연관 검색어">
  대화 노드, conversation node, 반복 조건, 프롬프트 타입, 고정 발화, 응답 건너뛰기, 끼어들기
</Accordion>
