멀티 에이전트플로우 상세 사용법
이번 튜토리얼에서는 사용자의 질의를 분석하는 Supervisor 아래에서 협력적으로 동작하여 웹 검색 및 이미지 검색을 수행하는 Multi-Agentflow를 제작합니다.
Multi-Agentflow는 Sequential-Agentflow보다 구현이 쉬우며 고려해야 할 변수가 적지만, 그만큼 섬세한 Action을 조절하는 데에는 한계가 있습니다. 복잡하고 세세한 기능을 수행하는 Agentflow를 제작하고 싶다면 Sequential Agentflow 튜토리얼을 참고하세요.
Multi Agent 만들기
1. 워크플로우 만들기
서비스 > 에이전트 > 워크플로우에서 워크플로우를 생성합니다.

Flowise Step 추가에서 Agentflow를 선택해 flowchart를 추가합니다.

2.1. Multi Agentflow 구성하기
flowchart 좌측 상단에 + 버튼을 눌러 노드를 추가할 수 있습니다.
다음과 같이 노드를 구성합니다.

1. ChatMNC
Agent의 답변 생성에 사용할 모델을 정의합니다. 본 튜토리얼에서는 Llama 4 Scout 모델이 사용되었습니다.
2. Agent Memory
Agent들에게 이전 대화 기록을 저장할 DB를 제공합니다.
3. Supervisor
사용자의 질의를 분석하여 알맞는 Worker에게 업무를 할당하는 감독관 역할을 수행하는 Agent입니다. Recursion limit을 직접 조절할 수 있습니다.
프롬프트는 다음과 같이 작성하였습니다.
<주의> 작업을 마쳤다고 판단하면 'FINISH'라고 대답하도록 프롬프트를 작성해야 불필요한 루프를 최소화할 수 있습니다.

Summarization 옵션을 활성화 하면 여태까지의 Worker의 수행 내역을 바탕으로 종합된 의견을 제출합니다. 비활성화 되어있다면 마지막 Worker의 출력을 답변으로 제출합니다.

4. Worker
Supervisor에게 지시받은 업무를 수행하는 Agent입니다. 필요에 따라 Tool을 사용할 수 있으며, 결과를 사용자에게 내보냅니다. Max Iteration을 직접 조절할 수 있습니다.
본 튜토리얼에서는 Web Searcher와 Image Searcher 총 두가지 Worker을 정의합니다.
[Web Searcher]

[Image Searcher]

5. Custom Tool
사용자가 정의한 기능을 수행하는 도구입니다. Javascript 코드로 작성할 수 있으며, Description 및 INPUT SCHEMA 작성을 통해 LLM이 적절한 변수를 입력해 사용할 수 있습니다.
본 튜토리얼에서는 query를 입력으로 받아 검색 결과를 내보내는 Search API 기반 웹 검색 Tool과 query를 입력으로 받아 제목 및 이미지 링크를 내보내는 Google Image 검색 API 기반 Tool을 정의하여 사용하였습니다.
[Search Tool]
const fetch = require('node-fetch');
// Flowise에서 입력받은 쿼리
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=your_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 '검색결과 없음';
}
})();
[Image Search Tool]
const fetch = require('node-fetch');
const query = $query;
const num = 10; // 기본 검색 수 설정
// Google Custom Search API 키와 CSE ID
const apiKey = "your_api_key";
const cx = "d3af905bcbe0a407a";
// 이미지 검색 파라미터 설정
const imgSize = "large"; // 이미지 크기: "small", "medium", "large", "xlarge"
const imgColorType = "color"; // 색상 유형: "color", "gray"
const safe = "high"; // 안전도 설정: "high", "medium", "off"
const numResults = 10; // 최대 10개까지 검색 가능
// Google Custom Search API 요청 URL 구성
const url = `https://www.googleapis.com/customsearch/v1?searchType=image&imgSize=${imgSize}&imgColorType=${imgColorType}&safe=${safe}&key=${apiKey}&cx=${cx}&q=${encodeURIComponent(query)}&num=${numResults}`;
// 쿼리의 단어들 중 하나라도 title에 포함되는지 확인하는 함수
const isRelatedToQuery = (title, query) => {
const lowerTitle = title.toLowerCase();
const queryWords = query.toLowerCase().split(' '); // 띄어쓰기로 단어 분리
// 쿼리의 단어 중 하나라도 포함되어 있으면 true 반환
return queryWords.some(word => lowerTitle.includes(word));
};
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.items || [];
if (results.length === 0) {
return '검색결과 없음';
}
// 쿼리의 단어 중 하나라도 포함된 이미지들만 필터링
const filteredResults = results.filter(item => {
const title = item.title || '';
const cleanTitle = title.replace(/[\[\]]/g, '').trim();
return isRelatedToQuery(cleanTitle, query);
});
const search_summary = filteredResults.map(item => ({
title: item.title || '',
url: item.link || '',
thumbnail: item.image?.thumbnailLink || ''
}));
return { search_summary };
} catch (error) {
return '검색결과 없음';
}
})();
2.2. Multi Agentflow Test하기
모든 Agentflow의 구성이 끝났다면, Test를 통해 동작을 확인하기 위해 우측 상단의 채팅 아이콘을 클릭해 채팅창을 활성화합니다.

'아이폰 15와 갤럭시 S24에 대해 검색해서 특징을 비교해주고 각각의 이미지를 찾아서 보여줘.'라는 질의를 입력해 Supervisor가 제대로 Routing하는지 Test합니다.

Supervisor는 Web Searcher에게 먼저 최신 정보를 검색하도록 Task를 부여하고, Web Searcher는 할당받은 업무를 Search Tool을 사용하여 수행한 뒤 보고합니다.

최신 정보의 수집이 끝난 후, Supervisor는 Image Searcher에게 아이폰과 갤럭시의 사진을 검색하도록 Task를 부여합니다.

Image Searcher는 할당받은 Task를 Image Search Tool을 사용하여 수행한 뒤 보고합니다.


Supervisor는 업무가 끝났다고 판단할 경우, Finished를 출력해 작업이 끝났음을 알립니다. 최종 Output은 마지막 Worker의 Output이 되며, 사용한 도구들과 그 Output이 나열되어 나타납니다.

Last updated
Was this helpful?