n8n OpenAI 노드: 워크플로우에서 텍스트, 이미지 및 채팅 완성(Chat Completions) 생성하기 (무료 워크플로우 JSON
요약
n8n의 OpenAI 노드를 사용하여 GPT-4o, DALL·E, Whisper 등 다양한 OpenAI API를 워크플로우에 통합하는 방법을 설명합니다. API 호출을 위한 보일러플레이트 코드 없이 UI 기반으로 텍스트, 이미지, 오디오 작업을 자동화하는 가이드를 제공합니다.
핵심 포인트
- n8n OpenAI 노드로 복잡한 HTTP 요청 없이 API 연결 가능
- Chat, Image, Audio 리소스를 통한 다양한 작업 지원
- GPT-4o 및 gpt-4o-mini 모델 선택 및 활용 팁
- DALL·E 이미지 생성 시 영구 저장을 위한 권장 워크플로우
- Whisper를 이용한 바이너리 오디오 데이터 전사 방법
n8n OpenAI 노드: 워크플로우에서 텍스트, 이미지 및 채팅 완성(Chat Completions) 생성하기
n8n OpenAI 노드는 단 한 줄의 HTTP 요청 보일러플레이트(boilerplate)를 작성하지 않고도 여러분의 워크플로우를 OpenAI의 API — GPT-4o, GPT-4, GPT-3.5, DALL·E, Whisper 등 — 에 연결합니다. UI에서 작업을 정의하고, 데이터를 연결하면 n8n 아이템(items) 형태로 구조화된 출력을 받을 수 있습니다.
이 가이드는 모든 작업(operation), 사람들이 실수하기 쉬운 주의사항, 세 가지 실제 워크플로우 패턴, 그리고 시작을 돕기 위한 무료 다운로드 가능 JSON을 다룹니다.
OpenAI 노드가 할 수 있는 일
| 리소스 (Resource) | 작업 (Operations) |
|---|---|
| Chat | Message (GPT-4o, GPT-4, GPT-3.5-turbo, 등) |
| ... | |
| Chat → Message 작업은 여러분이 90%의 시간 동안 사용하게 될 작업입니다. |
자격 증명(Credentials) 설정하기
- n8n에서 Settings → Credentials → New → OpenAI로 이동합니다.
- platform.openai.com/api-keys에서 가져온 API 키를 붙여넣습니다.
- (선택 사항) 키가 다중 조직(multi-org) 계정에 속해 있다면 Organization ID를 설정합니다.
이 자격 증명은 인스턴스 내의 모든 OpenAI 노드에서 재사용할 수 있습니다.
Chat → Message 작업 (핵심 작업)
기본 설정
Resource: Chat
Operation: Message
Model: gpt-4o (또는 비용 절감을 위해 gpt-4o-mini)
...
주요 파라미터 (Key parameters)
| 파라미터 (Parameter) | 기능 | 팁 |
|---|---|---|
| Model | 호출할 GPT 모델 | 대량/저렴한 작업에는 gpt-4o-mini를 사용하고, 품질을 위해서는 gpt-4o를 사용하세요 |
| ... |
출력값에 접근하기
노드는 완성된 텍스트를 다음과 같이 반환합니다:
{{ $json.message.content }}
만약 JSON Response를 활성화했다면, 콘텐츠는 JSON 문자열입니다. 다음과 같이 파싱(parse)하세요:
// Code 노드에서
const parsed = JSON.parse($input.first().json.message.content);
return [{ json: parsed }];
Image → Generate 작업 (DALL·E)
Resource: Image
Operation: Generate
Prompt: "{{ $json.imagePrompt }}"
...
Output: {{ $json.url }} — 임시 CDN URL (약 1시간 후 만료). 이미지를 영구적으로 보관해야 하는 경우, HTTP Request 노드를 사용하여 즉시 다운로드한 후 S3 또는 Google Drive에 저장하세요.
DALL·E 3 주의사항: 요청당 하나의 이미지만 생성됩니다 (n=1로 하드코딩됨). 대량의 이미지를 생성하려면 OpenAI 노드 이전에 Loop Over Items 노드를 사용하세요.
Audio → Transcribe 작업 (Whisper)
Resource: Audio
Operation: Transcribe
Input Data Field Name: data (오디오 파일을 포함하는 바이너리 속성)
...
이 노드는 바이너리 (binary) 오디오 데이터를 필요로 합니다. 다음 중 하나로부터 데이터를 공급하세요:
- Read/Write Files 노드 (로컬 파일)
- URL을 다운로드하는 HTTP Request 노드
- Telegram/WhatsApp 노드의 음성 메시지
Output: {{ $json.text }} — 전사 (transcript) 텍스트.
Assistants API 작업
다음과 같은 기능이 필요한 경우 Assistant → Message를 사용하세요:
- 여러 턴에 걸친 지속적인 대화 스레드 (conversation threads)
- 코드 인터프리터 (Code Interpreter) (Python 실행, 파일 처리)
- 파일 검색 (File Search) (업로드된 문서에 대한 RAG)
- 함수 정의를 통한 커스텀 도구 호출 (Custom tool calling)
워크플로우 흐름: Thread 생성 → Message 추가 → Run 생성 → 완료될 때까지 폴링 (poll) → Message 가져오기.
n8n의 내장 Assistant 작업은 Run 폴링 루프를 자동으로 처리합니다. 사용자는 Thread ID를 연결하기만 하면 어시스턴트의 답변을 받을 수 있습니다.
주의사항: Thread ID는 OpenAI 서버에 상태가 저장됩니다 (stateful). 다중 세션 연속성이 필요한 경우 이를 (데이터베이스나 n8n static data에) 저장하세요.
주의사항 및 일반적인 오류
1. 속도 제한 (Rate limits, 429)
OpenAI는 모델 티어별로 분당 토큰 수 (tokens-per-minute) 및 분당 요청 수 (requests-per-minute)를 제한합니다. 대량 처리를 위해서는:
- 배치 (batch) 사이에 Wait node (1~2초)를 추가하세요.
- 배치 크기를 5~10으로 설정하여 Split in Batches를 사용하세요.
- 또는 속도 제한이 더 높은 하위 티어 모델 (gpt-4o-mini)을 사용하세요.
2. 토큰 예산 초과 (Token budget exceeded)
긴 대화 기록은 빠르게 누적됩니다. 메시지 배열을 마지막 N개의 턴으로 자르거나, 메인 호출 전에 별도의 경량 호출을 통해 기록을 요약하세요.
3. JSON 모드의 키 환각 (JSON mode hallucinating keys)
JSON 응답 (JSON Response) 기능이 활성화되어 있더라도, GPT는 때때로 요청하지 않은 키(keys)를 생성할 수 있습니다. 다음 단계로 데이터를 전달하기 전에 Code 노드를 사용하여 출력을 검증하거나 불필요한 키를 제거(strip)하세요.
4. 이미지 URL 만료 (Image URL expiry)
DALL·E URL은 약 1시간 후에 만료됩니다. 데이터의 지속성이 필요하다면 즉시 다운로드하여 저장하세요.
5. 모델을 찾을 수 없음 (Model not found)
모델 이름은 대소문자를 구분하며 시간이 지남에 따라 변경됩니다. platform.openai.com/docs/models에서 제공하는 정확한 문자열을 사용하세요. gpt-4와 gpt-4-turbo는 서로 다릅니다.
6. 바이너리 필드 이름 불일치 (Whisper)
Whisper는 특정 필드에 있는 바이너리 데이터 (binary data)를 기대합니다. Input Data Field Name의 필드 이름이 이전 노드에서 넘어온 바이너리 속성 이름(upstream node의 binary property name)과 정확히 일치하는지 확인하세요 (주로 HTTP Request의 data 또는 Read Files의 파일명).
3가지 워크플로우 패턴
패턴 1: AI 고객 지원 분류 (AI customer support triage)
Webhook
→ OpenAI Chat (티켓 분류: 결제/기술/환불 + 긴급도 1-5)
→ Switch 노드 (카테고리에 따라 경로 지정)
...
시스템 프롬프트 (System prompt): "고객 지원 티켓을 분류하세요. JSON 형식으로 반환하세요: {category: string, urgency: number, summary: string}" . JSON 응답 (JSON Response)을 활성화하세요.
이 패턴은 수백 개의 티켓을 사람의 개입 없이 처리하며, 각 티켓을 적절한 대기열(queue)로 라우팅합니다.
패턴 2: 주간 콘텐츠 요약기 (Weekly content summarizer)
Schedule Trigger (매주 월요일 08:00)
→ HTTP Request (RSS 피드 또는 API 가져오기)
→ Item Lists (모든 항목 집계)
...
피드 양이 많을 경우, 배치(batch) 단위로 요약하여 전체 토큰(tokens) 수가 모델의 컨텍스트 창 (context window)을 넘지 않도록 유지하세요.
패턴 3: 음성-작업 파이프라인 (Voice-to-task pipeline)
Telegram Trigger (음성 메시지)
→ OpenAI Audio Transcribe (Whisper → 텍스트 변환)
→ OpenAI Chat (실행 항목을 JSON 배열로 추출)
...
별도의 UI가 필요 없는 실용적인 작업 캡처 시스템입니다. 할 일을 말하면 작업 관리자에 자동으로 나타납니다.
무료 워크플로우 JSON
다음은 Webhook 트리거를 JSON 응답 모드가 활성화된 GPT-4o-mini에 연결하고, 파싱된 출력을 라우팅하는 시작용 워크플로우입니다:
{
"name": "OpenAI Chat Starter",
"nodes": [
...
Settings → Import from URL/Clipboard에서 이를 가져오세요.
OpenAI 노드 vs AI Agent 노드: 언제 무엇을 사용할까요?
| 시나리오 | 사용 도구 |
|---|---|
| 단일 턴 생성 (요약, 분류, 추출) | OpenAI 노드 |
| ... |
다음 단계
- GPT 출력을 후처리하려면 n8n Code Node와 함께 사용하세요.
- 다른 AI API를 호출하려면 n8n HTTP Request Node를 사용하세요.
- OpenAI 실패를 포착하고 기록하려면 n8n Error Trigger를 추가하세요.
- 미리 구축된 자동화 패턴을 보려면 전체 n8n Workflow Starter Pack을 살펴보세요.
OpenAI 노드로 무엇을 만들고 계신가요? 여러분의 사용 사례를 댓글로 남겨주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기