
AI 에이전트의 동작을 두 실행 간에 diff 하는 CLI 「whatbroke」를 만들었습니다
요약
AI 에이전트의 모델이나 프롬프트 변경 시, 동작의 변화를 추적하는 CLI 도구인 'whatbroke'를 소개합니다. 두 실행 트레이스를 비교하여 도구 호출(tool call) 누락, 인자 변경, 비용 및 레이턴시 변화를 분석합니다.
핵심 포인트
- 두 실행 트레이스 간의 도구 호출 및 인자 차이 분석
- 비용, 레이턴시, 최종 출력의 변화를 보고
- CI 환경에 통합하여 breaking 변경 사항 자동 검출 가능
- 프록시 방식을 사용하여 코드 변경 없이 트레이스 기록 가능
모델을 새로운 것으로 교체했을 때, 답변을 몇 개 읽어보고 "괜찮아 보이네"라며 넘어가고 계시지는 않나요? 저는 그것 때문에 큰 코를 다쳤습니다.
에이전트의 모델을 3분의 1 크기의 모델로 교체하여 테스트했을 때, 답변은 모두 그럴싸해 보였지만, 내부적으로는 cancel_subscription 도구 호출(tool call)이 사라져 있었습니다. 에이전트는 계속해서 "해지가 완료되었습니다"라고 말하고 있었습니다. 텍스트의 diff(차이 분석)로는 이것을 찾아낼 수 없습니다. 말은 맞았지만, 동작이 망가져 있었기 때문입니다.
그래서 whatbroke라는 CLI를 만들었습니다. 두 개의 실행 트레이스(trace)를 비교하여 어떤 도구 호출이 사라졌는지, 인자(argument)가 어떻게 변했는지, 비용과 레이턴시(latency)가 얼마나 변했는지, 최종 출력이 어떻게 변했는지를 보고합니다.
리포지토리: https://github.com/arthi-arumugam-git/whatbroke
npm install -g whatbroke-cli
npx로 바로 실행할 수도 있습니다.
- 변경 전의 에이전트로 트레이스를 기록한다
- 무언가를 변경한다 (모델, 프롬프트, 프레임워크 버전 등 무엇이든)
- 동일한 시나리오로 다시 한번 기록한다
- diff를 추출한다
whatbroke diff before.jsonl after.jsonl
트레이스 기록은 프록시(proxy)를 사용하는 것이 가장 간편합니다. 코드 변경이 필요 없습니다.
whatbroke record --out traces/current.jsonl
OPENAI_BASE_URL=http://127.0.0.1:4141/v1 node my-agent.js
# 또는
ANTHROPIC_BASE_URL=http://127.0.0.1:4141 node my-agent.js
LLM 호출, 도구 호출, 최종 출력이 모두 JSONL에 기록됩니다. 스트리밍(streaming)도 그대로 통과합니다.
| 검출 내용 | 심각도 |
|---|---|
| 실행이 실패하게 됨, 도구 호출이 사라짐, 출력이 사라짐 | breaking |
| ... |
breaking이 발생하면 종료 코드(exit code) 1이 되므로, 그대로 CI에 넣을 수 있습니다.
- run: node run-agent-suite.js --out traces/current.jsonl
- run: npx whatbroke-cli diff traces/baseline.jsonl traces/current.jsonl --md >> "$GITHUB_STEP_SUMMARY"
동일한 시나리오를 각각 3회씩 기록하고, run id에 #1, #2, #3을 붙이면, whatbroke가 모든 조합을 비교하여 각 검출 사항에 발생률을 부여합니다.
! issue_refund called with different args (amount) (6/9 run pairs)
변경 전의 샘플들 사이에서도 발생하는 변동은 "원래부터 플래키(flaky)"
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기