하네스 엔지니어링 — AI 에이전트의 신뢰성을 만드는 법
AI 에이전트 하네스(Harness)란 무엇인가. 평가, 가드레일, 툴 통합, 컨텍스트 관리까지 — 신뢰할 수 있는 에이전트를 만드는 핵심 개념.
#하네스#평가#테스트
하네스(Harness) — AI 에이전트의 보이지 않는 인프라
하네스는 AI 모델을 둘러싼 모든 인프라 코드를 말합니다. 사람에게 비유하면 “작업 환경”이죠.
왜 하네스가 중요한가
같은 모델이라도 하네스에 따라 결과가 완전히 달라집니다.
GPT-5 + 잘 짜인 하네스 > GPT-5 + 단순한 chat completion
Anthropic이 말하는 “agentic harness engineering”은 에이전트의 90% 성능이 하네스 설계에서 나온다는 관점이에요.
하네스의 5가지 핵심 레이어
1. 컨텍스트 관리
- 대화 이력 압축 (sliding window, summarization)
- 토큰 예산 배분
- 시스템 프롬프트 모듈화
2. 도구 통합
- 함수 호출 스키마 정의
- 도구 실행 결과 검증
- 실패 시 재시도 / 폴백 전략
3. 평가 / 가드레일
- 입력 검증 (프롬프트 인젝션 방어)
- 출력 검증 (스키마, 포맷)
- 정책 위반 감지
4. 트레이싱 / 옵저버빌리티
- 모든 LLM 호출 로깅
- 단계별 latency 측정
- 실패 패턴 분석
5. 비용 / 성능
- 모델 라우팅 (저렴한 모델 먼저, 어려운 건 고성능)
- 캐싱 (semantic cache, exact match)
- 배치 처리
간단한 하네스 예시
class SimpleHarness:
def __init__(self, model, tools):
self.model = model
self.tools = tools
self.trace = []
def run(self, user_input, max_steps=5):
messages = [{"role": "user", "content": user_input}]
for step in range(max_steps):
response = self.model(messages, tools=self.tools)
self.trace.append({"step": step, "response": response})
if response.finish_reason == "stop":
return response.content, self.trace
# 도구 실행
tool_result = self.tools[response.tool_name](**response.tool_args)
messages.append({"role": "tool", "content": tool_result})
raise TimeoutError("max steps reached")
다음 글에서
- LangSmith로 하네스 트레이싱 시작하기
- 평가 데이터셋 만들기 — 사람이 평가하는 일 최소화하기
- 프롬프트 인젝션 방어 — 입력 sanitization 패턴
— 끝 —
💬 댓글 기능
GitHub Discussions로 댓글을 받으려면 README의 Giscus 설정 안내를 따라주세요. (5분이면 끝나요)