리서치 에이전트 커스텀 노드 함수
1. Tool - Web Search
Input Variables
$args = {{$flow.state.arguments}} :
LLM노드에서 생성하는 Output 중 <tool_call></tool_call> 안의 툴 사용 arguments 를 state 에 저장해두고 사용합니다. (아래 모든 Tool 이 동일하게 사용합니다)
const fetch = require('node-fetch');
const querystring = require('querystring');
const args = JSON.parse($args);
const search_query = args.search_query;
const num_results = args.num_results;
const apiKey = 'YOUR_API_KEY_HERE';
const searchQuery = async (queryObj) => {
const { q, recency, domains } = queryObj;
const url = `https://www.searchapi.io/api/v1/search`;
let days = 0;
if (recency) {
days = parseInt(recency, 10);
}
let query = null;
let domainStr = '';
if (domains) {
domainStr = domains.map(domain => `site:${domain.trim()}`).join(' OR ');
query = `${q} ${domainStr}`;
} else {
query = q;
}
const params = {
engine: 'google',
api_key: apiKey,
q: query
};
if (num_results) {
params.num = num_results
} else {
params.num = 5
}
if (days > 0) {
params.tbs = `qdr:d${days}`;
}
try {
const response = await fetch(`${url}?${querystring.stringify(params)}`);
if (!response.ok) {
throw new Error(`API 요청 실패: ${response.statusText}`);
}
const data = await response.json();
const results = data.organic_results || [];
const search_summary = results.map(item => ({
title: item.title || null,
url: item.link || null,
snippet: item.snippet || null,
source: item.source || null,
date: item.date || null
}));
return search_summary;
} catch (error) {
return `Error: ${error.message}`;
}
};
return (async () => {
const results = await Promise.all(search_query.map(searchQuery));
const flatResults = results.flat();
const updatedList = flatResults.map((d, idx) => ({
id: idx,
...d
}));
const resultString = updatedList.map(item =>
item.date
? `- ${item.title} (${item.url}): ${item.date} — ${item.snippet} 【search${item.id}】`
: `- ${item.title} (${item.url}): ${item.snippet} 【search${item.id}】`
).join('\n');
return resultString;
})();
2. Tool - Open URL
Open URL Tool 의 경우는 추가 패키지가 필요하기 때문에 MCP Tool 로 구현하여 사용했습니다.
GenOS 메뉴 중
배포 > 도구 > MCP 서버 & MCP 도구메뉴에서 생성하고,Tool노드에서 해당 MCP 도구를 선택하여 사용합니다.아래는 LLM 이 생성한 argument 를 파싱하는 코드입니다.
3. Tool - External APIs
다른 API 도 아래와 동일하게 사용하시면 됩니다.
예시는 DeepSearch API (기업, 금융 데이터)
Last updated
Was this helpful?