Repository navigation
fix(ai): 평가위원이 남의 축 기준값을 보고 채점하던 문제 - #272
Merged
Merged
Conversation
면접 품질 백로그의 L9(앵커 축별 분리). 아직 유효했다. 패널 평가위원 N명에게 score_basis 를 shared 로 넘기고 있었다. 그 블록에는 네 축(technical/logic/communication/**overall**)의 기준값이 전부 들어 있다. 프롬프트는 이렇게 지시한다: "'점수 기준값(score_basis)'에 해당 축 기준값이 있으면 그 값에서 ±15점 이내로 산정" 그런데 기준값 라벨(logic_score)과 위원의 축 이름(논리·인과관계 명확성)이 **다르다**. 위원이 스스로 짝을 찾아야 한다. 직군 위원은 #268 이후 축 이름이 "직무 역량·깊이"인데 라벨은 technical_accuracy 라 더 멀다. 그리고 overall_score 가 보인다 — **어느 위원도 써서는 안 될 앵커**다. 남의 축 숫자도 앵커링으로 새어 들어간다. 논리 위원이 technical 80 을 보면 자기 점수를 그쪽으로 당긴다. ## 고친 방법 build_axis_score_basis 가 축별 기준값을 만들고, 패널이 위원마다 자기 것만 주입한다. 라벨도 위원의 축 이름과 같은 말로 쓴다(직무 역량/논리/전달력). 직무 역량 기준값 ≈ 80 (per-answer correctness 평균) 이 값에서 ±15점 이내로 산정하세요. 다른 축의 기준값은 주어지지 않습니다. 주의한 것 셋: - 직군 위원은 여러 명이라 key 가 tech:{직군} 이다. axis_of 가 이걸 technical 로 접는다 — 하나라도 빠지면 그 위원만 조용히 옛 동작으로 떨어진다. - 축별 기준값이 없으면(per-answer 평가 0건) 기존 공용 문자열로 **폴백**한다. 앵커가 통째로 사라지면 점수가 캘리브레이션 없이 흔들린다. - 단일 생성기는 네 축을 한 번에 내므로 전체 기준값이 필요하다. 선택 인자로 두고 소비자가 지원 여부를 보고 넘긴다. 숫자 계산은 _score_baselines 한 곳으로 모았다 — 전체 문자열과 축별 값이 달라지면 안 된다. ## 테스트 tech:BACKEND · tech:SALES · technical 이 모두 technical 로 접힌다 각 축이 자기 숫자만 본다 (80 / 20 / 100 으로 서로 달라 섞이면 드러남) **overall 이 어느 위원에게도 안 보인다** **남의 축 라벨도 안 보인다** 평가 0건이면 공용 기준값으로 폴백한다 가드 둘 다 회귀를 잡는지 확인했다 — 축별 주입을 지우면, tech: 매핑을 지우면 각각 실패한다. AI 449건 통과.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
면접 품질 백로그의 L9(앵커 축별 분리). 아직 유효했다.
문제
패널 평가위원 N명에게
score_basis를shared로 넘기고 있었다. 그 블록에는 네 축의기준값이 전부 들어 있다:
프롬프트는 이렇게 지시한다:
"해당 축"을 위원이 스스로 찾아야 한다. 그런데 기준값 라벨과 위원의 축 이름이 다르다:
직무 역량·깊이technical_accuracy논리·인과관계 명확성logic_score명료성·구조화·전달력communication_score직군 위원은 #268 에서 "기술"→"직무 역량"으로 바꾼 뒤 더 멀어졌다.
그리고
overall_score가 보인다 — 어느 위원도 써서는 안 될 앵커다. 남의 축 숫자도앵커링으로 새어 들어간다. 논리 위원이
technical 80을 보면 자기 점수를 그쪽으로 당긴다.고친 방법
위원마다 자기 축 기준값만 주입한다. 라벨도 위원의 축 이름과 같은 말로 쓴다:
주의한 것 셋:
tech:{직군}이다.axis_of가 이걸technical로접는다 — 하나라도 빠지면 그 위원만 조용히 옛 동작으로 떨어진다.
캘리브레이션 없이 흔들린다 — 고치려다 더 나쁘게 만들면 안 된다.
LlmFeedbackGenerator)는 네 축을 한 번에 내므로 전체 기준값이 필요하다.선택 인자로 두고 소비자가 지원 여부를 보고 넘긴다.
숫자 계산은
_score_baselines한 곳으로 모았다 — 전체 문자열과 축별 값이 달라지면 안 된다.테스트
tech:BACKEND·tech:SALES·technical이 모두technical로 접힌다overall이 어느 위원에게도 안 보인다가드 둘 다 회귀를 잡는지 확인했다 — 축별 주입을 지우면,
tech:매핑을 지우면 각각 실패한다.AI 449건 통과.
남은 L9 (이번에 안 함)
technical_accuracy를correctness하나로만 산정하는 부분. correctness 는 RAG 기반이라참고 문서를 안 고르면 통째로 null 이 되고, 그러면 직무 역량 축이 "근거 없음"이 된다.
specificity 를 섞는 게 맞아 보이지만 기준값 정의가 바뀌면 과거 점수와 비교가 깨진다 —
백로그가 중리스크로 분류한 이유다. 별도로 다루는 게 맞다.