본문으로 건너뛰기
블로그로 돌아가기

OpenAI Euphony 리뷰: Harmony 대화와 Codex 세션을 브라우저에서 시각화하는 공식 뷰어

7분 읽기0

OpenAI Euphony 리뷰: Harmony 대화와 Codex 세션을 브라우저에서 시각화하는 공식 뷰어

Euphony가 무엇인가

Euphony는 OpenAI가 Apache 2.0 라이선스로 공개한 오픈소스 웹 도구입니다. GitHub(openai/euphony)에 공식 리포가 올라와 있고, 공식 호스팅 앱도 이미 운영 중입니다. 핵심 기능은 두 가지 데이터셋을 브라우저에서 시각화하는 것입니다.

첫 번째는 Harmony 포맷의 대화 데이터입니다. Harmony는 <|start|>, <|end|>, <|message|>, <|channel|> 같은 명시적 역할·채널·정지 토큰으로 설계된 구조적 wire format으로, gpt-oss 모델이 이 포맷으로 훈련되었습니다. 텍스트 에디터로 열면 토큰이 박혀 읽기 어렵습니다.

두 번째는 Codex CLI 세션 로그입니다. Codex CLI를 사용하면 $CODEX_HOME/sessions/YYYY/MM/DD/rollout-*.jsonl 경로에 세션이 자동 저장되는데, 에이전트가 어떤 도구를 호출했고 어떤 응답을 받았는지 추적하려면 장문의 JSONL을 수동으로 파싱해야 했습니다.

Euphony는 둘 다 브라우저에서 타임라인 형태로 펼쳐 보여줍니다. 비유하자면 녹음된 미팅 전사본을 화자·발화 순서대로 정리된 회의록으로 바꿔주는 도구입니다.

왜 이 도구가 필요한가

에이전트 워크플로우 디버깅의 본질은 "무엇이 언제 어떤 순서로 일어났는가"를 재구성하는 것입니다. 하지만 Harmony와 Codex 로그는 기계 처리에 최적화된 포맷이라 사람이 직접 읽기에는 불편합니다.

  • 학습 데이터 감사: Harmony 포맷으로 제공되는 훈련 데이터셋을 검사하려면 메시지 구조를 해석해야 함
  • 에이전트 재현: Codex 세션에서 버그를 재현하려면 수십~수백 턴의 대화를 순서대로 읽어야 함
  • 평가 파이프라인: 모델 응답을 정성 평가할 때 메타데이터와 함께 보는 것이 중요

Euphony는 이 gap을 메우는 공식 도구입니다. OpenAI가 내부적으로 쓰던 검사 도구를 오픈소스로 공개했다는 점에서, 에이전트 디버깅이 표준 워크플로우로 자리잡고 있다는 시그널로 해석할 수 있습니다.

주요 기능 10가지

1. Harmony 대화 뷰어

메시지 타입과 메타데이터별로 구분해 렌더링합니다. 시스템/어시스턴트/유저/툴 채널을 색상과 아이콘으로 분리해 한눈에 흐름을 파악할 수 있습니다.

2. Codex 세션 뷰어

rollout-*.jsonl 파일을 감지해 대화 타임라인으로 변환합니다. 툴 호출, 응답, 에이전트 사고 과정을 시간 순서대로 펼칩니다.

3. 유연한 데이터 로딩

  • 클립보드 붙여넣기
  • 로컬 .json/.jsonl 파일 드래그 앤 드롭
  • 공개 HTTP(S) URL (예: Hugging Face 데이터셋)

세 가지 입력 경로를 모두 지원합니다.

4. Markdown + HTML 렌더링

수식과 선택적 HTML 블록을 포함한 Markdown을 렌더링합니다. 기술 문서를 주고받는 대화에 특히 유용합니다.

5. 번역 기능

비영어 메시지를 영어로 번역합니다. 사용자 OpenAI API 키가 필요하며, frontend-only 모드에서도 동작합니다.

6. 메타데이터 조사

대화 레벨과 메시지 레벨 메타데이터를 UI에 직접 노출합니다. 숨겨진 타임스탬프, 토큰 카운트, 모델 버전 정보를 별도 도구 없이 확인할 수 있습니다.

7. JMESPath 필터링

대용량 데이터셋을 JMESPath 쿼리로 필터링할 수 있습니다. 특정 role, recipient, content type만 골라 보는 포커스 모드도 제공합니다.

8. 그리드와 에디터 모드

  • 그리드 뷰: 데이터셋을 한 눈에 스키밍
  • 에디터 뷰: JSONL을 직접 편집

분석과 수정이 같은 화면에서 가능합니다.

9. Harmony 토큰 상세 뷰

Harmony 렌더러의 출력, 토큰 ID, 디코드된 토큰, 디스플레이 문자열을 모두 볼 수 있습니다. 토크나이저 디버깅에 유용합니다.

10. Web Components 임베드

<euphony-conversation> 커스텀 엘리먼트를 React/Svelte/Vue에 삽입 가능합니다. 프레임워크 중립 설계로 어떤 웹 스택에서도 쓸 수 있습니다.

두 가지 사용 방법

스탠드얼론 앱

