
AI를 자신의 프로덕트에 탑재하려는 분들에게: 설계와 구현, 모든 기사의 지도
요약
AI 챗봇을 서비스에 탑재할 때 고려해야 할 설계 원칙과 구현 방법을 정리한 가이드입니다. API 키 보안, 비용 관리, 할루시네이션 방지 및 출력 안전성 등 실무적인 핵심 요소를 다룹니다.
핵심 포인트
- API 키 유출 및 비용 폭등 방지를 위한 보안 설계 중요
- 토큰 경제 모델을 통한 비용 부담 주체 결정
- 근거 기반 답변 설계를 통한 할루시네이션 억제
- MCP 연결 시 권한 부여 관점의 에이전트 설계
- 출력 인젝션 방지 및 안전한 데이터 표시 방법
AI 챗봇을 만들어 WordPress.org에 배포하는 동안, 'AI를 타인의 사이트에 탑재하는 것'에 대해 어느덧 여러 편의 글을 써왔습니다. 설계 방식과 그 구현에 관한 내용입니다. 그동안 흩어져서 작성해 왔기에, 여기서 한 번 지도로 정리해 두려 합니다. 앞으로 같은 일을 하려는 분들이 어디서부터 읽어야 할지 헤매지 않도록 말이죠.
먼저, 모든 글에 공통된 핵심을 하나만 말씀드리자면, AI를 탑재하는 측의 실패는 본인이 아니라, 자신을 믿고 설치해 준 사람에게 되돌아갑니다. 키(Key)가 유출되는 것도, 청구 금액이 폭등하는 것도, 거짓 정보를 반환하는 것도, 피해를 입는 것은 이용자와 그 너머의 방문자입니다. 이러한 비대칭성이 탑재하는 측의 설계를 사용하는 측의 설계와는 다른 것으로 만들었습니다.
지도를 설계 이야기와 구현 이야기로 나누어 배치하겠습니다.
우선, 사고방식부터 (설계)
전체상: 피할 수 없는 3가지
키(Key)·지갑·출력의 3가지를 왜 가장 먼저 결정해야 하는가. 탑재하는 측의 책임이라는 관점에서 전체를 조망하는 하나의 줄기입니다. 이 글을 먼저 읽으면 이후의 기사들이 무엇에 관한 내용인지 알 수 있습니다.
토큰 경제 (Token Economy): 사용하는 측과 탑재하는 측
애초에 '사용하는 측'과 '탑재하는 측'은 무엇이 다른가. 비용은 누가 부담하는가. 3가지 설계보다 앞서 있는 전제에 관한 이야기입니다.
출력 설계: 모르는 것은 모른다고 말하게 하기
챗봇이 거짓말을 하지 않도록, 근거가 없다면 답하지 않도록 설계한 이야기입니다. 똑똑해 보이려는 것을 과감히 포기하는 판단입니다.
연결하는 측의 설계: MCP는 권한을 넘겨주는 것이다
외부 도구를 에이전트(Agent)에 연결할 때, 기능을 추가하고 있다고 생각하지만 사실은 권한을 넘겨주고 있는 것입니다. 탑재하는 측의 이야기 중 에이전트 버전입니다.
다음으로, 직접 움직이기 (구현)
설계 이야기에서 '이렇게 하겠다'라고 결정한 것을 실제 코드로 옮긴 기사들입니다. WordPress 플러그인의 예시이지만, 사고방식은 다른 곳에서도 사용할 수 있을 것입니다.
키를 어떻게 저장할 것인가
맡은 API 키를 평문으로 두지 않습니다. wp-config의 salt로부터 키를 유도하여 AES-256-GCM으로 암호화하는 구현입니다.
지갑에 천장을 만들기
BYOK(Bring Your Own Key)로 인해 청구가 무제한으로 늘어나지 않도록, 하루 이용 한도를 서버 측에서 관리합니다. 카운트를 원자적(Atomic)으로 가산하는 이야기도 포함되어 있습니다.
근거가 없다면, 답하게 하지 않는다
사이트 내부를 검색하여 충분한 근거를 찾지 못하면 AI를 호출하지 않고 반환합니다. 출력 설계를 실제 코드로 구현한 것입니다.
출력을 그대로 표시하지 않기
LLM의 답변을 신뢰하여 화면에 그대로 출력하면 위험합니다. 출력 인젝션(Output Injection) 대책 체크리스트입니다.
어디서부터 읽을까
이제 막 만들려는 분은 설계의 '전체상(키·지갑·출력)'부터 시작하세요. 3가지 조감도가 먼저 있으면 구현 기사를 읽기가 수월해집니다.
현재 제작 중이며 특정 과제에 막혀 있다면 구현 쪽으로 바로 가셔도 좋습니다. 키 보관, 청구 한도, 할루시네이션 (Hallucination), 출력의 안전성. 어려움을 겪고 있는 부분의 기사만 열어봐도 충분합니다.
에이전트에 외부 도구를 연결하는 이야기에 관심이 있다면 MCP 관련 글을 읽어보세요. 다른 글과는 성격이 조금 다르지만, '권한을 넘겨주고 있다'는 핵심은 같습니다.
아직 쓰지 않은 것
탑재하는 측의 이야기 중 아직 쓰지 못한 것이 있습니다. 무료 버전과 유료 버전의 경계를 어디에 그을 것인가. 영구적으로 사용할 수 있는 무료 버전으로 할 것인가, 기한이 정해진 체험판으로 할 것인가. 이 또한 '이용자의 신뢰를 어떻게 다룰 것인가'의 문제이며, 조만간 추가할 예정입니다.
이 지도는 기사가 늘어나면 업데이트하겠습니다. 탑재하는 측의 설계는 아마 앞으로 더욱 필요해질 영역이기 때문입니다.
평소에는 raplsworks.com에서 WordPress 플러그인 개발이나 Claude Code 주변의 이야기를 쓰고 있습니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기