# 멀티 에이전트플로우 상세 사용법 (Flowise 3.0.0)

## 멀티 에이전트플로우 상세 사용법

이번 튜토리얼에서는 state 속성을 활용하여 사용자의 의도에 따라 웹 텍스트 검색 및 이미지 수집을 하는 멀티 에이전트플로우를 제작합니다.\\

## Multi Agent 만들기

### 1. 워크플로우 만들기

* 좌측 탭에서 서비스 > 에이전트 > 워크플로우 선택 후 워크플로우 생성 버튼을 클릭하여 워크플로우를 생성하고 기본 입력 사항을 입력합니다.

<figure><img src="/files/UkK2g68r5RgiDM3wgfyo" alt=""><figcaption></figcaption></figure>

* 입력사항을 입력하고 Flowise 단계 추가 버튼을 선택한 뒤 Agentflow 3.0.0을 선택해 flowchart를 워크플로우에 추가합니다

<figure><img src="/files/asAaWBULpSMzGPtyuVUG" alt=""><figcaption></figcaption></figure>

### 2. 멀티 에이전트플로우(Multi-Agentflow) 구성하기

* flowchart의 좌측 상단 + 버튼을 눌러 노드를 추가할 수 있습니다.
* 모든 노드는 더블클릭을 통하여 설정값을 지정할 수 있습니다.
* 다음과 같이 노드를 구성합니다.\\

<figure><img src="/files/MVgRgmFXSmfa2AAvBH19" alt=""><figcaption></figcaption></figure>

노드 구성은 다음과 같습니다.

#### 2.1. Start Node

워크플로우를 시작하는 노드입니다.\
state에

```
next 
WEB :에이전트 결과를 담을 WEB
IMAGE :이미지 에이전트 결과를 담을 IMAGE 
```

총 3가지 state를 설정하였습니다.

#### 2.2. LLM Node

Model로 ChatMNC - qwen3모델을 활용하였습니다. 활용한 프롬프트는 아래와 같습니다.

```

    오늘 일자 : 2025.11.06

    당신은 WebSearcher와 ImageSearcher를 관리하는 팀장입니다.

    - WEB: 웹에서 텍스트 정보를 수집. 정보, 설명, 뉴스, 리뷰 등을 찾는 데 적합. 텍스트만 찾음

    - IMAGE: 웹에서 관련 이미지를 검색. 이미지 예시, 제품 사진, 참고용 시각화 자료를 찾는 데 적합.

    사용자의 요청에 따라 작업 순서를 결정하고, 완료되면 FINISH를 선택하세요.
```

오늘 일자의 경우 getCurrentDate 등의 Tool 노드 기능이나 Custom Function을 활용하여 state를 활용해 진행 가능합니다.\\

* **Enable Memory** 토글 활성화 확인
* **Memory Type** : 메모리 유형을 선택 가능합니다. (본 튜토리얼에서는 All Messages를 선택하였으나 추후 딥 리서치 등의 복잡한 워크플로우를 구성할 때는 메모리 타입을 변경하여 활용하거나 state를 활용해 필요한 메모리만 업데이트하여 사용하는 것을 추천합니다.)
* **Return Response** As 설정값을 변경합니다. 기본 User Message로 설정되어 있으나 다음 agent에게 memory로 전달할 때 user요청으로 구분될 수 있어서 **Assistant Message**를 활용합니다.
* **JSON Structured Output**을 설정합니다. 본 튜토리얼에서는 다음과 같이 설정하였습니다.

<figure><img src="/files/OlzktYNyVv3rNiR7I5vH" alt=""><figcaption></figcaption></figure>

```
- Key : output을 통해 state를 업데이트 하거나 다음 노드에 전달하기 위해 설정하는 Key값 입니다.
- Type : 사용하는 상황에 따라 String, String Array, Number, Boolean, Enum, JSON Array 중 하나의 타입을 선택합니다. 본 튜토리얼은 총 3개의 반환값에 따른 Condition 분기가 필요하여 Enum 타입을 선택하였습니다.
- Value(Enum 선택 시 Enum Values) : 반환하는 값을 선택합니다. 본 튜토리얼에서는 IMAGE, WEB, FINISH 총 3종으로 설정하였습니다.
- Description : LLM에게 JSON Structured Output을 작성할 때 어떤 내용을 작성하는 지 지침을 부여합니다.
- Update Flow State : Key값으로 start 노드에서 설정한 next를 선택하고 Value 값으로 output.next를 설정합니다.
```

#### 2.3. Condition Node

설명 : Supervisor에 의해 결정된 state에 따라 어떤 에이전트 또는 플로우를 실행하도록 설정하는 노드입니다.

