Files
aio-01d4-stu/Last3Mon/68/LAB-01-A-SCENARIO-AND-SPLIT.md
T

4.5 KiB

Lab 01 · 복합 요청을 업무로 나누기

정답본 · 수업이 끝난 뒤 공개합니다. 문제는 LAB-01-Q-SCENARIO-AND-SPLIT.md. 68일차부터 수업 준비는 정답 워크플로우만 한 번 실행해 확인합니다. 아래 요청문은 예시이며, 수업 준비 때 CLI 에이전트로 보내 결과를 재지는 않았습니다. 결과 숫자는 정답 워크플로우(reference/, answers/)를 2026-10-18에 1회 실행한 값입니다 (gpt-4.1-mini).

예제 1 · 업무 분석표 (정답 예)

요청 업무 유형 필요한 입력 요청에 있나 관계
composite ① T-1002 처리 상태 ② 회의록 할 일 정리 ③ 프린터 출력 안 됨 it · meeting · it ① 접수 번호, 요청한 사람 ② 회의록 원문 ③ 증상 모두 있음 (user, notes) 셋 다 독립
two-it ① 비밀번호 분실 ② 메일함 용량 it · it 증상, 요청한 사람 있음 독립 (같은 Agent에 두 번)
it-and-other ① 프린터 ② 회식 장소 추천 it · other ① 증상 ② (맡을 Agent 없음) ① 있음 독립
meeting-no-notes ① 회의록 할 일 정리 meeting 회의록 원문 없음 —

강조할 점:

  • 업무 개수는 "접속사 수"가 아니라 처리 단위. two-it은 같은 Agent지만 업무 둘.
  • 필요한 입력이 문장 밖(요청 본문의 다른 칸) 에 있다: user, notes. 업무 나누기 LLM에게는 문장만 줘도 되지만, 빠진 입력 판단은 본문 전체를 봐야 한다.
  • 오늘 업무는 모두 독립 → 라우터(분배)로 충분. "보고서를 쓰고 그걸 검토"처럼 순서가 있으면 파이프라인 (69일차).

예제 2 · 요청문 예

my-work/split.json 에 n8n 워크플로우를 만들어 줘.
- POST 웹훅, 경로 my-split. 직원 요청 문장은 본문의 message.
- message가 비어 있으면 400 {"error": "message is required"}.
- AI Agent(OpenAI gpt-4.1-mini, Tool 없음)가 문장을 업무 목록으로 나눈다. 업무 하나 = 한 번에 처리할 수 있는 요청 하나.
  유형: it(비밀번호·계정·VPN·프린터·메일·소프트웨어, T-1002 같은 접수 현황), meeting(회의록 정리·할 일), other(그 밖).
  업무 텍스트는 직원이 쓴 한국어 그대로, 접수 번호를 지우지 않는다. JSON만 돌려 달라고 한다.
- 다음 Code 노드에서 그 글자를 JSON으로 읽는다. 앞뒤 ``` 는 지우고, 읽지 못하면 빈 목록. 정해지지 않은 유형은 other.
- 결과는 {"count": 업무 수, "tasks": [{"type": "it", "text": "..."}]} (요청에 나온 순서대로).
- 기대 결과는 cases/lab01.json. check까지 하고 push·test 명령을 알려 줘.

정답: reference/lab01-example2-split.json (Webhook → Has message? → Split tasks(Agent) → Parse tasks(Code) → Send result).

수업 준비 때 결과
cases/lab01.json 7/7 (케이스당 0.9~3.2초, 복합 요청이 가장 김)
cases/lab01-challenge.json (예제 상태) 0/4 (agent, missing 필드 없음)

과제 · 요청문 예

my-work/split.json 을 고쳐 줘. LLM 지시문(Split tasks)은 그대로 두고 Parse tasks 코드에서만 정한다.
1. 업무마다 agent: it → "it-agent", meeting → "meeting-agent", other → "담당자 연결".
2. 업무마다 missing: 빠진 입력 목록. meeting인데 본문 notes가 비었으면 ["notes"], it인데 본문 user가 비었으면 ["user"], 아니면 [].
   본문은 $('Assistant webhook').first().json.body 로 읽는다.
3. cases/lab01-challenge.json 과 cases/lab01.json 이 둘 다 통과해야 한다.

정답: answers/68-lab01-challenge-split.json

수업 준비 때 결과
cases/lab01-challenge.json 4/4
cases/lab01.json 7/7

풀이 포인트:

  • LLM이 할 일(문장 이해) 과 규칙이 할 일(담당 표, 빈 칸 확인) 을 나눴다. 규칙 쪽은 매번 같은 답 → 테스트가 흔들리지 않는다 (67일차 "LLM이 정하면 안 되는 값"과 같은 생각).
  • user 빠짐은 테스트에 없지만 넣어 두면 Lab 03 과제의 "user 없이 IT 질문"에서 바로 쓴다.