설치 없이 공식 호스팅에서 바로 Harmony JSON/JSONL과 Codex JSONL을 뷰어에 올릴 수 있습니다. 가장 빠른 시작 경로입니다.

JS 라이브러리

자체 웹앱에 통합하려면 라이브러리로 빌드합니다.

pnpm install
pnpm run build:library

./lib/euphony.js가 생성되고, 이를 import해서 사용합니다. 자체 제품에 "대화 뷰어"가 필요한 팀에게 유용합니다.

두 가지 실행 모드

Frontend-only 모드 (권장)

정적 호스팅과 외부 배포가 가능한 모드입니다.

  • URL 로딩을 브라우저에서 처리
  • 번역은 사용자 OpenAI API 키로 수행
  • 환경 변수: VITE_EUPHONY_FRONTEND_ONLY=true

공식 호스팅도 이 모드로 동작합니다.

Backend-assisted 모드

로컬 개발용 FastAPI 서버를 띄우는 모드입니다.

  • 대용량 원격 JSON/JSONL 로드
  • 백엔드에서 번역 처리
  • Harmony 렌더링 백엔드 연산

중요: 이 모드는 외부 호스팅에 사용하면 안 됩니다. SSRF(Server-Side Request Forgery) 리스크가 있습니다. OpenAI 공식 문서에도 이 경고가 명시되어 있습니다.

로컬 개발 빠른 시작

# 의존성 설치
pnpm install

# 백엔드 (별도 터미널)
uvicorn fastapi-main:app --app-dir server --host 127.0.0.1 --port 8020 --reload

# 프런트엔드
pnpm run dev

브라우저에서 http://localhost:3000/ 에 접속하면 앱이 뜹니다. Codex CLI 사용자라면 $CODEX_HOME/sessions/ 하위 폴더의 rollout-*.jsonl 파일 하나를 드래그해 올리면 즉시 세션이 복원됩니다.

Web Components 임베드 상세

Euphony의 임베드 기능은 커스텀 웹 엘리먼트로 제공됩니다.

<euphony-conversation src="path/to/conversation.json"></euphony-conversation>

CSS 변수로 테마를 커스터마이징할 수 있습니다.

euphony-conversation {
  --euphony-user-color: #4F46E5;
  --euphony-assistant-color: #10B981;
}

React, Svelte, Vue 등 어떤 프레임워크에서도 일반 HTML 요소처럼 사용할 수 있습니다. 자체 서비스에서 대화 로그를 보여주는 UI가 필요한 경우, 바닥부터 뷰어를 만들 필요 없이 이 컴포넌트를 꽂으면 됩니다.

실전 적용 시나리오

1. Codex CLI 세션 디버깅

에이전트가 예상과 다른 경로로 작업을 진행했을 때, 해당 세션의 rollout-*.jsonl을 Euphony에 올려 각 턴에서 어떤 툴을 호출했고 어떤 응답을 받았는지 시각적으로 검토합니다.

2. 학습 데이터셋 검사

Harmony 포맷으로 공유되는 훈련/평가 데이터셋(예: Hugging Face에 올라온 JSONL)의 URL을 Euphony에 붙여넣어 구조와 품질을 빠르게 확인합니다.

3. 자체 제품 대화 뷰어

챗봇 서비스, AI 에이전트 관리 도구를 만드는 팀이라면 Euphony Web Components를 임베드해 로그 뷰어를 즉시 갖출 수 있습니다. UI 개발 비용을 줄이면서도 OpenAI 표준과 호환성을 확보합니다.

평가: 누구에게 유용한가

사용자 유형유용도이유
Codex CLI 사용자매우 높음세션 로그 복원이 한 번의 붙여넣기로 끝남
gpt-oss 연구자매우 높음Harmony 포맷 감사의 공식 도구
AI 에이전트 개발자높음Web Components로 자체 도구에 통합 가능
LLM 서비스 운영자중간로그 포맷을 Harmony/Codex로 맞춘다면 유용
일반 ChatGPT 사용자낮음대상 포맷이 아님

한계와 유의점

  • Backend 모드 외부 호스팅 금지 (SSRF)
  • 번역 기능은 OpenAI API 키와 비용 필요
  • Harmony 포맷을 쓰지 않는 기존 대화 로그는 변환 과정 필요
  • 아직 초기 버전이므로 대규모 데이터셋에서 성능 이슈 가능성

공식 저장소의 이슈 트래커를 통해 버그 리포트와 기능 요청을 할 수 있습니다.

정리

Euphony는 OpenAI가 자기들 내부 검사 도구를 공개한 오픈소스 프로젝트입니다. Harmony 대화 포맷과 Codex 세션 로그라는 구체적이고 기술적인 문제 영역을 겨냥했지만, Web Components와 라이브러리 형태로 범용 임베드가 가능해 생태계 파급력이 있습니다.

에이전트 워크플로우가 표준화되고 로그 감사의 중요성이 커지는 흐름에서, Euphony 같은 뷰어는 앞으로 더 많이 등장할 것입니다. 먼저 공식 호스팅을 써보고, 필요하면 로컬에 띄우거나 자체 제품에 임베드하는 단계적 접근을 권장합니다.


원문 출처: https://github.com/openai/euphony

관련 링크: