워크플로 시리즈 (08): 운영 및 비용 — 단계별 비용 추적 및 결함 진단
요약
복잡한 멀티 에이전트 워크플로의 운영 효율성을 높이기 위한 비용 추적 및 결함 진단 방법론을 다룹니다. 단계별 토큰 사용량을 기록하여 비용 핫스팟을 식별하고, 전략적 모델 선택과 실행 방식을 통해 비용을 최적화하는 구체적인 가이드를 제공합니다.
핵심 포인트
- 상태 파일(JSON)을 활용한 단계별 토큰 소비량 및 비용 추적
- 비용 핫스팟 분석을 통한 모델 및 컨텍스트 최적화 전략
- Lazy Parallel 전략을 활용한 병렬 실행 비용 절감
- 분류 트리와 5단계 표준 진단법을 통한 워크플로 결함 해결
비용의 사각지대
단일 스킬 (Skill)의 비용은 계산하기 쉽습니다: input_tokens × 가격 + output_tokens × 가격.
7개의 단계 (Phase)로 구성되고, 각 단계마다 여러 개의 서브에이전트 (subagents)가 있으며, 4단계에서는 3개의 후보를 동시에 실행하는 워크플로(workflow)가 있다면 — 한 번의 실행에 비용이 얼마나 들었을까요? 대부분의 팀은 이에 답하지 못하며, 답을 모르면 최적화할 수 없습니다.
단계별 비용 추적 (Cross-Phase Cost Tracking)
상태 파일에 토큰 소비량 기록하기
각 서브에이전트 호출 후, 토큰 소비량을 workflow_state.json에 기록합니다:
{
"workflow_id": "wf-bug-e2e-AE-33995-20260601",
"cost_tracking": {
...
수집 방법: LLM API 응답 객체에는 usage 필드가 포함되어 있습니다. 서브에이전트가 완료된 후 이를 상태 파일에 기록하십시오.
def invoke_subagent(phase_id: str, prompt: str, model: str) -> dict:
response = llm_client.messages.create(
model=model,
...
비용 핫스팟 (Cost Hotspot) 분석
여러 실제 실행 데이터로부터 수집된 데이터의 분포는 일반적으로 다음과 같습니다:
단계 (Phase) 평균 비용 비중
──────────────────────────────────────
phase_3_analyze $0.26 51% ← 가장 비쌈: Opus + 대규모 로그 입력
...
3단계가 51%를 차지하는 이유는 두 가지 요인 때문입니다: Opus 모델 선택과 대규모 로그 입력 (15,000 토큰). 4단계는 3개의 후보를 동시에 실행하기 때문에 27%를 차지합니다.
최적화 방향
3단계 비용 절감:
# 현재: Opus가 전체 로그를 분석함
phase_3_config = {"model": "claude-opus-4-8", "context": "full_logs"} # 비용 높음
...
4단계 비용 절감:
4단계는 최소 하나가 통과할 확률을 극대화하기 위해 3개의 후보를 실행합니다. 만약 과거 데이터에서 후보 통과율이 80% 이상으로 나타난다면, 먼저 하나를 실행하고 그것이 통과할 경우 나머지는 건너뛰도록 설정하십시오:
phase_4_fix:
strategy: lazy_parallel # 먼저 1개를 실행; 실패할 경우에만 나머지 2개를 실행
max_candidates: 3
...
결함 진단 방법론 (Fault Diagnosis Methodology)
워크플로가 실패했을 때, 기본적으로는 로그를 뒤지고 실행 순서를 추측하며 각 단계를 수동으로 확인해야 합니다. 분류 트리 (Classification tree)와 표준 진단 단계를 사용하면 이 과정을 5분 이내로 단축할 수 있습니다.
결함 분류 트리 (Fault Classification Tree)
Workflow didn't complete
├── Never started
│ └── Trigger condition problem
...
5단계 표준 진단 (5-Step Standard Diagnosis)
# Step 1: 현재 상태 확인
cat $WS/workflow_state.json | python3 -m json.tool | grep -A3 '"phase"'
...
일반적인 결함 퀵 레퍼런스 (Common Fault Quick Reference)
시나리오 1: 3단계(Phase 3)에서 멈춤, 5분 이상 경과 후에도 출력 파일 없음
증상: phase_3 status=in_progress, analysis_final.json 누락
가능한 원인:
...
시나리오 2: 모든 4단계(Phase 4) 후보(candidate)의 passed=false 상태
증상: candidate_a/b/c.json 모두 존재, 모두 passed=false, Gate B 트리거됨
가능한 원인:
...
월간 비용 보고서 (Monthly Cost Report)
# tools/cost_report.py
import json
from pathlib import Path
...
설계 체크리스트 (Design Checklist)
비용 추적 (Cost tracking)
- 모든 서브에이전트 (subagent) 호출 후 토큰 소비량 (Token consumption)이 상태 파일 (state file)에 기록됨
- 상태 파일에
cost_tracking.total_usd가 포함됨 - 실행 간 비용을 집계하고 비용 과다 발생 단계 (hotspot phases)를 식별할 수 있는 도구가 있음
비용 최적화 (Cost optimization)
- 비용이 가장 높은 단계 (Phase)에 대해 모델 다운그레이드 (예: Opus를 Sonnet으로 교체)를 검토함
- 과거 통과율 (pass rate) 데이터를 기반으로 동시 후보 (Concurrent candidate) 수를 설정함
- 입력 볼륨이 큰 단계 (Phases)에 대해 LLM 호출 전 사전 필터링 (pre-filtering)을 검토함
결함 진단 (Fault diagnosis)
- 결함 분류 트리 (Fault classification tree)가 4가지 실패 모드를 모두 다룸
- 5단계 쉘 진단 (5-step shell diagnostic)을 통해 5분 이내에 실패한 단계 (Phase)를 찾아냄
- 일반적인 결함 시나리오에 대한 해결 작업 (fix operations)이 문서화되어 있음
요약 (Summary)
- 비용은 1~2개 단계에 집중됨: 3단계 (Opus + 대규모 입력)와 4단계 (3개의 병렬 후보군)가 일반적으로 전체 비용의 75%를 차지합니다. 따라서 이 두 단계를 최적화하는 것이 다른 모든 단계를 합친 것보다 더 큰 영향을 미칩니다.
- 진단 전 분류: 실패가 어떤 카테고리(시작되지 않음 / 단계 정체 / 게이트 타임아웃 / 재개 오류)에 속하는지 식별하면 즉시 올바른 점검 항목을 가리킬 수 있습니다. 이는 로그를 처음부터 읽는 것보다 훨씬 빠릅니다.
- 문제가 발생하기 전에 진단 도구 준비:
cost_report.py와diagnose.sh는 무언가 고장 나기 전에 이미 존재해야 합니다. 무언가 고장 났을 때, 이를 열고 실행하십시오.
실제 기업급 워크플로(workflows)에서 검증된 AI 에이전트와 기술(skills)을 큐레이션하여 제공하는 마켓플레이스 PrimeSkills를 확인해 보세요. 불필요한 내용은 빼고, 실제로 작동하는 것들만 제공합니다.
제 홈페이지에서 더 유용한 지식과 흥미로운 제품들을 찾아보세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기