제 4 장
AI 에이전트 설계
본 장은 경기 영상을 실력 정보로 바꾸고, 그 정보를 매칭과 검증에 쓰는 에이전트 계층을 다룬다. 제 5 장의 매칭과 제 6 장의 검증에서 “에이전트가 처리한다”고 기술한 지점의 구현 설계가 여기에 해당한다.
1) 에이전트 구성
역할 분리
하나의 에이전트에 모든 역할을 맡기지 않는다. 영상에서 무엇이 일어났는지 읽어내는 일, 후보의 순위를 정하는 일, 주장에 대한 근거를 찾아 판정하는 일은 요구되는 판단의 성격이 다르고 실패했을 때의 영향 범위도 다르다.
| 에이전트 | 역할 | 호출 시점 |
|---|---|---|
| 영상 분석 | 경기 영상에서 장면과 플레이 이벤트를 추출해 색인한다 | 영상 업로드 후 (비동기) |
| 매칭 | 공고 조건과 후보 스탯을 대조해 순위와 근거를 만든다 | 후보 열람, 공고 마감 |
| 검증 | 실력 주장에 대한 근거 장면을 검색해 판정한다 | 스탯 갱신 요청, 이의 제기 |
처리 흐름
영상 분석은 이용자를 기다리게 하지 않는다. 업로드 시점에 큐에 넣고 비동기로 처리하며, 색인이 끝난 뒤에야 그 경기가 검증 근거로 쓰인다. 반면 매칭은 운영자가 화면을 보는 동안 응답해야 하므로 동기 호출이다. 두 경로의 응답 시간 요구가 다르므로 처리 방식을 나눈다.
모델 응답은 곧바로 화면에 노출되지 않는다. 서버가 형식과 값의 범위를 확인한 뒤 저장하고, 검증 판정은 반드시 근거 장면과 함께 저장한다.
2) 영상 분석 에이전트
영상은 프레임으로 입력한다
모델은 영상 파일을 그대로 입력받지 않는다. 따라서 영상에서 프레임을 추출해 이미지로 넘긴다. 이 구조에서 프레임 추출 간격이 비용과 정확도를 동시에 결정한다. 간격을 좁히면 놓치는 장면이 줄지만 이미지 수에 비례해 비용이 늘고, 넓히면 짧은 플레이가 통째로 빠진다.
전 구간을 같은 간격으로 훑지 않는다. 아래 순서로 처리량을 줄인다.
- 저해상도·넓은 간격으로 전체를 훑어 플레이가 일어난 구간을 추린다.
- 추려진 구간만 좁은 간격·높은 해상도로 다시 분석한다.
- 경기 중단·이동 구간은 색인 대상에서 제외한다.
〔확인 필요: 1차·2차 추출 간격과 해상도〕 값은 제 7 장의 측정으로 정한다.
추출 대상
| 구분 | 내용 |
|---|---|
| 장면 | 시각 구간, 관련 인물, 상황 요약 |
| 플레이 이벤트 | 종목별로 정의된 행위와 그 결과 |
| 근거 | 판단의 출처가 된 프레임 시각 |
플레이 이벤트의 종류는 코드에 넣지 않고 종목별 정의를 읽어 쓴다. 제 3 장에서 스탯 항목을 데이터로 둔 것과 같은 이유다.
인물 식별의 한계
생활체육 영상에는 등번호가 없거나 화질이 낮은 경우가 많아, 장면 속 인물을 특정 이용자로 확정하기 어렵다. 확정할 수 없는 장면을 임의로 특정 인물에 귀속시키면 그 사람의 스탯이 오염된다. 따라서 식별 신뢰도가 임계 미만인 장면은 색인은 하되 스탯 산출에서 제외하고, 검증 근거로 제시할 때는 불확실함을 함께 표시한다. 〔확인 필요: 식별 신뢰도 임계〕
3) 매칭 에이전트
입력과 출력
| 구분 | 내용 |
|---|---|
| 입력 | 공고 조건(종목·일시·장소·포지션·요구 실력대), 지원자 목록과 각자의 스탯·신뢰도·노쇼 이력 |
| 출력 | 순위가 매겨진 추천 목록, 각 추천의 근거 문장, 조건 완화 여부와 완화 항목 |
출력 형식을 스키마로 고정한다
출력은 자유 서술이 아니라 스키마로 고정된 구조화 출력으로 받는다. 순위와 후보 식별자가 자유 문장에 섞여 나오면 서버가 파싱에 실패할 여지가 생기고, 실패를 재시도로 덮으면 비용과 지연이 함께 늘어난다. 근거 문장만 자연어 필드로 두고, 나머지 값은 형식이 보장되는 필드로 받는다.
순위 산출
요소별 가중치 자체는 모델이 정하지 않는다. 포지션 적합도·실력대 근접도·거리·신뢰도·노쇼 이력의 수치화는 서버가 계산해 입력으로 넘기고, 모델은 그 수치만으로 판단하기 어려운 부분 — 부포지션 수행 가능성, 근거 장면에 드러난 플레이 성향, 조건 완화의 타당성 — 을 반영해 순서를 정하고 근거를 쓴다. 가중치를 모델에 맡기면 같은 조건에서 순위가 흔들리고, 왜 그렇게 나왔는지 설명할 수 없게 된다.
근거 문장의 용도
근거 문장은 장식이 아니라 운영자의 판단 재료다. 제 5 장에서 최종 확정을 사람이 하도록 설계한 이상, 운영자가 추천을 검토할 수 있어야 한다. 근거에는 어떤 조건이 맞았고 무엇이 완화됐는지가 드러나야 한다.
4) 도구 및 프롬프트 설계
도구 구성
에이전트에 노출하는 도구는 최소로 둔다. 도구가 많아질수록 모델이 잘못된 도구를 고를 여지가 커지고, 정의 자체가 매 호출의 비용에 실린다.
| 도구 | 용도 | 부수 효과 |
|---|---|---|
| 장면 검색 | 조건에 맞는 색인 장면을 검색한다 (검증 에이전트의 핵심 도구) | 없음 |
| 프레임 조회 | 특정 시각의 프레임을 이미지로 가져온다 | 없음 |
| 후보 조회 | 지원자의 스탯·신뢰도·이력을 읽는다 | 없음 |
| 기록 | 분석·판정 결과를 저장한다 | 있음 — 서버 검증 후 반영 |
부수 효과가 있는 도구는 모델이 직접 확정하지 않는다. 기록 도구의 호출 결과는 서버가 값의 범위와 정합성을 확인한 뒤에야 반영된다.
도구 설명에 호출 시점을 적는다
도구 설명에는 그 도구가 무엇을 하는지뿐 아니라 언제 호출해야 하는지를 함께 적는다. 기능만 적힌 설명은 모델이 도구를 덜 쓰게 만든다. 검증 에이전트가 장면 검색을 건너뛰고 답하면 근거 없는 판정이 되므로, 이 도구에는 호출 조건을 특히 분명히 적는다. 반대로 “반드시”, “무조건” 같은 강조를 넣으면 불필요한 호출이 늘어난다. 조건을 서술하되 강조하지 않는 것이 기준이다.
근거 없는 판정을 막는다
검증 에이전트는 검색된 장면 안에서만 판정한다. 검색 결과가 비었을 때 모델이 일반적인 추론으로 답을 만들어 내면, 근거가 없는데도 검증된 것처럼 보이는 결과가 남는다. 프롬프트에 근거를 찾지 못한 경우 ‘판정 불가’를 반환하도록 명시하고, 서버는 근거 식별자가 비어 있는 판정을 반영하지 않는다.
프롬프트 구성
프롬프트는 앞쪽에 고정 내용(역할, 판단 기준, 출력 규칙)을 두고 뒤쪽에 매 호출 달라지는 내용(공고, 후보 목록, 검색된 장면)을 둔다. 이 순서를 지키면 고정 부분이 캐시되어 반복 호출의 비용과 지연이 줄어든다. 시각이나 요청 식별자처럼 매번 바뀌는 값을 앞쪽에 넣으면 캐시가 무효화되므로, 그런 값은 반드시 뒤쪽에 배치한다.
5) 모델 선정
요구 조건
본 사업의 모델은 이미지 입력을 지원해야 한다. 영상 분석이 프레임 이미지를 입력으로 쓰기 때문이다. 텍스트만 다루는 모델은 후보가 되지 못한다.
후보
Anthropic Claude 계열을 후보로 둔다. 2026년 6월 기준 공개 단가는 아래와 같다(Anthropic 자사 API 기준, 100만 토큰당).
| 모델 | 모델 ID | 컨텍스트 | 입력 | 출력 |
|---|---|---|---|---|
| Claude Opus 5 | claude-opus-5 |
1M | $5.00 | $25.00 |
| Claude Sonnet 5 | claude-sonnet-5 |
1M | $3.00 | $15.00 |
| Claude Haiku 4.5 | claude-haiku-4-5 |
200K | $1.00 | $5.00 |
Claude Sonnet 5는 2026년 8월 31일까지 도입 단가 $2.00 / $10.00이 적용된다. 단가는 변동될 수 있으므로 산정 시점을 함께 기록한다.
이 도입 단가는 개발 기간 안에 만료된다. 8월 31일은 스프린트 1(8/20~9/2)의 마지막 주에 해당하며, 9월 1일부터는 위 표의 정가 $3.00 / $15.00이 적용된다. Sonnet 5를 기준으로 잡은 비용 산정은 그 시점에 입력·출력 모두 1.5배로 뛴다. 모델 선정과 제 7 장의 NT-07(경기 1건당 모델 비용) 실측은 S3 이후에 이뤄지므로, 도입 단가로 산정한 값을 그대로 목표치에 쓰지 않는다. 실측 시점의 단가로 다시 계산하고, 어느 단가를 썼는지 함께 남긴다.
선정 기준
| 기준 | 내용 |
|---|---|
| 영상 판독 정확도 | 프레임에서 플레이를 옳게 읽어내는가 |
| 판단 품질 | 조건이 상충하는 상황에서 납득 가능한 순위를 내는가 |
| 응답 지연 | 운영자가 후보 목록을 열었을 때 기다릴 수 있는 시간 안에 오는가 |
| 호출 비용 | 경기 1건당 누적 비용이 감당 가능한가 |
역할별 배치
모든 에이전트에 같은 모델을 쓸 이유는 없다. 영상 분석은 프레임 수가 많아 비용이 가장 크게 걸리는 구간이므로 1차 훑기에는 낮은 단가의 모델을, 추려진 구간의 정밀 분석에는 상위 모델을 쓰는 배치가 유리할 수 있다. 다만 역할별로 모델을 나누면 검증 대상이 늘어나므로, 단일 모델로 시작해 시험 결과를 근거로 분리를 판단한다. 〔확인 필요: 역할별 모델 배치 확정〕
비용 산정 방식
단가만으로는 실제 비용을 알 수 없다. 경기 1건당 비용은 아래 요소로 결정된다.
- 분석 프레임 수 — 영상 길이 × 추출 간격. 본 사업에서 비용을 좌우하는 가장 큰 요소다
- 프레임 해상도 — 해상도가 높을수록 이미지 1장의 토큰 수가 늘어난다
- 매칭·검증 호출 횟수와 호출당 입력 토큰
- 캐시 적중 여부 — 고정 프리픽스가 재사용되면 해당 구간은 크게 낮은 단가로 계산된다
따라서 실측 없이 산정한 값은 근거가 되지 못한다. 대표 경기 영상을 표본으로 프레임 수와 토큰 수를 실측해 산정하고, 결과를 제 7 장에 기록한다. 〔확인 필요: 최종 선정 모델과 경기 1건당 실측 비용〕