# Conversational Retrieval Tool Agent

**Conversational Retrieval Tool Agent** 노드는 사용자 질문에 대해 **외부 문서에서 정보를 검색**하고, 필요 시 도구를 호출해 대화형으로 응답하는 고급 에이전트입니다. 벡터 검색 기반의 컨텍스트를 참고하며, 툴 호출 기능이 내장되어 있어 **문서 기반 Q\&A + 도구 활용**을 함께 수행할 수 있습니다. &#x20;

***

### 주요 기능

* **문서 기반 질의응답**: 벡터 검색기를 통해 문서에서 컨텍스트를 가져와 응답 생성
* **도구 호출 자동화**: 사용자 질문에 따라 적절한 도구(계산기, 검색기 등)를 자동 호출
* **대화형 메모리 연동**: Memory 노드를 통해 맥락을 기억하고 이어지는 질의 처리
* **LLM 중심 판단 흐름**: Tool Calling Chat Model을 통해 판단 → 검색 → 실행 → 응답 흐름 구성

<figure><img src="https://2658622170-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfkjMyYilRWTdXwhLDYHx%2Fuploads%2Fgit-blob-52de027777e8061d0270aec5ca7e9a862d16229c%2F%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202025-05-08%20163803.png?alt=media" alt=""><figcaption><p>WindyFlo Conversational Retrieval Tool Agent</p></figcaption></figure>

<figure><img src="https://2658622170-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfkjMyYilRWTdXwhLDYHx%2Fuploads%2Fgit-blob-e71d30a1ed2c4727581c96ec447c0a594dde54e0%2Fimage%20(65).png?alt=media" alt=""><figcaption><p>WindyFlo Conversational Retrieval Tool Agent Parameters</p></figcaption></figure>

### 입력값 (Inputs)

| 항목                          | 설명                                             | 필수 여부 |
| --------------------------- | ---------------------------------------------- | ----- |
| **Tools**                   | 에이전트가 사용할 수 있는 도구 리스트입니다. 예: 검색, 계산기, 문서 요약기 등 | 필수    |
| **Memory**                  | 대화 흐름과 질의 맥락을 유지하기 위한 메모리 노드                   | 필수    |
| **Tool Calling Chat Model** | 도구 사용 여부 및 판단을 내리는 LLM 모델                      | 필수    |
| **Input Moderation**        | 유해하거나 부적절한 질의를 필터링할지 여부                        | 선택    |
| **Vector Store Retriever**  | 문서 기반 질의 응답을 위한 벡터 검색 노드 (컨텍스트 제공)             | 필수    |

***

### 파라미터 (Parameters)

| 항목                 | 설명                                                                                                                                                                                                       |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **System Message** | <p>LLM에게 주어지는 역할 안내 프롬프트입니다. <strong>반드시 <code>{context}</code> 변수 포함</strong> 필요.<br>예시:<br>“I want you to act as a document that I am having a conversation with... Using the provided context...”</p> |
| **Max Iterations** | 툴 사용과 판단을 반복할 수 있는 최대 횟수입니다. (예: 3\~5 권장)                                                                                                                                                                |

***

### 출력값 (Outputs)

| 출력 항목             | 설명                                |
| ----------------- | --------------------------------- |
| **AgentExecutor** | 문서 기반 응답 + 툴 호출 결과가 통합된 최종 응답입니다. |

***

### 활용 예시

1. **지식 기반 고객지원 챗봇**\
   → “환불은 어떤 절차로 진행되나요?”\
   → 벡터 검색으로 문서 내용 참조 + 계산기 호출로 환불액 산출
2. **회사 정책 문서 기반 Q\&A**\
   → “출장비는 얼마나까지 청구 가능한가요?”\
   → 문서 내 정책 검색 → 관련 내용만 요약 제공
3. **실시간 정보 + 문서 기반 응답 조합**\
   → “지난달 매출 요약해주고, 이번 달 트렌드 검색도 해줘”\
   → CSV 분석 도구 + 실시간 웹 검색 동시 활용

***

### 권장 사용 상황

* 컨텍스트 기반 질문과 도구 사용이 동시에 필요한 경우
* 문서 + 툴 + 대화 흐름을 통합한 고급 에이전트가 필요한 프로젝트
* 정확한 지식 기반 응답과 기능적 작업 처리가 혼합된 시나리오

***

### 주의사항

* System Message에 **`{context}` 변수를 반드시 포함**시켜야 LLM이 문서 내용을 이해하고 응답할 수 있습니다.
* Vector Store는 필수 연결 요소입니다. 연결이 없으면 검색이 작동하지 않습니다.
* 반복 횟수(Max Iterations)는 너무 높게 설정하지 않는 것을 권장합니다.

***

**Conversational Retrieval Tool Agent**는 WindyFlo에서 가장 강력한 에이전트 노드 중 하나로, 사용자의 질문에 문서 기반 정보를 기반으로 응답하면서 동시에 필요한 도구를 실행하여 **최종 목적 지향형 자동화**를 실현합니다.
