본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 05. 12. 20:08

Mastra의 Subagent와 Workflow로 건강검진 연계 레시피 기능 구현 (AI Agent ④)

요약

본 기사는 건강검진 데이터와 개인 프로필 기반의 주간 식단 스케줄 시스템에 '레시피 생성 기능'을 추가한 아키텍처를 소개합니다. 단순히 외부 API를 호출하는 것이 아니라, Mastra의 Subagent와 Workflow 메커니즘을 활용하여 LLM이 전문적인 레시피(식재료, 조리 순서, 비용 등)를 구조적으로 생성하도록 구현했습니다. 특히 역할별로 독립된 에이전트(Chef Agent, Nutritionist Agent)를 분리하고, 워크플로우를 통해 단계적 처리를 관리하며, 캐싱 및 무료 검색 링크 활용 등의 노하우를 적용하여 완성도를 높였습니다.

핵심 포인트

  • **Subagent와 Workflow 기반의 전문 레시피 생성:** 단순 API 호출을 넘어, Mastra의 Subagent와 Workflow를 사용하여 LLM이 식재료 선정, 조리 순서, 비용 등을 포함하는 복잡하고 구조화된 레시피를 생성합니다.
  • **역할 분리를 통한 정확성 확보:** Chef Agent(요리사)와 Nutritionist Agent(영양사) 등 전문 역할별 독립 에이전트를 설계하여 각 기능의 책임 범위와 정확도를 명확히 했습니다.
  • **타입 안전한 단계적 처리 관리:** Workflow를 통해 여러 Subagent나 툴을 순차적으로 호출하며, Zod 스키마로 입력/출력 타입을 정의하여 데이터 전달의 안정성을 확보했습니다.
  • **사용자 경험 최적화 및 비용 절감:** 레시피 캐싱(localStorage) 기능을 도입하여 재호출 시 LLM API 사용 없이 즉시 결과를 제공하고, YouTube 검색 링크 등 무료 방식을 채택하여 운영 효율을 높였습니다.
  • **건강 데이터 연계의 심층성:** 영양사 에이전트가 건강검진 데이터를 참조하여 특정 수치(예: 중성지방)와 관련된 맞춤형 조언을 강조 표시하는 기능을 구현했습니다.

건강검진 데이터를 기반으로 AI가 주간 식단 스케줄을 생성하는 시스템에 레시피 기능을 추가했습니다.

단순히 외부 레시피 API를 호출하는 것이 아니라, Mastra의 Subagent와 Workflow를 활용하여 LLM이 레시피를 생성하는 구성을 취하고 있습니다.

본 기사에서는 그 아키텍처와 구현상의 노하우를 소개합니다.

기존 시스템에서는 건강검진 데이터와 개인 프로필을 기반으로 AI가 주간 식단 및 운동 스케줄을 자동 생성했습니다.

건강검진 데이터 + 개인 프로필
↓
주간 스케줄 자동 생성
...

스케줄 상에는 메뉴 이름이 표시되지만, 사용자가 실제로 요리를 하려고 할 때 다음 정보가 부족했습니다.

  • 어떤 식재료가 필요한지
  • 구체적인 조리 순서
  • 식재료의 비용은 어느 정도인지

스케줄상의 메뉴를 클릭하면, 해당 메뉴의 식재료 선정・분량・비용・조리 순서를 제공하는 레시피 기능을 구현했습니다.

특정 역할에 특화된 독립적인 AI 에이전트입니다. 하나의 큰 에이전트에게 모든 것을 맡기는 것이 아니라, 역할별로 전문 에이전트를 분리함으로써 정확도와 책임 범위를 명확히 할 수 있습니다.

독립적인 에이전트로 설계되었기 때문에 호출하는 곳에 구애받지 않습니다.

Recipe Workflow → Chef Agent를 호출 (레시피 페이지)
Health Check Agent → Chef Agent를 호출 (채팅 화면)
다른 새로운 Workflow → Nutritionist Agent를 호출 (예: 식단 기록 영양 분석)

앞으로 기능을 확장할 때도 기존의 Subagent를 그대로 조합하는 것만으로 대응할 수 있습니다.

여러 처리 단계를 순차적으로 실행하는 메커니즘입니다. 이전 단계의 출력을 다음 단계의 입력으로 전달함으로써, 여러 Subagent나 툴을 연계한 복잡한 처리를 구조적으로 관리할 수 있습니다.

에이전트역할생성 정보
Chef Agent전문 요리사로서 식재료・조리 순서・팁을 생성식재료 목록・분량・비용・순서・YouTube 검색 키워드
Nutritionist Agent관리 영양사로서 영양 균형 및 건강 조언을 생성칼로리・PFC・건강검진 데이터 기반 개별 조언

Health Check Agent의 agents

속성에 Subagent를 등록함으로써 채팅 화면에서도 호출할 수 있습니다.

다만, 등록만 한다고 해서 자동으로 호출되지는 않습니다. LLM은 어디까지나 instructions에 적힌 내용을 기반으로 판단하기 때문에,

스케줄 화면의 메뉴 이름을 클릭하면, Recipe Workflow가 단계별로 Subagent를 순차적으로 호출합니다.