<figure><img src="/files/NVCGtLLW0QR9CgTS60Si" alt=""><figcaption></figcaption></figure>

* Value 1의 값으로 next 인자를 선택하고 operator는 기본값 Equal을 사용하였습니다. Value2의 값은 Value1과 operator에 따라 True/False 값을 지정하여 조건을 분기하여 활용합니다.\\

#### 2.4. Agent Node(subagents)

설명 : 본 튜토리얼에는 WEB 서치 에이전트, 이미지 서치 에이전트 총 2개 agent를 활용하였습니다.

**2.4.1. WEB 서치 에이전트**

* WEB 서치 에이전트는 Agent 노드와 Tool 기능을 활용하여 구현하였습니다. - Agent 노드에서 활용한 Model 인자는 ChatMNC - qwen3모델을 선택하였습니다. - Add messages 기능을 활용, Role은 System을 설정하여 해당 에이전트 노드에 역할을 부여합니다. 사용한 프롬프트는 아래와 같습니다.

```
            당신은 웹 텍스트 검색자 입니다.

            웹 검색 도구를 활용하여 질문에 대해 자세히 설명하세요.

            이미지를 제외한 텍스트에 대한 내용만 검색하고 정리합니다.

            검색은 2025년을 기준으로 수행하세요.

            반드시 검색 결과를 바탕으로 답변하세요.
```

* 이후 에이전트에게 Add Tools 기능을 활용하여 도구를 부여합니다.
* Tools의 경우 MCP 활용 등 다양한 내장 툴을 사용할 수 있으며 본 튜토리얼은 Custom Tool을 사용하였습니다.
  * Custom Tool을 만드는 방법은 아래를 참조하세요\\

<figure><img src="/files/dHaaJZAYEXqUTVYywQUd" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/SojWNWAhIl5QTmFmfsP8" alt=""><figcaption></figcaption></figure>

Tool의 이름과 설명을 입력합니다. 여기서 작성한 Tool의 설명을 통해 Agent Node에서 도구에 대한 활용 방법을 LLM에게 전달합니다.\\

<figure><img src="/files/PBfZgRQjdbsvYQOOhaWG" alt=""><figcaption></figcaption></figure>

Tool은 JavaScript를 기반으로 작성하며 변수를 정의하여 활용할 수 있습니다. 위 이미지는 도구를 사용할 때 검색어를 query로 사용하기 위해 Property, Type, Description, Required 항목을 설정합니다. Agent Node에서 해당 Property의 Description을 확인하여 도구를 사용하기 때문에 Description을 가능한 명확하게 작성합니다.\\

<figure><img src="/files/sBg9qKqD1QIwWutYgzEp" alt=""><figcaption></figcaption></figure>

JavaScript를 활용하여 작동해야하는 도구용 함수를 작성합니다. 본 튜토리얼에서는

1. TEXT 데이터 검색용 SearchAPI와
2. 이미지 검색을 위한 Pixabay API를 사용하였습니다.\\

\[TEXT 데이터 검색용 SearchAPI와] 코드 예시

```
const fetch = require('node-fetch');
// api_key
const api_key = 'your_API_key';

// Flowise에서 입력받은 쿼리를 JS용 변수로 설정
const query = $query;

// SearchAPI.io의 GET URL 구성
const url = `https://www.searchapi.io/api/v1/search?engine=google&gl=kr&hl=ko&q=${encodeURIComponent(query)}&api_key=${api_key}`;

return (async () => {
    try {
        const response = await fetch(url);

        if (!response.ok) {
            throw new Error(`API 요청 실패: ${response.statusText}`);
        }

        const data = await response.json();

        const results = data.organic_results || [];

        if (results.length === 0) {
            return '검색결과 없음';
        }

        const search_summary = results.map(item => ({
            content: item.snippet || '',
            url: item.link || ''
        }));

        return { search_summary };
    } catch (error) {
        return '검색결과 없음';
    }
})();
```

* LLM 노드(Supervisor 역할의 노드)와 동일하게 Enable Memory 토글은 활성화, Memory Type 설정은 All Messages, Return Response As는 Assistant Message 를 선택합니다.
* Add Update Flow State 버튼을 클릭한 뒤 Key 값으로 최초 Start 노드에서 선택한 WEB의 값을 업데이트 합니다. Value 값으로 output을 활용합니다.

**2.4.2 : 이미지 서치 에이전트**

* 이미지 서치 에이전트는 WEB 서치 에이전트와 동일하게 Agent 노드와 Tool 기능을 활용하여 구현하였습니다.
* Agent 노드에서 활용한 Model 인자는 ChatMNC - qwen3모델을 선택하였습니다.
* Add messages 기능을 활용, Role은 System을 설정하여 해당 에이전트 노드에 역할을 부여합니다. 사용한 프롬프트는 아래와 같습니다.

```
당신은 이미지 검색자 입니다.

