n8n 중급 응용편 : 서브워크플로우를 툴로 사용하기

n8n 중급 응용편 : 서브워크플로우를 툴로 사용하기

안녕하세요. 디디입니다.
텔레그램 챗봇을 만들하면서, 지난 18기 초급 과정에서 만들었던 유튜브자막 요약 워크플로우를 서브워크플로우로서 AI AGENT에서 툴로 사용하는 MULTI AGENT 형태를 간단하게 구성해 보았습니다.

서브워크플로우 구성

유튜브 자막 요약 워크플로우는 Youtube Transcript 커뮤니티 노드를 사용하고, 다양한 유뷰브 주소에서 정확하게 videoId 를 추출 할 수 있도록 앞단에 코드 노드를 배치합니다.

// Mode: Run Once for All Items

function pickYouTubeId(s) {
  if (!s) return null;

  const patterns = [
    /(?:youtu\.be\/)([A-Za-z0-9_-]{11})/,        // youtu.be/<id>
    /(?:\bv=)([A-Za-z0-9_-]{11})/,               // watch?v=<id>
    /(?:\/shorts\/)([A-Za-z0-9_-]{11})/,         // /shorts/<id>
    /(?:\/embed\/)([A-Za-z0-9_-]{11})/,          // /embed/<id>
    /(?:\/v\/)([A-Za-z0-9_-]{11})/,              // /v/<id>
    /(?:\/live\/)([A-Za-z0-9_-]{11})/            // /live/<id>
  ];

  // 직접 매칭 시도
  for (const re of patterns) {
    const m = s.match(re);
    if (m) return m[1];
  }

  // 혹시 여러 URL이 들어있는 경우 대비
  const urls = s.match(/https?:\/\/\S+/g) || [];
  for (const u of urls) {
    for (const re of patterns) {
      const m = u.match(re);
      if (m) return m[1];
    }
  }

  return null;
}

// 모든 입력 아이템 순회
return $input.all().map(item => {
  const msg = item.json.message || {};
  const raw =
    (msg.link_preview_options?.url ||
     msg.text ||
     item.json.query ||
     "").trim();

  const videoId = pickYouTubeId(raw);

  return {
    json: {
      ...item.json,
      sourceUrl: raw,
      videoId
    }
  };
});

또 하나의 서브워크플로우는 미국주식 분석 에이전트가 동작하는 것으로 구성해보았습니다.

신경망의 다양한 단계를 보여주는 다이어그램

지난번 여러 데이터 수집 과정을 진행하며,

https://api.chart-img.com/v2/tradingview/advanced-chart/storage 여기에서는 차트이미지를
https://api.twelvedata.com/time_series 여기에서는 실제 주가 정보를 수집하게 하였고요.

두가지 정보를 잘 머지하여 AI AGENT가 알아먹기 쉬운 형태로 전달 합니다.

서브워크플로우는 When Excuted by Another Wokrflow 로 시작해, set 노드로 결과를 돌려주어야 합니다.

메인워크플로우의 AI AGENT의 툴에서 Call n8n Workflow Tool 을 연결하면 다른 워크플로우를 도구로 사용할 수 있습니다.

Call Nin 워크플로 도구를 보여주는 화면

메인워크플로우의 AI AGENT는 어떤 요청에 어떤 툴을 사용해야하는지 시스템프롬프트에 입력되고, 그에 따라 적절할 툴을 사용하여 응답하게 됩니다.

중국어 텍스트가 포함된 페이지의 스크린샷

결과와 배운 점

여러 기능을 하나의 워크플로우에 넣기 보다는 특정 기능을 전문적으로 수행할 수 있는 SUB AGENT를 별도의 워크플로우로 구성하고 여러 다른 워크플로우에서 불러다 쓸 수 있게 구성함으로써 워크플로우의 복잡도가 줄고, 다양한 확장을 더 쉽게 할 수 있는 구조의 챗봇을 만들었습니다.

감사합니다.

2
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요