classif: 의미에 따라 분기하는 쉘 스크립트, 로컬 환경에서 단일 토큰의 logprobs를 읽어 사용
요약
본 글은 로컬 모델의 단일 토큰 logprobs를 활용하여 쉘 스크립트 내에서 조건부 분기(classif)가 가능한 도구에 대한 소개입니다. 이 도구는 코드 변경 사항이나 긴 문서를 분석하고, 질문에 대한 레이블과 확률을 얻어 `if`와 `&&` 같은 쉘 명령어와 연동할 수 있게 합니다.
핵심 포인트
- 로컬 모델의 logprobs를 활용하여 쉘 스크립트에서 조건부 분기 구현 가능
- 코드 변경 사항 등 보안 이슈 검토에 유용하며, 빠른 응답 속도를 보여줌
- Ollama 및 GGUF 형태의 다양한 로컬 모델과 호환되어 사용 가능
- Python 3.12 기반으로 외부 의존성이 없어 접근성이 높음
여기 많은 사람들과 마찬가지로, 저는 Jev에게 영감을 받아 제 쉘에서도 비슷한 것을 원했습니다. 그래서 classif를 만들었습니다. 이 도구는 로컬 모델에 텍스트에 대한 질문을 하나 던지고, 단일 토큰의 logprobs에서 답변을 읽어옵니다. 레이블과 확률, 그리고 종료 코드를 얻게 됩니다. 따라서 if와 &&를 사용하여 작업할 수 있습니다: git diff --staged | classif -p "Does this change handle secrets, credentials or who may access what?" | ifne claude -p "Review this change for security issues". 짧은 결정은 num_predict 1을 가진 /api/chat 호출로, 제 12 GB 카드에서 약 0.3초가 걸립니다. 긴 텍스트가 재미있는 부분이었습니다. 절대로 잘리지 않습니다. 코드는 텍스트를 분할하고, embeddinggemma와 BM25가 구절들을 선택하며, 모델이 그 내용을 판단합니다. 『오만과 편견』(772 KB)의 경우, "Does Elizabeth die in this book?"라는 질문에 대해 인덱스 캐싱 시 3초 만에, 그렇지 않다는 답변을 17초 만에 받았습니다. logprobs를 지원하는 모든 Ollama 모델로 작동합니다. 저는 GGUF 형태로 제가 공개한 Gemma 4 파인튜닝 모델인 Winnow-12B를 사용합니다 (약 8 GB 로드). 이 모델은 제 사례에서 기본 Gemma 329보다 325까지 성능을 보여주었는데, 이는 노이즈 범위 내의 수치입니다. Python 3.12이며, 외부 의존성이 없습니다. 코드: https://github.com/Piotr1215/classif 작성기: https://itnext.io/a-bridge-between-code-and-semantic-reasoning-57fc3fc9d32c 혹시 비슷한 것을 실행해 보신 분이 있나요? /u/piotr1215 제출
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기