Skip to content
Announcements5 min read

Potato 2.6: 정성적 데이터 분석과 에이전트 평가가 만나다

Potato 2.6 출시: 정성적 코딩을 위한 QDA 모드, LLM-as-judge 보정 및 정렬 워크플로, SFT와 DPO 학습 데이터를 생성하는 궤적 편집, 3배 빨라진 부팅, 그리고 GPL-3.0-or-later로의 재라이선스.

Potato Team

Potato 2.6이 출시되었습니다. 두 개의 무게 중심을 가진 릴리스입니다. 한편으로는 Potato를 정성적 데이터 분석으로 데려옵니다. 그동안 독점 데스크톱 도구 안에서 살아온, 인터뷰 전사본과 코드북과 메모의 세계입니다. 다른 한편으로는 에이전트 평가 도구 모음을 단순히 점수를 내는 데서 나아가 학습 데이터를 생성하는 방향으로 더 깊게 발전시킵니다. 그리고 그 둘의 밑바탕에서, 의미 있게 빨라지고 라이선스가 바뀝니다.

지금까지 지켜봐 오셨다면, 지난 몇 주간의 글들이 이 기능들을 하나씩 미리 보여 드렸음을 아실 겁니다. 이번 릴리스가 바로 그것들을 실제로 출하하는 버전입니다.

Potato 2.6, 정성적 데이터 분석과 에이전트 평가로 나뉜 모습Potato 2.6

먼저 한 가지: Potato는 이제 GPL-3.0입니다

Potato는 PolyForm Shield에서 GPL-3.0-or-later로 재라이선스되었습니다. 이런 종류의 변경은 묻혀 버리기 쉽지만 그래서는 안 됩니다. 이 프로젝트로 당신이 할 수 있는 일이 바뀌기 때문입니다.

GPL-3.0-or-later 하에서는 파생 저작물이 GPL을 유지하는 한, 상업적 용도를 포함하여 Potato를 사용하고 수정하고 재배포할 수 있습니다. 이전의 PolyForm Shield 라이선스에는 경쟁 금지 조항이 있어 일부 채택자(그리고 그들의 법무팀)가 주저하게 만들었습니다. GPL은 그런 팀들이 이미 이해하고 있는 라이선스입니다. 라이선스 문제가 당신의 연구실이나 회사를 가로막고 있었다면, 이제 그 문제에는 익숙한 답이 있습니다. 자세한 내용은 About 페이지를 참고하세요.

QDA 모드

정성적 연구자에게 가장 큰 소식은 QDA 모드입니다. 스위치 하나로 Potato를 협업형 정성적 코딩 작업 공간으로 바꿉니다.

yaml
qda_mode:
  enabled: true            # codebook + memos + cases + search
codebook_invivo_key: i     # mint a code from a text selection

이를 활성화하면 살아 있는 코드북, in-vivo 코딩, 분석자 메모, 케이스, 전문 검색이 함께 구성되며, 한 명의 분석자가 전체 코퍼스를 코딩하는 상황에 맞춰 기본값이 조정되어 있습니다. 읽어 나가면서 코드북을 키우고 재구성하고, 강조 표시한 구절에서 키 입력 한 번으로 곧장 코드를 생성하고, 어떤 발췌에든 비공개 또는 공유 메모를 붙이고, 발췌를 참가자별 케이스로 묶고, 코퍼스 전체에 FTS5 검색을 실행할 수 있습니다. NVivo, ATLAS.ti, MAXQDA, Dedoose를 대체하는 무료·오픈 소스·웹 기반 대안이며, 당신의 나머지 주석 작업과 같은 도구 안에 자리합니다.

이 설계에 대해서는 정성적 코딩을 Potato로 가져오기에서 다루었습니다. 전체 레퍼런스: QDA 모드 문서.

LLM-as-judge: 보정, 정렬, 트리아지

모델 출력을 채점하는 데 LLM을 쓰는 것은 이제 일상입니다. 그것을 얼마나 신뢰할지를 아는 것이 2.6이 다루는 부분이며, 함께 맞물려 작동하는 세 가지 기능으로 이를 풀어냅니다.

Judge Calibration은 하나 이상의 LLM 심판으로 데이터를 자동 라벨링하고, 경험적 신뢰도를 위해 각 항목을 k회 샘플링한 뒤, 블라인드 사람 패스를 실행하고(주석자는 모델 라벨을 결코 보지 않습니다) 정확도, Cohen's 및 Fleiss' kappa, Krippendorff's alpha, 그리고 기대 보정 오차를 보고합니다. "이 심판을 신뢰해도 되는가?"라는 물음에, 근거로 제시할 수 있는 수치로 답합니다. 당신의 LLM 심판을 신뢰할 수 있나요?에서 다루었습니다.

Judge Alignment는 단일 심판을 당신의 사람 골드 라벨에 맞춰 조정하며, 루브릭을 다듬어 가는 동안 Cohen's kappa를 추적하고, 주석 중에 사람 라벨 옆에 인라인 판정 결과를 선택적으로 표시할 수 있습니다.

The Triage Queue는 항목별 신호(에이전트의 오류, 프로덕션에서의 싫어요, 낮은 점수)에 따라 주석 대기열의 우선순위를 정해, 검토자가 도착 순서가 아니라 가장 의심스러운 트레이스를 먼저 보게 합니다.

yaml
triage:
  enabled: true
  signal_field: quality_score
  invert_signal: true
assignment_strategy: priority

정렬과 트리아지는 함께 능동적 평가 루프를 이루며, 이를 루프 닫기에서 따라가 보았습니다. 레퍼런스 문서: Judge Calibration, Judge Alignment, Triage Queue.

