티스토리 뷰
AI 웹 개발 입문 시리즈 (7/7)
AI 앱은 배포하면 끝이 아닙니다. '이 답변이 정말 좋은 건가?'를 측정하고, 더 좋게 만드는 과정이 진짜 실력입니다.
우리는 지난 6편의 여정을 통해 AI API 사용법부터 프롬프트 엔지니어링, RAG 시스템 구축, 그리고 웹 서비스 배포까지 달려왔습니다. 이제 여러분의 손에는 세상에 공개된 멋진 AI 서비스가 들려 있을 겁니다. 하지만 사용자들이 "답변이 이상해요", "엉뚱한 소리를 해요"라고 말하기 시작하면 당황스럽기 마련입니다.
전통적인 소프트웨어 개발에서는 '1 + 1'이 항상 '2'가 나와야 성공입니다. 하지만 AI는 매번 다른 답을 내놓습니다. 어제는 완벽했던 답변이 오늘은 조금 부족할 수도 있죠. 이런 불확실성 속에서 어떻게 품질을 관리하고 개선할 수 있을까요? 이번 시리즈의 마지막 편에서는 AI 앱의 품질을 객관적으로 측정하고 개선하는 방법을 알아보겠습니다.
왜 평가가 필요한가요?
AI 개발을 하다 보면 "프롬프트를 조금 고쳤더니 A 질문은 잘 대답하는데, 잘 나오던 B 질문 답변이 망가졌어요" 하는 상황을 자주 만납니다. 눈대중으로 한두 개 테스트해 보는 것만으로는 전체적인 품질 변화를 알기 어렵습니다.
평가가 필요한 이유는 명확합니다.
- 객관적인 기준 확보: "답변이 좋아진 것 같아요"라는 주관적인 느낌 대신 "정확도가 70%에서 85%로 올랐습니다"라는 숫자로 말하기 위해서입니다.

- 회귀 테스트(Regression Test): 프롬프트를 수정했을 때 기존에 잘 되던 기능이 망가지지 않았는지 확인하기 위해서입니다.
- 비용 효율성: 무조건 비싼 모델(GPT-4o 등)을 쓰기보다, 평가를 통해 저렴한 모델로도 충분한 품질이 나오는지 판단하기 위해서입니다.
AI 품질 평가의 3가지 축
AI 답변의 품질을 판단할 때 보통 다음 세 가지를 중점적으로 봅니다.
- 정확성(Accuracy): 사용자의 질문에 대해 사실 관계가 맞는 정보를 제공했는가?
- 관련성(Relevance): 사용자가 의도한 맥락에 맞는 답변인가? 불필요한 사족은 없는가?
- 안전성(Safety): 편향되거나 혐오스러운 표현, 혹은 개인정보 유출 위험은 없는가?
이 세 가지를 모두 완벽하게 맞추기는 어렵지만, 서비스의 목적에 따라 우선순위를 정해 관리해야 합니다.

가장 쉬운 평가 방법: 테스트 케이스 만들기
가장 먼저 시작할 수 있는 방법은 우리가 직접 '정답지'를 만드는 겁니다. 이를 벤치마크 데이터셋이라고도 부릅니다.
1. 입력과 기대 출력 쌍 만들기
엑셀이나 JSON 파일에 우리가 예상하는 질문과 꼭 포함되어야 할 키워드를 정리해 봅니다.
[
{
"question": "이 서비스의 가격은 얼마인가요?",
"expected_keywords": ["월 9,900원", "무료 체험", "구독"],
"category": "pricing"
},
{
"question": "비밀번호를 잊어버렸어요.",
"expected_keywords": ["이메일 인증", "비밀번호 재설정", "마이페이지"],
"category": "support"
}
]
2. Python으로 자동 평가 스크립트 작성
단순히 키워드가 포함되었는지 확인하는 것만으로도 훌륭한 첫걸음이 됩니다.
def evaluate_response(response, expected_keywords):
score = 0
for keyword in expected_keywords:
if keyword in response:
score += 1
return score / len(expected_keywords)
# 예시 실행
user_query = "가격 알려줘"
ai_response = "저희 서비스는 월 9,900원에 이용 가능하며, 첫 달은 무료 체험 기간입니다."
expected = ["월 9,900원", "무료 체험"]
print(f"품질 점수: {evaluate_response(ai_response, expected) * 100}%")
LLM-as-Judge: AI가 AI를 평가하기
키워드 검사만으로는 문맥의 자연스러움을 평가하기 어렵습니다. 이럴 때 유용한 방법이 바로 '더 똑똑한 AI'에게 평가를 맡기는 것입니다. 이를 LLM-as-Judge라고 부릅니다.
평가 프롬프트 작성법
평가용 AI에게는 명확한 기준(Rubric)을 주어야 합니다. 단순히 "점수 매겨줘"가 아니라 구체적인 가이드라인을 제공하세요.
### 역할
당신은 AI 답변 품질 평가 전문가입니다.
### 평가 기준
1. 정확성 (1-5점): 답변이 제공된 문서의 내용과 일치하는가?
2. 친절함 (1-5점): 사용자에게 예의 바르게 답변했는가?
### 출력 형식
JSON 형태로 점수와 이유를 출력하세요.
{
"accuracy": 5,
"politeness": 4,
"reason": "..."
}
이렇게 하면 사람이 일일이 읽지 않아도 수백 개의 답변을 순식간에 평가하고 통계를 낼 수 있습니다.

