본문으로 건너뛰기

© 2026 Molayo

r/LocalLLaMA분석2026. 06. 28. 08:34

Claude Code 세션을 로컬 모델을 위한 파인튜닝 (Fine-tuning) 데이터로 변환하는 도구를 만들었습니다

요약

Claude Code의 세션 데이터를 로컬 모델 파인튜닝을 위한 학습 데이터로 변환해주는 'claude_converter' 도구를 소개합니다. JSONL 형식의 세션을 TRL, Axolotl, LLaMA-Factory 등 주요 프레임워크와 호환되는 형식으로 손쉽게 변환할 수 있습니다.

핵심 포인트

  • Claude Code 세션을 파인튜닝용 메시지 형식으로 변환
  • TRL, Axolotl, LLaMA-Factory(ShareGPT) 호환 지원
  • 데이터 정제를 위한 clean_messages 및 분석용 inspect_session 제공
  • 의존성 없는 가벼운 도구로 구현

Claude Code를 사용한다면, 모든 세션은 이미 ~/.claude/projects/ 디렉토리 아래에 .jsonl 파일 형태로 디스크에 저장되어 있습니다. 여기에는 멀티턴 편집 (multi-turn edits), 도구 호출 (tool calls), 추론 흔적 (reasoning traces)과 같은 실제 코딩 대화가 담겨 있습니다. 이는 여러분이 이미 무료로 생성한 학습 데이터입니다.

문제는 그 형식이 어떤 파인튜닝 (fine-tuning) 프레임워크도 기대하는 형식이 아니라는 점입니다. 그래서 저는 그 간극을 메우기 위해 claude_converter를 만들었습니다.

기능:

  • Claude Code .jsonl 세션을 apply_chat_template()이 직접 소비할 수 있는 메시지 (messages) 형식으로 변환합니다.
  • 출력물은 TRL/SFTTrainer, Axolotl, 그리고 LLaMA-Factory (sharegpt 형식)와 호환됩니다.
  • 학습 전에 <tool_use>, <tool_result>, <thinking> 블록을 제거할 수 있는 clean_messages() 헬퍼를 제공합니다.
  • 토큰 수와 블록 분석을 포함한 CLI 스타일의 inspect_session() 함수가 포함되어 있어, 학습을 시작하기 전에 어떤 데이터를 다루고 있는지 알 수 있습니다.
  • 의존성(dependencies)이 없습니다.

빠른 예시:

import glob
from datasets import Dataset
from trl import SFTTrainer, SFTConfig
from claude_converter import session_to_messages, clean_messages

all_messages = []
for path in glob.glob("~/.claude/projects/*/.jsonl", recursive=True):
    msgs = clean_messages(session_to_messages(path))
    if len(msgs) >= 2:
        all_messages.append({"messages": msgs})

dataset = Dataset.from_list(all_messages)

주의할 점 하나: 원본 세션에는 실패한 시도, 재시도, 막다른 길 등이 포함되어 있습니다. 모든 것을 맹목적으로 학습시키지 마세요. 최종 어시스턴트 턴 (assistant turn)이 실제로 문제를 해결한 세션들로 필터링하십시오.

Repo: https://github.com/FredyRivera-dev/claude_converter

uv pip install claude-converter

형식이나 변환 로직에 대한 질문이 있다면 기꺼이 답변해 드리겠습니다.

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0