자동화 한복판에 AI를 끼워 넣으면서 배운 것들입니다. 핵심은 AI는 판단은 잘하지만 정확한 옮겨 적기는 못 한다 — 그건 프로그램의 일이다. → 상위: 개발 지식 지도
출력 필드를 하나 늘릴 때 체크리스트 (n8n Structured Output)
- 프롬프트에 새 필드의 판정 기준을 명시
- Structured Output Parser 스키마에도 같은 필드 추가 — 안 하면 파서가 새 필드를 버린다
- 그 필드를 쓰는 다운스트림 노드(경로 분기 등) 수정
- 워크플로 수동 실행으로 실제 값이 갈리는지 확인
예: 용어 사전에 용어 아닌 게 섞이자 유형(용어/이슈) 한 칸을 추가해서 저장 위치를 자동으로 갈랐다.
Basic LLM Chain의 함정 두 개
Source for Prompt가 기본값Connected Chat Trigger Node로 되어 있다 →Define below로 바꿔야 직접 쓴 프롬프트가 들어간다.- 그러면 아래에 빈
Prompt 1이 자동으로 생기는데, 이걸 삭제하지 않으면 실행 에러가 난다. - 형식을 강제하려면
Require Specific Output Format토글을 켜고Structured Output Parser를 연결한다.
LLM이 줄바꿈을 글자 \n으로 답할 때
프롬프트를 붙잡고 씨름하지 말고, 마지막에 한 줄로 정리한다:
{{ $json.text.replace(/\\n/g, '\n') }}
LLM에게 시키면 안 되는 일
- 긴 목록에서 짧은 ID·URL·코드를 옮겨 적게 하기.
- 130줄짜리 기사 목록에서 URL을 받아 적게 했더니, LFP 배터리 항목에 K9 자주포 기사 링크가 붙었다. 지어낸 게 아니라 다른 기사의 링크를 잘못 가져온 것.
- URL 생김새별 오배정률: 날짜가 박힌 URL(ZDNet
?no=20260903...)은 2.5%, 5자리 숫자만 다른 URL(디일렉?idxno=61717)은 62%. AI가 맥락으로 검산할 수 있는 값인지가 갈랐다. - 해결: AI에게 URL을 아예 안 보여준다. 각 줄 앞에
[번호]만 붙여 보여주고,기사번호와기사제목만 받는다. 진짜 링크는 Code 노드가 원본 배열에서 조회한다. 제목도 같이 받는 게 핵심 — 번호가 틀려도 제목으로 다시 찾는 안전망.
- 정확히 맞아야 하는 값을 자유 텍스트로 출력하게 하기 — 숫자 하나만 틀려도 조용히 잘못된 결과가 된다.
- “없으면 없다고 해”라는 쉬운 도피로 주기 — 130건 중 디일렉만 50건인데도 배터리 섹터가 “없음”으로 왔다. 도피로가 있으면 쓴다. 기준을 구체적으로: “정말로 조금이라도 관련된 기사가 단 하나도 없을 때만 없음으로 답하세요” + 섹터별 포함 범위를 넓게 나열.
출처: 근거 기사 링크 전수 검증기
AI는 같은 대상을 매번 다르게 표기한다
## 차세대 HBM(High Bandwidth Memory)
## 차세대 HBM (Processing-in-Memory) ← 같은 용어인데 매일 새 항목으로 갈라짐
매칭하기 전에 정규화한다:
// 괄호 안을 통째로 잘라내고
용어: d.용어.replace(/\s*[((].*?[))]\s*/g, '').trim(),
// 문장부호·공백·대소문자를 전부 무시하고 글자·숫자만 남겨 비교
const norm = s => (s || '').toLowerCase().replace(/[^0-9a-z가-힣]/g, '');
말줄임표 하나(U+2026)를 AI가 마침표 세 개로 옮겨 적어도 대조가 실패한다 — 그래서 글자와 숫자만 남긴다.
같은 걸 두 번 묻지 않는다
텔레그램용·위키용 LLM 노드가 같은 기사 목록을 두 번 물어보고 있었다. 하나로 합쳤다:
- Claude 호출 하루 6번 → 3번 (비용 절반)
- 텔레그램과 위키가 항상 같은 키워드를 말하게 됨