프롬프트 개선 사이클
평가는 결국 개선을 위한 도구입니다. 다음과 같은 순환 구조를 만들어 보세요.
- 평가: 현재 프롬프트로 20개 정도의 질문에 답을 생성하고 점수를 매깁니다.
- 문제 발견: 점수가 낮은 답변들을 모아서 공통적인 실패 패턴을 찾습니다. (예: "자꾸 영어로 대답함", "답변이 너무 짧음")
- 프롬프트 수정: 발견한 문제를 해결하기 위해 지시 사항을 추가하거나 예시(Few-shot)를 넣습니다.
- 재평가: 수정한 프롬프트로 다시 점수를 매겨 실제로 좋아졌는지 확인합니다.

실습: RAG 챗봇 품질 개선하기
실제로 우리가 4편에서 만들었던 RAG 챗봇을 개선해 본다고 가정해 봅시다.
1단계: 현재 품질 측정
5개의 테스트 질문을 던졌을 때, 2개 질문에서 '환각(Hallucination)' 현상이 발견되었습니다. 문서에 없는 내용을 지어내서 대답한 것이죠.
2단계: 문제점 파악
분석해 보니 질문과 관련된 문서 조각(Chunk)을 제대로 찾아오지 못하거나, 문서에 답이 없는데도 억지로 답을 하려다 보니 문제가 생겼습니다.
3단계: 전략 수정
- 청킹 전략 변경: 문서 조각의 크기를 조금 더 키워서 맥락을 충분히 전달합니다.
- 프롬프트 보완: "만약 제공된 문서에 답이 없다면, 모른다고 정직하게 말하고 고객센터 번호를 안내해줘"라는 지침을 추가합니다.
4단계: 개선 결과 비교
수정 후 다시 테스트했을 때, 환각 답변이 사라지고 "죄송하지만 해당 정보는 찾을 수 없습니다"라는 안전한 답변이 나오기 시작했습니다. 성공적인 개선입니다.

비용 최적화 팁
품질이 좋아졌다면 이제 지갑 사정도 챙겨야 합니다.
- 모델 믹스: 단순한 요약은 GPT-4o-mini 같은 저렴한 모델을 쓰고, 복잡한 추론이 필요한 경우에만 GPT-4o를 사용하세요.
- 캐싱(Caching): 자주 들어오는 질문은 API를 매번 호출하지 말고 데이터베이스(Redis 등)에 저장했다가 바로 보여주세요.
- 프롬프트 다이어트: 프롬프트가 길수록 돈이 더 나갑니다. 핵심만 남기고 불필요한 설명은 과감히 삭제하세요.
시리즈를 마치며, 다음 단계로 가는 길
지난 7편의 글을 통해 여러분은 AI 웹 개발의 기초 체력을 길렀습니다. 이제 막 걸음마를 뗀 단계이지만, 직접 무언가를 만들어본 경험은 무엇보다 소중합니다.
더 깊게 공부하고 싶다면 다음 주제들을 추천합니다.
- LangChain / LlamaIndex: AI 앱을 더 체계적으로 짤 수 있게 도와주는 프레임워크입니다.
- Vector Database (Pinecone, Weaviate): 대규모 데이터를 효율적으로 관리하는 기술입니다.
- Fine-tuning: 내 특정 데이터를 학습시켜서 나만의 모델을 만드는 방법입니다.
기술은 계속 변하지만, 사용자의 문제를 해결하려는 개발자의 마음가짐은 변하지 않습니다. AI라는 강력한 도구를 손에 넣은 여러분이 앞으로 어떤 멋진 서비스를 만들어낼지 기대됩니다.
그동안 함께해주셔서 감사합니다!
시리즈 목차
- AI API 첫 걸음, OpenAI API로 첫 번째 요청 보내기
- 프롬프트 엔지니어링 101, AI와 대화하는 기술
- 나만의 챗봇 만들기, Streamlit으로 구현하는 UI
- RAG의 기초, 외부 데이터로 AI의 지식 확장하기
- AI 에이전트 이해하기, 스스로 행동하는 AI
- 클라우드 배포, 내 AI 앱을 세상에 공개하기
- AI 앱의 평가와 개선, 품질을 측정하고 더 좋게 만드는 법 (현재글)
참고 자료
- Total
- Today
- Yesterday
- Azure Functions
- 공공데이터
- Ai
- appserviceplan
- scaling
- ALTAIR
- Cloud
- faiss
- CloudArchitecture
- serverless
- langchain
- LLM
- Prompt engineering
- app service
- Kubernetes
- pandas
- Document Processing
- openAI
- Tutorial
- vector search
- aks
- DevOps
- Python
- rag
- 데이터시각화
- cloudcomputing
- streaming
- embeddings
- AppService
- AZURE
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
