n8n × AI 입문 — LLM 노드로 텍스트 자동 생성
Part 4의 시작이다. n8n이 2025~2026년에 가장 주목받는 이유 중 하나가 바로 AI 네이티브 통합이다. LLM을 워크플로우에 자연스럽게 녹여보자.
AI Credential 설정
OpenAI
- platform.openai.com → 로그인
- API Keys → Create new secret key
- n8n → Credentials → Add → "OpenAI API" → API Key 입력
Anthropic (Claude)
- console.anthropic.com → 로그인
- API Keys → Create Key
- n8n → Credentials → Add → "Anthropic API" → API Key 입력
Google AI (Gemini)
- aistudio.google.com → API Key 생성
- n8n → Credentials → Add → "Google AI" → API Key 입력
Chat Model 노드 기본
n8n은 AI 모델을 Chat Model 노드로 통일하여 제공한다.
주요 모델별 특성
| 모델 | 강점 | 비용 | 적합한 작업 |
|---|---|---|---|
| GPT-4o | 범용 최강 | $$$ | 복잡한 분석, 코드 생성 |
| GPT-4o-mini | 속도+비용 | $ | 요약, 분류, 간단한 생성 |
| Claude 3.5 Sonnet | 긴 문맥, 정확한 추론 | $$ | 긴 문서 분석, 코드 리뷰 |
| Gemini 1.5 Pro | 초장문 컨텍스트 | $$ | 대규모 데이터 분석 |
| Gemini 1.5 Flash | 속도 | $ | 빠른 분류, 요약 |
기본 사용법: AI Chain
가장 간단한 AI 워크플로우는 Basic LLM Chain을 사용한다.
[Trigger] → [Basic LLM Chain] → [후속 처리]
↑
[Chat Model: GPT-4o-mini]
Basic LLM Chain 설정
Prompt Type: Define Below
Text: {{ $json.text }}를 한국어로 번역해주세요. 원문의 뉘앙스를 최대한 살려주세요.
System Message 활용
System Message:
당신은 전문 번역가입니다. 다음 규칙을 따릅니다:
1. 자연스러운 한국어로 번역
2. 전문 용어는 영어 병기 (예: 워크플로우(Workflow))
3. 문장 끝은 "~합니다" 존칭 사용
프롬프트 엔지니어링 기초
좋은 프롬프트의 3요소
| 요소 | 설명 | 예시 |
|---|---|---|
| 역할(Role) | AI의 페르소나 설정 | "당신은 시니어 데이터 분석가입니다" |
| 지시(Instruction) | 구체적인 작업 지시 | "아래 데이터를 분석하고 인사이트 3개를 추출하세요" |
| 형식(Format) | 출력 형식 지정 | "결과를 JSON 형식으로 반환하세요" |
구조화된 출력 요청
System Message:
당신은 고객 리뷰 분석 전문가입니다.
User Message:
다음 리뷰를 분석하고 아래 JSON 형식으로만 응답하세요:
{
"sentiment": "positive" | "negative" | "neutral",
"score": 1-10,
"keywords": ["키워드1", "키워드2"],
"summary": "한 줄 요약"
}
리뷰: {{ $json.review }}
이렇게 JSON 형식을 지정하면 Code 노드에서 JSON.parse()로 파싱하여 후속 처리가 편해진다.
실전 1: 이메일 자동 요약
[Gmail Trigger: 새 이메일]
→ [Basic LLM Chain: 요약]
→ [Slack: 요약 메시지 전송]
프롬프트:
다음 이메일을 3줄로 요약해주세요. 각 줄은 핵심 내용 하나를 담아주세요.
응답 형식:
1. (핵심 1)
2. (핵심 2)
3. (핵심 3)
이메일 제목: {{ $json.subject }}
이메일 내용: {{ $json.text }}
실전 2: 고객 리뷰 감성 분석
[Google Sheets: 새 리뷰 읽기]
→ [Split In Batches: 10개씩]
→ [Basic LLM Chain: 감성 분석]
→ [Code: JSON 파싱]
→ [Google Sheets: 결과 업데이트]
Code 노드: AI 응답 파싱
const response = $input.item.json.text;
try {
const parsed = JSON.parse(response);
return {
json: {
sentiment: parsed.sentiment,
score: parsed.score,
keywords: parsed.keywords.join(', '),
summary: parsed.summary
}
};
} catch (e) {
return {
json: {
sentiment: 'error',
score: 0,
keywords: '',
summary: 'AI 응답 파싱 실패: ' + response.substring(0, 100)
}
};
}
실전 3: 다국어 자동 번역 파이프라인
[Webhook: 새 콘텐츠]
→ [Basic LLM Chain: 한→영 번역]
→ [Basic LLM Chain: 한→일 번역]
→ [Merge: Combine By Position]
→ [DB: 번역 결과 저장]
비용 모니터링
AI API 호출은 토큰 단위 과금이다. 비용을 관리하자.
토큰 추정
| 언어 | 1,000 토큰 ≈ |
|---|---|
| 영어 | 750 단어 |
| 한국어 | 500~600 글자 |
비용 절감 팁
| 전략 | 방법 |
|---|---|
| 작은 모델 먼저 | 분류→ GPT-4o-mini, 복잡한 분석→ GPT-4o |
| 프롬프트 최적화 | 불필요한 설명 제거, 간결한 지시 |
| 캐싱 | 같은 입력은 DB에서 캐시 조회 후 호출 |
| 배치 처리 | 개별 호출 대신 여러 건을 한 번에 처리 |
| 토큰 제한 | Max Tokens 설정으로 응답 길이 제한 |
Temperature와 파라미터
| 파라미터 | 설명 | 권장값 |
|---|---|---|
| Temperature | 창의성 (0=정확, 1=창의적) | 분류: 0, 생성: 0.7 |
| Max Tokens | 최대 응답 토큰 수 | 작업에 맞게 설정 |
| Top P | 샘플링 범위 | 일반적으로 1 유지 |
Temperature 0: "이 리뷰는 부정적입니다." (항상 같은 답)
Temperature 0.7: "이 리뷰는 부정적이며, 고객이 배송 지연에 강한 불만을 표현하고 있습니다."
Temperature 1: "배송의 미로 속에서 길을 잃은 고객의 탄식이..." (너무 창의적)
📝 정리
- [x] AI Credential: OpenAI, Anthropic, Google AI 각각 API Key 발급 → n8n 등록
- [x] Basic LLM Chain: System Message + User Message 조합으로 AI 호출
- [x] 프롬프트 엔지니어링: 역할 + 지시 + 형식을 명확히 지정
- [x] 구조화 출력: JSON 형식 요청 → Code 노드에서 파싱
- [x] 비용 관리: 작은 모델 우선, 프롬프트 최적화, 캐싱, Temperature 설정
다음 편 예고
22편: AI Agent 노드 — 자율적으로 판단하는 워크플로우
LLM 호출을 넘어, AI가 스스로 도구를 선택하고 판단하는 에이전트를 만든다. Tool과 Memory의 개념을 배우자.