사용자 질문을 읽고 이미지 검색 도구를 사용하여 이미지를 첨부하세요.

이미지 검색은 키워드만 활용합니다.

검색은 2025년 11월을 기준으로 수행하세요.
이미지는 반드시 마크다운 문법을 통해 작성하여 사용자가 바로 볼 수 있도록 하세요.

출력 형식 :

- ![title1](image_url1)

- ![title2](image_url2)

- ![title2](image_url2)

```

* 이후 에이전트에게 Add Tools 기능을 활용하여 도구를 부여합니다.
* Tools의 경우 MCP 활용 등 내장 툴을 사용할 수 있으며 본 튜토리얼은 Custom Tool을 사용하였습니다.
* Custom Tool을 만드는 방법은 4.1 WEB 서치 에이전트와 동일합니다. Description을 이미지 검색용 도구로 수정하면 다른 설정까진 동일하며 JavaScript 코드만 아래의 내용을 사용합니다.
* 본 튜토리얼은 Agent Node와 Custom Tools를 활용해 다양한 상호작용이 가능함을 보이기 위해 PixaBay API를 사용하였습니다. 하지만 최신 이미지 등에 대해서 PixaBay API는 포함되지 않을 수 있어 사용 전 다양한 API를 점검하는 것을 추천합니다.\\

**\[이미지 검색을 위한 Pixabay API] 코드 예시**

```
const fetch = require('node-fetch');
const query = $query;

const apiKey = 'your_API_key';
const url = `https://pixabay.com/api/?key=${apiKey}&q=${encodeURIComponent(query)}&image_type=photo&per_page=10`;

const response = await fetch(url);
const data = await response.json();

return data.hits.map(item => ({
    title: item.tags,
    url: item.largeImageURL,
    thumbnail: item.previewURL
}));
```

* LLM 노드(Supervisor 역할의 노드)와 동일하게 Enable Memory 토글은 활성화, Memory Type 설정은 All Messages, Return Response As는 Assistant Message 를 선택합니다.
* Add Update Flow State 버튼을 클릭한 뒤 Key 값으로 최초 Start 노드에서 선택한 IMAGE의 값을 업데이트 합니다. Value 값으로 output을 활용합니다.

#### 2.5. Loop Node

설명 : 에이전트의 업무가 끝나면 Supervisor로 워크플로우를 루프하여 다음 에이전트를 선택하도록 하는 노드입니다.

* Loop 노드의 설정은 Look Back To 인자에 Supervisor 노드를, Max Loop Count는 적절하게 설정합니다. 본 튜토리얼에서는 3을 사용합니다.

#### 2.6. Direct Reply Node

설명 : WEB 서치 에이전트의 결과와 이미지 서치 에이전트의 결과를 종합하여 최종 값을 반환하는 노드입니다.\\

<figure><img src="/files/hq3jj69I2zqltGxsgesn" alt=""><figcaption></figcaption></figure>

참고자료와 같이 state에 기록된 데이터를 이용하여 최종 답변을 출력합니다.\\

* 본 튜토리얼은 다양한 Node의 사용 방법을 확인하기 위해 Direct Reply Node와 state 정보를 활용해서 답변을 유도하였지만 해당 플로우에서 LLM, Agent Node 등 다양한 Node를 활용하여 워크플로우를 보다 풍성하게 구성할 수 있습니다.
* 워크플로우 구성이 완료되면 저장합니다.

### 완성된 멀티 에이전트플로우 테스트 하기

* 수정 버튼을 클릭하여 Flowise 스탭을 활성화합니다.
* 우측 상단의 보라색 말풍선 아이콘을 클릭하여 워크플로우를 테스트 할 수 있습니다.
* 본 튜토리얼에서는 PixaBay API의 활용 가능한 이미지 최신 정보를 확인한 후 다음과 같은 쿼리를 활용하였습니다. : "갤럭시S22의 스펙과 이미지를 보여줘"

<figure><img src="/files/sId6dwg0NJBlGi6KDuJR" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/dVWSwuvTf63xCjWwvh4J" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/723VJI2SsFf4tKLXhKME" alt=""><figcaption></figcaption></figure>

* 위와 같이 워크플로우가 정상적으로 작동하는 것을 확인 할 수 있습니다.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://genos-docs.gitbook.io/default/v1.7.5.1/advanced-tutorials/guides/workflow/create_multi_agentflow/multi_agentflow_flowise300.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