SFT와 DPO를 위한 궤적 편집

새로운 trajectory_edit 스키마는 주석자가 에이전트 트레이스의 단계들을 다시 쓸 수 있게 해 주며, 실시간 단어 수준 diff와 함께 잘못된 추론 단계를 고치거나, 툴 호출을 복구하거나, 최종 답변을 강화할 수 있습니다. 이어서 trajectory_correction 익스포터가 각 원본/수정 쌍을 학습 데이터로 바꿉니다. trajectory_sft.jsonl에는 지도 미세조정 타깃을, trajectory_dpo.jsonl에는 DPO 선호 쌍을 생성합니다. 편집되지 않은 트레이스는 건너뜁니다. 변경되지 않은 궤적으로 학습하는 것은 아무것도 가르치지 못하기 때문입니다.

이로써 Potato는 평가 도구일 뿐 아니라 학습 데이터 생산 도구가 됩니다. 전체 안내는 평가에서 학습 데이터로에, 레퍼런스는 궤적 편집 문서에 있습니다.

eval_trace 디스플레이

에이전트 트레이스를 빠르게 읽어 내는 것은 그 자체로 하나의 과제입니다. 새로운 eval_trace 디스플레이는 하나의 트레이스를 세 개의 동기화된 창(Reasoning, Function Calls, Final Answer)으로 나누어, 평가자가 에이전트가 무엇을 생각하고 무엇을 했고 무엇을 만들어 냈는지를 한눈에 보게 합니다. 트레이스가 webhook, Langfuse 폴러, 또는 감시 중인 디렉터리를 통해 잇따라 도착하고 도착하는 대로 판정되어야 하는 지속적 평가를 위해 만들어졌습니다. eval_trace 문서를 참고하세요.

워크플로와 배포

운영 관련 기능 묶음이 이번 릴리스를 마무리합니다.

  • 이질적 커버리지. 서로 다른 항목에 서로 다른 수의 주석자를 배정합니다. 대부분에는 한 명, 층화 표본에는 세 명을 배정하며, 적응형 불일치 부스트와 자동 조정 라우팅을 갖춥니다. 완전 중첩을 넘어서에서 다루며, 레퍼런스는 이질적 커버리지 문서에 있습니다.
  • 버려진 배정 회수. Prolific 작업자나 QC로 차단된 작업자가 남긴 항목을 되찾으며, 설정 가능한 보존 기간과 멱등적 회수를 지원합니다. 작업 배정을 참고하세요.
  • 사용자 지정 배치 배정. 미리 정의된 항목 배치를 특정 주석자에게 배정하며, 반복 라운드 연구 설계를 위해 만들어졌습니다.
  • 리버스 프록시 URL 접두사. 리버스 프록시 뒤의 하위 경로 아래에서 Potato를 서비스합니다. 리버스 프록시 문서를 참고하세요.

더 빠르게, 그리고 스키마 이름 변경

두 가지 변경이 모든 프로젝트에 영향을 줍니다.

부팅이 약 3배 빨라졌습니다. 머신러닝 스택은 더 이상 시작 시점에 미리 로드되지 않고, 대신 최초 사용 시점에 로드됩니다. 임포트 시간은 약 6.5s에서 2s로, 50,000개 항목의 부팅은 약 10초에서 5.7로, 상주 메모리는 약 750MB에서 365MB로 줄었습니다. 컨테이너 재시작이 빨라졌고, 수평 확장을 위한 메모리 사용량은 대략 절반으로 줄었습니다.

annotation_type: highlight는 이제 span입니다. 마이그레이션이 마련되어 있으며, 기존 span 설정은 영향을 받지 않습니다. 타입 이름을 바꿔 옛 설정을 갱신하세요. "span"은 NLP 전반에서 표준 용어이며, 이번 이름 변경으로 주석 타입을 그에 맞췄습니다.

밀린 이야기: 2.5와 2.4.5

2.4와 2.6 사이에 몇몇 릴리스가 여기 글 없이 나갔습니다. 특히 정성적 코딩 작업이 QDA 모드의 바탕이 되는 만큼, 그 핵심들은 짚어 둘 만합니다.

2.5.0은 정성적 코딩의 물결이었습니다. Krippendorff's alpha와 더불어 Cohen's kappa와 Fleiss' kappa, codebookquotation_report 익스포터, 그리고 코드 동시 출현에 대한 관리자 분석과 속성별 코드 교차표를 추가했습니다. 이것들이 바로 QDA 모드가 기반으로 삼는 신뢰도 및 내보내기 구성 요소입니다.

2.4.5는 솔로 모드에서 주석 가이드라인을 개선하기 위한 검증된 정제 프레임워크, 설정 검증 CLI(python -m potato.validate_cli), 그리고 경로 순회 우회에 대한 보안 수정(GHSA-q9m2-fhv9-3jcf)을 가져왔습니다. 더 오래된 2.4.x를 쓰고 있다면, 업그레이드로 그 수정이 함께 적용됩니다.

전체 이력은 새로운 소식 페이지에 있습니다.

받는 방법

bash
pip install --upgrade potato-annotation

그런 다음 동봉된 예제(examples/advanced/qda-mode-example/, examples/ai-assisted/judge-calibration/, examples/agent-traces/trajectory-correction/) 중 하나로 Potato를 향하게 하면 새 화면들이 실제로 동작하는 모습을 볼 수 있습니다. 여기 실린 모든 릴리스는 이 도구를 쓰는 누군가의 질문에서 시작되었습니다. 2.6이 당신에게 하나의 질문을 떠올리게 한다면, GitHub 저장소가 그것을 물어볼 곳입니다.