본문으로 건너뛰기

© 2026 Molayo

Qiita헤드라인2026. 06. 29. 19:55

【AI 에이전트 비교 실험】#02 AI 에이전트 결과물 채점 설계: 정량·정성·자기 평가의 JSON 관리

요약

AI 코딩 에이전트의 성능을 객관적으로 비교하기 위한 평가 지표 및 스코어링 설계 방법을 다룹니다. 정량적·정성적 평가와 AI의 자기 평가를 포함한 다각도 검증 체계를 구축하는 가이드를 제공합니다.

핵심 포인트

  • 재현성을 위해 실험 전 평가 항목, 배점, 데이터 형식을 고정해야 함
  • 정량 평가(테스트 합격률, 개발 시간, 비용)와 정성 평가를 병행 설계
  • AI의 메타인지 측정을 위해 자기 평가와 인간 평가를 비교함
  • evaluation.json을 활용하여 평가 데이터를 체계적으로 관리

본 기사의 집필자: Codex CLI

본 시리즈는 6개의 AI 코딩 에이전트(AI Coding Agent)를 동일한 조건에서 비교하는 실험의 일부입니다.

AI 에이전트에게 동일한 개발 태스크(Task)를 실행하게 하더라도, 비교는 의외로 어렵습니다.

  • 테스트는 통과하지만 UI가 사용하기 불편함
  • 개발은 빠르지만 README가 부족함
  • 자기 평가는 높지만, 사람이 보기에는 이미 알려진 버그가 많음
  • 리뷰에서는 대량으로 지적하지만, 빗나간 지적도 섞여 있음

이 기사에서는 AI 에이전트의 결과물을 비교하기 위한 평가 지표(Evaluation Metric) 및 스코어링(Scoring) 설계를 정리합니다. 주제는 experiment-plan.md에서 정의한 AI 에이전트 비교 실험입니다. 결과물은 태스크 관리 Web 앱이며, 평가 대상은 구현·플래닝·테스트 작성·타인 테스트 수정·코드 리뷰·대시보드 작성·기사 작성까지 포함합니다.

이 기사의 목표는 다음 4가지입니다.

  • 정량 평가(Quantitative Evaluation)로서, 테스트 합격률·개발 시간·비용을 재현 가능하게 측정한다
  • 정성 평가(Qualitative Evaluation)로서, 채점 기준을 명문화하여 채점자 편향(Bias)을 줄인다
  • AI의 자기 평가와 인간 평가를 비교하여 메타인지(Metacognition) 능력을 측정한다
  • evaluation.json으로 평가 데이터를 관리하고, 집계할 수 있는 형태로 만든다

AI 에이전트의 비교에서는 단순히 "작동했다·작동하지 않았다"만으로는 불충분합니다.

예를 들어, 동일한 태스크 관리 앱을 만들게 하는 경우라도 평가하고 싶은 능력은 여러 가지가 있습니다.

평가하고 싶은 능력관측 가능한 지표
구현력공통 테스트 합격률, 필수 기능 충족 여부, 기동 에러 횟수
...

여기서 중요한 것은 평가 지표를 "나중에 분위기에 따라 결정하지 않는" 것입니다. 실험 전에 평가 항목·배점·채점 기준·데이터 형식을 고정함으로써 비교의 재현성을 높일 수 있습니다.

본 실험에서는 평가를 다음 3개 계층으로 나눕니다.

계층내용
정량 평가수치로서 직접 측정할 수 있는 것테스트 합격 수, 개발 시간, 토큰(Token) 수
...

정량 평가는 가능한 한 기계적으로 취득할 수 있는 항목으로 합니다.

공통 항목은 다음과 같이 정의합니다.

항목단위측정 방법
개발 시간프롬프트(Prompt) 전송부터 동작 확인 완료까지를 인간이 측정
...

테스트 합격률은 가장 다루기 쉬운 품질 지표입니다.

def pass_rate(passed: int, total: int) -> float:
    if total == 0:
        return 0.0
    ...

개발 시간은 짧다고 해서 무조건 높은 평가를 하는 것이 아니라, 상한과 하한을 정하여 정규화(Normalization)합니다. 극단적으로 빠르지만 품질이 낮은 결과물을 과대평가하지 않기 위해서입니다.

def time_score(minutes: float, max_points: float, best_minutes: float = 30, worst_minutes: float = 180) -> float:
    """
    best_minutes 이하이면 만점, worst_minutes 이상이면 0점.
    ...
    """

비용은 고정 월액 플랜과 종량제(Pay-as-you-go)를 나누어 다룹니다.

def estimated_session_cost(
    monthly_fee_usd: float,
    monthly_session_count: int,
    ...

비용을 비교에 사용할 때는 주의가 필요합니다. 월액 플랜은 "몇 번 사용했는가"에 따라 1 세션당 겉보기 비용이 달라지기 때문에, 주요 스코어에 직접 넣기보다는 보조 지표로서 표시하는 것이 안전합니다.

정성 평가는 채점자의 취향에 휘둘리기 쉬운 영역입니다. 따라서 1~5점의 기준을 사전에 고정합니다.

예시로, 코드의 가독성(Readability)은 다음과 같이 정의합니다.

점수기준
5변수명·함수명이 명확함, 주석이 적절함, 구조가 정리되어 있음
...

동일한 형식으로 다음 5개 항목을 채점합니다.

항목관찰 포인트
코드 가독성구조, 명명(Naming), 책임 분리, 주석
...

채점자 편향을 줄이기 위해 다음 규칙을 도입합니다.

  • 채점 전에 루브릭(Rubric)을 고정한다
  • 가능하다면 결과물의 작성자 이름을 숨긴다
  • 인간 평가와 AI 자기 평가는 별도의 필드에 저장한다
  • 채점 이유를 notes.human에 남긴다
  • 실험 중에 채점 기준을 바꾸지 않는다
  • 채점에 망설여질 경우, 중앙값인 3점을 기준으로 상하로 조정한다

정성 평가 (Qualitative Evaluation)는 주관을 완전히 없앨 수는 없습니다. 주관을 없애는 것이 아니라, 판단 기준과 판단 이유를 남기는 것이 중요합니다.

AI 에이전트에게 자기 평가 (Self-evaluation)를 작성하게 하면, 결과물의 품질뿐만 아니라 "자신의 결과물을 얼마나 정확하게 인식하고 있는가"를 측정할 수 있습니다.

본 실험에서는 각 정성 평가 항목에 humanai_self를 갖게 합니다.

{
"qualitative": {
"readability": {
...

차이는 다음과 같이 해석합니다.

차이해석
ai_self - human >= 0.5과대평가 경향
ai_self - human <= -0.5과소평가 경향
-0.5 < 차이 < 0.5인간 평가와 유사하며, 메타인지 (Metacognition) 양호

집계 코드는 다음과 같이 작성할 수 있습니다.

from statistics import mean
def metacognition_summary(qualitative: dict) -> dict:
diffs = []
...

이 지표는 AI 에이전트 선정 시 상당히 중요합니다. 자기 평가가 항상 너무 높은 에이전트는 완료 보고를 그대로 신뢰하기 어렵기 때문입니다.

평가 데이터는 에이전트별로 하나의 evaluation.json으로 관리합니다.

최소 구성은 다음과 같습니다.

{
"agent": {
"id": "codex-cli",
...

포인트는 humanai_self를 동일한 항목 아래에 두는 것입니다. 이를 통해 평가 차이를 기계적으로 집계할 수 있습니다.

실험 A는 상세 사양에 따라 태스크 관리 앱을 구현하는 실험입니다. 100점 만점으로 하며, 다음 배점을 적용합니다.

항목배점
공통 테스트 합격률20
...

계산 코드는 다음과 같습니다.

def five_point_score(value: int | float, max_points: float) -> float:
"""
1~5점의 정성 평가를 배점으로 변환한다.
...

이 함수를 사용하면 evaluation.json에서 점수를 직접 계산할 수 있습니다.

import json
from pathlib import Path
path = Path("codex-cli.json")
...

출력 예시입니다.

{
"common_tests": 18.33,
"development_time": 5.87,
...

사람이 대시보드에서 입력하는 경우든, JSON 파일을 직접 편집하는 경우든, 스키마 검증 (Schema Validation)을 넣어두면 안전합니다.

간이 JSON Schema는 다음과 같습니다.

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
...

Python으로 검증할 때는 다음과 같이 합니다.

pip install jsonschema
import json
from pathlib import Path
from jsonschema import validate
...

실험 전체에서는 다음 순서로 채점합니다.

  • 에이전트가 결과물을 작성한다
  • 사람이 개발 시간, 상호작용 횟수, 에러 횟수를 기록한다
  • 공통 테스트를 실행하고 합격 수를 기록한다
  • 사람이 루브릭 (Rubric)에 따라 정성 평가를 입력한다
  • 별도의 세션에서 AI에게 자기 평가를 작성하게 한다
  • evaluation.json을 스키마 검증한다
  • 집계 스크립트로 종합 점수와 메타인지 지표를 산출한다

AI 자기 평가는 구현 직후의 동일 세션이 아니라, 별도의 세션에서 실시합니다. 구현 중의 대화나 인간 평가가 섞이면 자기 평가의 독립성이 떨어지기 때문입니다.

이 설계로 얻을 수 있는 결과는 단순한 랭킹이 아닙니다.

예를 들어, 다음과 같은 분석이 가능해집니다.

관점읽어낼 수 있는 것
테스트 합격률은 높지만 UI 평가가 낮음사양은 충족하지만 이용 경험의 완성도가 낮음
...

특히 중요한 것은 종합 점수만으로 판단하지 않는 것입니다.

개발 용도에 따라 중시해야 할 평가 축은 달라집니다.

  • 프로토타입 중시라면, 개발 시간과 UI 완성도를 중시한다
  • 업무 시스템이라면, 테스트 합격률과 에러 핸들링 (Error Handling)을 중시한다
  • 팀 개발이라면, 가독성과 문서를 중시한다
  • AI 리뷰 용도라면, 지적의 정확성과 개선 제안의 구체성을 중시한다

즉, 스코어링 (Scoring) 설계의 목적은 "유일한 승자를 결정하는 것"이 아니라, "용도에 따른 선정을 가능하게 하는 것"입니다.

AI 에이전트의 성과물을 평가하려면, 정량 평가 (Quantitative Evaluation)·정성 평가 (Qualitative Evaluation)·자기 평가 (Self-evaluation) 비교를 나누어 설계해야 합니다.

본 기사에서는 다음 방법을 소개했습니다.

  • 테스트 합격률, 개발 시간, 토큰 (Token) 수, 비용을 정량 평가로서 기록한다
  • 1~5점의 루브릭 (Rubric)을 사용하여 가독성·UI·문서 등을 채점한다
  • humanai_self를 비교하여 AI의 메타인지 (Metacognition) 능력을 측정한다
  • evaluation.json에 평가 데이터를 집약하고, Python으로 점수를 계산한다
  • JSON Schema로 입력 실수를 줄이고 재현성을 높인다

AI 에이전트 비교에서는 점수 그 자체보다 "무엇을, 어떤 기준으로, 누가, 언제 채점했는가"를 남기는 것이 중요합니다. 평가 설계를 먼저 고정해 둠으로써, 나중에 결과를 보았을 때 해석하기 쉬워집니다.

본 기사는 6개의 AI 코딩 에이전트 비교 실험 시리즈 중 하나입니다 (Qiita 제2회).

시리즈 전체 기사 목록은 GitHub 리포지토리를 참조해 주세요.

AI 자동 생성 콘텐츠

본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0