【Python×Claude API】실무에서 활용 가능한 '프롬프트 자동 최적화 및 품질 점수 측정' 파이프라인 구현
요약
본 기사는 Anthropic의 Claude 3.5 Sonnet API를 활용하여 프롬프트 품질을 자동으로 최적화하는 파이프라인 구현 방법을 제시합니다. 평가(LLM-as-a-Judge), 개선, 재평가의 루프를 통해 목표 점수에 도달할 때까지 프롬프트를 자율적으로 다듬는 것이 핵심입니다. 이는 업무 자동화 및 상용 제품 개발에 활용 가능한 실무 가이드입니다.
핵심 포인트
- 평가-개선-재평가의 루프를 통해 프롬프트 품질을 자동으로 최적화합니다.
- Target, Evaluator, Optimizer의 3가지 에이전트 아키텍처로 구성됩니다.
- LLM-as-a-Judge 방식으로 답변을 채점하고 구체적인 개선 조언을 얻습니다.
- Anthropic Claude 3.5 Sonnet API와 Python 코드를 활용하여 구현합니다.
안녕하세요, AIハックラボ(@ai_hack_lab)입니다.
지난번에 공개한 【Python×Claude API】 프롬프트 판매 및 업무 자동화에 즉시 활용 가능한 '프롬프트 자동 생성 및 품질 검증 파이프라인' 구현에서는, 프롬프트를 자동으로 생성하고 출력을 검증하는 메커니즘을 설명했습니다.
본 기사는 실무 편입니다. 생성된 프롬프트를 평가 → 개선 → 재평가의 루프를 통해 자율적으로 다듬어 목표 점수에 도달하게 하는 파이프라인을, 복사-붙여넣기로 바로 작동하는 전체 코드와 함께 공개합니다.
업무 자동화나 AI 부업(프롬프트 판매/위탁 제작)에서 가장 많은 시간과 노력이 소요되는 것이 '프롬프트의 품질 검증 및 개선(리팩토링)'입니다.
한 번 만든 프롬프트가 기대하는 정확도를 내고 있는지 사람이 일일이 눈으로 확인하고 수동으로 수정한다면, 그것만으로도 몇 시간이 허비될 수 있습니다.
그래서 본 기사에서는 Anthropic의 Claude 3.5 Sonnet API를 활용하여, 프롬프트 출력을 자동으로 평가(LLM-as-a-Judge)하고, 목표 점수(예: 80점 이상)에 도달할 때까지 프롬프트 자체를 자기 개선 루프를 통해 브러시업하는 '프롬프트 자동 최적화 파이프라인'의 완전한 구현을 설명합니다.
복사-붙여넣기로 바로 작동하는 Python 스크립트 전체도 게재되어 있으니, 업무 효율화나 상용 제품 개발에 꼭 활용해 보시기 바랍니다.
본 파이프라인은 다음 세 가지 역할(Agent)을 분리하여 연동시키는 아키텍처를 채택하고 있습니다.
- Target Agent (실행 담당): 현재의 프롬프트를 사용하여 테스트 케이스에 대한 답변을 생성합니다.
- Evaluator Agent (평가 담당): 생성된 답변을 사전에 정해진 평가 기준(논리성, 포괄성, 구체성, 톤 등)에 근거하여 100점 만점으로 채점하고, 감점 이유와 개선 조언을 출력합니다.
- Optimizer Agent (개선 담당): 평가 담당의 피드백을 받아 더 높은 점수를 받을 수 있도록 프롬프트의 지시문을 자동으로 수정합니다.
이 루프는 목표 점수에 도달하거나 최대 시도 횟수(max_iterations)에 도달할 때까지 자동으로 반복됩니다.
[초기 프롬프트]
│
▼
...
아래 코드는 Python 3.10 이상 및 anthropic 패키지에서 작동합니다.
pip install anthropic pydantic
import os
import json
from typing import Dict, Any, List
...
"""JSON 문자열을 파싱하고 EvaluationResult 객체로 반환합니다."""
clean_json = """json".removeprefix("").removesuffix("```").strip()"""
data = json.loads(clean_json)
return EvaluationResult(**data)
def optimize_prompt(current_prompt: str, criteria: str, eval_result: EvaluationResult) -> str:
"""평가 결과를 바탕으로 프롬프트를 개선합니다."""
opt_system = """
당신은 세계적인 프롬프트 엔지니어링 전문가입니다.
기존의 프롬프트와 평가 결과를 받아, 평가 기준에서 만점을 획득할 수 있도록 명령어(Instruction), 제약 조건(Constraint), 출력 형식(Output Format)을 다듬어 주세요.
반환하는 것은 '개선된 프롬프트 본문만'입니다. 불필요한 설명은 일절 포함하지 마십시오.
"""
prompt = f"""
【현재 프롬프트】:
{current_prompt}
【달성해야 할 평가 기준】:
{criteria}
【직전 평가 점수】: {eval_result.score}점
【약점・부족한 점】:
{json.dumps(eval_result.weaknesses, ensure_ascii=False)}
【개선 피드백】:
{eval_result.feedback}
"""
response = client.messages.create(
model=MODEL_NAME,
max_tokens=2000,
temperature=0.3,
system=opt_system,
messages=[{"role": "user", "content": prompt}]
)
return response.content[0].text.strip()
def run_prompt_optimization_pipeline(
initial_prompt: str,
test_input: str,
criteria: str,
target_score: int = 85,
max_loops: int = 3
) -> Dict[str, Any]:
"""최적화 루프를 실행하는 메인 함수"""
current_prompt = initial_prompt
history = []
print("🚀 프롬프트 자동 최적화 파이프라인을 시작합니다...")
for i in range(1, max_loops + 1):
print(f"\n--- [Iteration {i}/{max_loops}] ---")
# 1. 실행 (Execution)
output = run_target_prompt(current_prompt, test_input)
# 2. 평가 (Evaluation)
eval_res = evaluate_output(criteria, test_input, output)
print(f"📊 평가 점수: {eval_res.score}점")
print(f"💡 개선점: {', '.join(eval_res.weaknesses)}")
history.append({
"iteration": i,
"prompt": current_prompt,
"score": eval_res.score,
"output": output,
"feedback": eval_res.feedback
})
# 목표 달성 판정 (Goal Achievement Check)
if eval_res.score >= target_score:
print(f"🎉 목표 점수({target_score}점)를 달성했습니다! 최적화를 종료합니다.")
break
if i < max_loops:
print("🔄 프롬프트를 자체 개선 중...")
current_prompt = optimize_prompt(current_prompt, criteria, eval_res)
return {
"final_prompt": current_prompt,
"final_score": history[-1]["score"],
"iterations": len(history),
"history": history
}
"""
예를 들어, 대충 작성한 초기 프롬프트:
당신은 우수한 비즈니스맨입니다. 문의에 대한 정중한 회신 메일을 작성해 주세요.
이것을 본 파이프라인에 투입하고, '경어의 정확성', '상대방 의도 공감', '다음 액션 명확화(기한・담당자)', '간결성'을 기준으로 채점하게 하면, 단 2회의 루프 만에 다음과 같이 완성도가 높은 프롬프트로 자동 진화합니다.
당신은 상장 기업의 Customer Success Lead입니다.
고객 문의에 대해 신뢰도를 최대화하고 다음 액션을 원활하게 진행할 수 있는 회신 이메일을 작성해 주세요.
【필수 준수 사항】
1. 서두에 문의에 대한 감사와 상대방 상황에 대한 공감 문장을 1문장 포함할 것.
2. 결론을 먼저 명시하고, 답변 이유는 목록(최대 3가지)으로 구조화할 것.
3. 모호한 표현('가능한 한 빨리' 등)은 배제하고, 구체적인 기한과 담당 창구를 제시할 것.
4. 전체 내용을 300~400자 이내로 요약하여 상대방의 독해 부담을 최소화할 것.
이처럼 프롬프트 작성 및 검증을 자동화함으로써 콘텐츠 제작이나 위탁 프로젝트의 품질을 보장하면서도 작업 시간을 대폭 절감할 수 있습니다.
AI를 '단순한 채팅 도구'로 사용하는 단계에서, '시스템에 통합하여 자율적으로 구동시키는' 단계로 전환하는 것이 앞으로의 AI 시대에 압도적인 성과를 내는 열쇠가 됩니다.
당사 연구소(AI Hack Lab)에서는 AI 자동화 및 Prompt Monetization의 실전 노하우를 각 매체를 통해 공개하고 있습니다.
- 🔰
**【체험 100엔】 AI 부업 초보자가 '첫 1엔'을 버는 즉효형 프롬프트 3가지 | note**
먼저 소액으로 AI Monetization을 체험해 보고 싶은 분들을 위한 실전 키트. - ⚡
**Monetization 특화・최강 프롬프트 대전 40가지 | note**
복사-붙여넣기만으로 즉시 매출로 연결되는 실전 프롬프트 모음. - 🌐
**AI Hack Lab 공식 블로그 | 자동화 × 고(高) ROI Monetization**
최신 AI 활용 및 자동화 실적을 발신 중.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기