① Chef Agent
메뉴 이름 → 식재료・조리 과정・비용・YouTube 검색 키워드 생성
↓
...
import { createStep, createWorkflow } from '@mastra/core/workflows';
// Step 1: Chef Agent를 호출하는 스텝
const chefStep = createStep({
...

각 스텝의 inputSchema / outputSchema을 Zod로 정의함으로써, 스텝 간 데이터 전달이 타입 안전(type-safe)해집니다.

메뉴 이름을 클릭하여 표시되는 레시피 페이지는 다음 정보를 제공합니다.

  • 영양 정보・총 칼로리
  • 식재료・용량・비용・조리 과정
  • 조리 영상
  • 식재료 모아 구매

Nutritionist Agent는 사용자의 건강 검진 결과를 참조하여 어드바이스를 생성합니다.

어드바이스 문구에 등장하는 건강 검진 항목(LDL・중성지방・혈당 등)은 굵게 강조되어, 어떤 검사 수치와 관련 내용인지 한눈에 알 수 있습니다.

예: "

중성지방 수치가 기준치를 초과했기 때문에, 이 요리의 튀김 기름 양을 줄이는 것을 권장합니다."

과제: AI가 생성한 독창적인 메뉴 이름(예: "지중해풍 후무스")을 그대로 검색해도 YouTube에서 히트하지 않는 경우가 있습니다.

대책: Chef Agent가 YouTube 검색용 키워드(searchKeyword)를 동시에 생성합니다.

메뉴 이름searchKeyword
지중해풍 후무스병아리콩 후무스 만드는 법
...
포맷: 주요 식재료(1~2개) + 조리 방법 + "만드는 법"

영상 획득 방법 선정에 있어 여러 서비스를 비교했습니다.

| 서비스 | 공개 API | 비용 | 채택 여부 및 이유 |
|---|---|
| 클라실 | 없음 | — | 공개 API 없음, 획득 불가 |
| ... | YouTube 검색 링크 | 불필요 | 완전 무료 | ✅ 채택 |

API 키가 필요 없고 완전 무료인 YouTube 검색 링크를 채택했습니다.

같은 메뉴 이름의 레시피는 매번 같은 내용이 생성됩니다. 최초 생성 결과를 localStorage에 캐싱하고, 2회차 이후에는 LLM을 호출하지 않고 즉시 표시합니다.

const CACHE_KEY = `recipe_cache_${menuName}`;
// 캐시가 있으면 즉시 표시 (LLM 호출 없음)
const cached = localStorage.getItem(CACHE_KEY);
...

| 최초 | 2회차 이후 | |
|---|---|
| 표시까지의 시간 | 약 15~30초 | 0초 (즉시 표시) |
| LLM API 비용 | 발생 | 발생하지 않음 |

식재료 목록의 체크박스로 선택한 식재료를 라쿠텐(楽天市場)에서 검색하여 구매 페이지로 이동합니다.

구매 API 선정:</p>

서비스공개 API비용채택 여부 및 이유
Amazon PA-API있음무료어소시에이트 승인 및 매출 실적 필요
...라쿠텐(楽天市場)있음무료

상품을 필터링하는 데는 다음 파라미터를 사용했습니다.

파라미터목적
genreId100227 (식품)식품 외 제외
maxPrice식재료 비용 + ¥1,000고가 상품 제외
hits3표준 순 상위 3개 가져오기

Mastra의 Workflow와 Subagent를 활용하여 건강검진 데이터와 연계된 레시피 기능을 구현했습니다.

포인트구체적인 내용
Subagent 활용Chef Agent와 Nutritionist Agent를 전문 에이전트로 분리. 역할별로 정확도를 높이고, 다른 Workflow나 Health Check Agent에서도 재사용 가능
Workflow를 통한 순차적 실행createWorkflow().then().then()으로 단계를 정의하고, Chef → Health Context → Nutritionist 순서로 실행. 이전 단계의 출력이 다음 단계로 자동 전달됨
건강검진 데이터 연계Nutritionist Agent가 사용자의 검사 수치를 참조하여 조언을 생성. 조언 내 건강검진 항목명은 굵게 하이라이트로 강조
동영상 링크 검색 키워드 구체화AI가 생성한 독창적인 메뉴명을 그대로 검색해도 YouTube에서 히트하지 않기 때문에, Chef Agent가 '주재료 + 조리법 + 만들기' 형식의 searchKeyword를 동시에 생성
localStorage를 이용한 LLM 비용 절감같은 레시피는 내용이 바뀌지 않으므로, 최초 생성 결과를 브라우저에 캐싱. 2회차 이후에는 LLM을 호출하지 않고 즉시 표시
라쿠텐(楽天市場)에서의 모음 구매식품 카테고리 필터링 (genreId: 100227) + 식재료 비용 기준의 maxPrice 필터를 적용하여 정확도를 확보

끝까지 읽어주셔서 감사합니다!

Mastra의 Subagent와 Workflow는 복잡한 처리를 역할별로 정리하면서 조립할 수 있어서, 생각보다 기분 좋게 작성할 수 있었습니다. 같은 것을 시도해보고 싶은 분들의 참고가 되면 좋겠습니다. 피드백이나 질문이 있다면 댓글 기다리겠습니다!

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
1

댓글

0