AI를 맹목적으로 신뢰하지 마세요: AI 에이전트의 환각(Hallucination)을 줄이는 방법
AI 에이전트는 종종 실수를 합니다. 코드를 환각하거나, 비즈니스 규칙을 위반하거나, 잘못된 도구를 선택하기도 합니다.
대부분의 사람들은 더 나은 프롬프트를 통해 이를 해결하려 합니다. 하지만 그것은 실수입니다.
신뢰할 수 있는 AI 에이전트를 원한다면, 명확한 제약 조건을 가진 시스템을 설계해야 합니다. "타이피스트(Typist)"에서 "아키텍트(Architect)"로 거듭나야 합니다.
타이피스트 vs. 아키텍트
대부분의 사용자는 타이피스트처럼 행동합니다:
- "인증 시스템을 구현해줘"라고 요청합니다.
- AI가 구조, 라이브러리, 폴더 레이아웃을 결정합니다.
- 모든 결정 하나하나가 환각이 발생할 수 있는 기회입니다.
엔지니어는 아키텍트처럼 행동합니다:
- 구조와 라이브러리를 먼저 정의합니다.
- 제약 조건과 규칙을 설정합니다.
- AI는 오직 당신이 설정한 경계 내에서만 코드를 작성합니다.
AI가 환각을 일으키는 이유는 코딩 실력이 부족해서가 아닙니다. 당신의 머릿속에는 있지만 공유하지 않은 맥락을 추측하려 하기 때문입니다.
전략 1: 컨텍스트 파일 (Context Files)
매 채팅마다 지침을 반복하지 마세요. 설정 파일을 사용하여 AI에게 영구적인 프레임워크를 제공하십시오. 도구마다 사용하는 표준이 다릅니다:
• Claude Code를 위한 CLAUDE.md
• 오픈 소스 생태계를 위한 AGENTS.md
• Cursor를 위한 .cursorrules
• GitHub Copilot을 위한 .copilotrules
프로 팁: 하나의 중앙 AGENTS.md 파일을 만들고 심볼릭 링크(symlinks)를 사용하여 다른 모든 파일이 자동으로 업데이트되도록 하세요.
전략 2: ADR (Architecture Decision Records)
에이전트에게 무언가를 구축하도록 요청하기 전에 ADR을 작성하세요. 이 문서는 AI가 "추측"할 필요를 없애줍니다.
좋은 ADR에는 다음 내용이 포함됩니다:
- 무엇을 구축할 것인지에 대한 정확한 내용.
- 생성할 파일과 절대 건드리지 말아야 할 파일.
- 사용할 구체적인 기술 스택과 라이브러리.
- 명시적인 제약 조건 (예: "메모리에 상태를 저장하지 말 것").
- 에이전트가 결정해서는 안 되는 사항 목록.
오케스트레이터(Orchestrator)가 ADR을 받으면 설계 결정은 이미 완료된 상태입니다. 개발자(Developer) 에이전트는 단순히 명세(spec)를 코드로 변환할 뿐입니다. 이는 오류를 줄이고 코드베이스의 일관성을 유지해 줍니다.
신뢰할 수 있는 AI 에이전트 워크플로우 구축에 관한 시리즈를 시작합니다. 다음 파트에서는 시스템 프롬프트 구성과 고급 엔지니어링 기술을 다룰 예정입니다.
