Tech Blog로 돌아가기

AI AGENT STUDY · OPERATIONS

16

Agent를 운영한다는 것: trace, evaluation, optimization

한 번의 실패를 trace로 설명하고 evaluation case로 재현한 뒤, 회귀를 막는 test와 운영 개선으로 연결하는 loop를 설계합니다.

Agent trace에서 실패를 찾아 evaluation과 regression test로 전환하는 운영 개선 루프
운영의 목표는 실패를 관측하는 데서 끝나지 않고, 같은 실패가 다시 발생하지 않는 test로 바꾸는 것입니다.원본 크기로 보기

사용자 제보 하나를 regression test로 바꾸려면

Agent가 답변을 만들고 tool을 호출할 수 있다는 것은 시작점입니다. 운영에서는 왜 실패했는지 설명하고, 같은 조건을 재현하고, 수정이 다른 기능을 망가뜨리지 않았는지 검증하고, 실제 traffic에서도 개선이 유지되는지 확인해야 합니다.

OPERATIONS LOOP

It runs
→ It works correctly
→ It works efficiently
→ It improves continuously

Agent는 하나의 model call이 아닙니다

Block대표 실패
Runtime / graphStep 폭주, state 누락, retry 무한 반복
Prompt assetsInstruction conflict, version drift
LLM gatewayModel regression, timeout, cost 증가
Tool / MCP layerSelection, argument, result, side effect 오류
RAGRecall miss, stale source, grounding 실패
Memory / stateScope leak, stale memory, compaction 손실
Route / handoff잘못된 agent와 workflow 선택
Observability / eval원인 분석 불가, judge bias
Deployment회귀, rollback 불가, audit 누락

“Agent가 틀렸다”는 final score 하나로는 고칠 위치를 알 수 없습니다. Tool 선택이 틀렸는지, argument가 틀렸는지, 404 result를 성공으로 해석했는지, 올바른 result를 final synthesis에서 왜곡했는지를 trajectory로 분해해야 합니다.

Trace와 span으로 실행 경로를 남깁니다

Span최소 metadata
agent.runRoute, agent version, prompt version, total latency/cost
llm.chatProvider, model, token, finish reason
retriever.searchIndex version, top-k, document ids, score
tool.callTool name, schema validity, result summary, side-effect flag
memoryScope, operation, memory ids, write/read/delete status
validationPolicy id, pass/fail, error type
retry / fallbackReason, attempt, target, accumulated budget
finalizeOutput contract, artifact reference, status

Stack trace와 distributed trace는 다릅니다

Stack trace는 exception이 발생한 process 내부의 함수 호출 경로입니다. Distributed trace는 정상과 실패 request가 여러 component를 지나간 전체 실행 경로입니다. Exception 정보는 해당 span에 연결하되, handled retry까지 모두 fatal로 기록해 alert noise를 만들지 않습니다.

Raw prompt와 tool result를 무조건 저장하면 개인정보와 secret이 trace backend에 쌓입니다. 기본 span은 metadata와 redacted summary를 사용하고, 제한된 표본에서만 payload를 보관하는 정책이 필요합니다.

평가를 component별 진단으로 나눕니다

대상핵심 평가
ToolSelection, argument, result usage, approval
RAGContext recall/precision, groundedness, citation, freshness
Prompt / LLMInstruction following, output schema, variance
MemoryContinuity, scope, compaction, retention/deletion
Runtime불필요한 call, retry 이유, step/timeout budget
HITL / securityApproval bypass, injection, secret/PII, escalation

JSON 형식과 tool argument, file 생성, DB state diff, citation id처럼 deterministic하게 확인할 수 있는 것은 code로 먼저 검사합니다. 의미 품질만 rubric, LLM judge, 표본 human review를 조합합니다.

최적화는 quality gate 아래에서 진행합니다

Token이 줄었다는 사실만으로 성공한 최적화가 아닙니다. Evaluation baseline을 통과하면서 latency와 cost, step 수를 줄여야 합니다. Trace에서 hotspot을 찾고 한 component만 바꾼 뒤 regression eval을 통과해야 배포합니다.

LayerTargeted optimization
RouteSimple task는 cache/small model, high-risk는 approval route
Prompt중복 instruction 제거, stable prefix와 dynamic tail 분리
Model gatewayTask slice별 right-sizing, cascade, fallback, timeout
ToolSchema 단순화, 대형 result 요약, read/write 분리
RAG / memoryTop-k와 rerank tuning, compression, stale context 제거
RuntimeParallelizable step, retry budget, artifact validation

Production trace를 regression case로 승격합니다

  1. Filter: Error, user correction, low score, high cost trace를 후보로 모읍니다.
  2. Label: Failure component와 expected behavior, privacy-safe input을 기록합니다.
  3. Dataset: 중복을 제거하고 대표 case를 versioned regression set에 넣습니다.
  4. Patch: Prompt, tool, retrieval, policy 중 원인 component만 수정합니다.
  5. Experiment: Baseline과 candidate를 offline replay와 shadow traffic으로 비교합니다.
  6. Canary: 작은 traffic에서 quality, latency, cost, safety를 관찰한 뒤 확대합니다.

VERSION ENVELOPE

trace → agent_version + prompt_version + model_config
      + tool_schema_version + index_version + policy_version
      → reproducible regression case

Version이 없으면 같은 input을 재현해도 다른 system을 테스트하게 됩니다. Agent, prompt, model, tool schema, retrieval index, memory policy, evaluator version을 trace와 dataset에 함께 남겨야 원인과 개선을 설명할 수 있습니다.

운영 가능한 Agent의 최소 체크리스트

  • Run과 child operation을 연결하는 trace id와 stable span taxonomy가 있습니다.
  • Prompt, model, tool, index, policy version을 재현할 수 있습니다.
  • Payload 저장과 redaction, retention, 접근 권한 정책이 있습니다.
  • Critical behavior는 deterministic checker와 regression set으로 보호됩니다.
  • Quality와 latency, cost, safety를 같은 experiment에서 비교합니다.
  • Canary, rollback, post-deploy monitoring이 자동화돼 있습니다.