← 노드 한 장 전체#74 · Auto-fixing Output Parser
Auto-fixing Output Parser
JSON은 고쳤는데, 상품 값이 바뀌었습니다.
이 글은 이런 분께AI 출력의 JSON 형식 통과와 원문 값 보존을 따로 검증하려는 n8n 사용자

1분 영상은 @workflow.hanjang 에 순서대로 공개돼요
JSON은 고쳤는데, 상품 값이 바뀌었습니다.
직접 쓴 가상 상품은 mug / 수량 3 / 가격 5000.
먼저 결과부터
연결: Main Chat Model → Basic LLM Chain의 Model, Auto-fixing Output Parser → Chain의 Output Parser, Structured Output Parser와 별도 Repair Chat Model → AutoFix. Structured 자체 autoFix는 껐고, main 8토큰/repair 128토큰, 양쪽 API Max Retries 0으로 제한했습니다. 실제는 1시도에서 main1+repair1, 최종 형식PASS·원문 값0/3개 일치였습니다. repair 입력에는 잘린 출력·규칙·오류가 있었지만 원문 mug와 5000은 없었어요. 형식 수리 성공은 원문 내용 복원이 아닙니다.
우리가 실제로 돌린 기록 · 실행 #74955 · 2026-10-30
우리가 실제로 돌린 기록 · 실행 #74955 · 2026-10-30
따라 하기
실제로 실행한 워크플로우를 바탕으로 정리했어요. 계정·식별자는 공개용 값으로 치환했고, 그 밖의 차이는 아래 주의사항에 표시했어요. n8n 캔버스에서 +를 눌러 노드를 순서대로 추가하고 같은 값을 넣으면 돼요. 빨간 제목이 이번 편의 주인공 노드예요. 표 왼쪽은 n8n 편집기에 보이는 칸 이름, 오른쪽은 다운로드 JSON의 설정값이에요. 직접 입력하기 번거로우면 JSON을 받아 ⋯ → Import from File로 가져오세요.
Step 1. Manual Trigger 노드 추가이름: Run manually
설정 없이 그대로 추가해요.
Step 2. Basic LLM Chain 노드 추가이름: Basic LLM Chain
| Source for Prompt (User Message) | Define below |
| Prompt (User Message) | 직접 작성한 가상 상품 데이터입니다. 상품은 mug, 수량은 3, 가격은 5000입니다. product, qty, price 세 필드로 JSON 객체 한 줄만 출력하세요. Markdown 코드블록이나 설명 없이 반드시 {로 시작하세요. 값은 원문 그대로 옮기세요. |
| Require Specific Output Format | 켜짐 |
Step 3. Auto-fixing Output Parser 노드 추가이름: Auto-fixing Output Parser
설정 없이 그대로 추가해요.
Step 4. OpenAI Chat Model 노드 추가이름: Main Chat Model · 8 tokens
| Model | gpt-4.1-mini |
| Options › Maximum Number of Tokens | 8 |
| Options › Sampling Temperature | 0 |
| Options › Max Retries | 0 |
Step 5. OpenAI Chat Model 노드 추가이름: Repair Chat Model · 128 tokens
| Model | gpt-4.1-mini |
| Options › Maximum Number of Tokens | 128 |
| Options › Sampling Temperature | 0 |
| Options › Max Retries | 0 |
Step 6. Structured Output Parser 노드 추가이름: Structured Output Parser
| Schema Type | Define using JSON Schema |
| Input Schema | {"type":"object","properties":{"product":{"type":"string"},"qty":{"type":"number"},"price":{"type":"number"}},"required":["product","qty","price"],"additionalProperties":false} |
| Auto-Fix Format | 꺼짐 |
가져와서 쓸 때 확인할 것
- [실제 확인] main 8토큰 제한은 JSON 잘림을 재현하기 위한 인위적 통제입니다. 정상 환경이나 권장 한도로 포장하지 않습니다.
- [실제 확인] 실행 #74955에서 main1+repair1 총2모델 호출이 있었습니다. 1시도에서 종료했고 추가 호출은 하지 않았습니다.
- [실제 확인] main finish_reason length, 원출력은 product 값 시작에서 잘렸고 Structured 최초 파싱은 실패했습니다.
- [실제 확인] Repair 최대128토큰, 실제출력22토큰. 별도 모델 호출 후 파싱이 성공했습니다. Structured 자체 autoFix는 false이며 API Max Retries는 양쪽0입니다.
- [소스 및 실제 확인] wrapper 소스는 최초 실패 후 수리 invoke1회·재파싱 경로입니다. 자동 수리 횟수와 모델 API 재시도 설정을 혼동하지 않습니다.
- [실제 확인] 최종 output의 형식은 통과했지만 mug/3/5000이 Example Product/10/29.99로 모두 달라져 원문값 일치는0/3입니다. 수리 성공은 내용 정답 보장이 아닙니다.
- [실제 확인] repair 입력에는 원문 mug·5000이 없었습니다. 잘린 completion에서 사라진 원래 값을 자동 복원했다고 설명하지 않습니다.
- [스키마 확인] AutoFix 캐시는 deprecated 표시입니다. 현재 환경1회 성공만 검증했으며 미래 버전 지원을 보장하지 않습니다.
- [공개 범위] 원문·원출력·최종 JSON과 검증 결과만 사용하며 숨은 reasoning·키·자격 증명·private IDs는 공개하지 않습니다.
- YOUR_… 표시를 내 값으로 바꾸고, 계정이 필요한 서비스 노드만 자격 증명을 연결하세요. 그런 칸이나 노드가 없는 예제는 추가 계정 없이 실행할 수 있어요.
노드의 모든 옵션은 n8n 공식 문서에서 볼 수 있어요.