본문으로 건너뛰기
r/LLMDevs조회 2

비싼 LLM 호출을 일반 코드로 대체한 후의 모습

LLM으로 매문서 추출을 반복 호출하는 대신 LLM이 생성한 TypeScript 추출기 코드를 한 번만 만들고 로컬에서 실행해 비용과 응답 변동성을 제거하는 파이프라인을 제안한다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

비정형 텍스트에서 이름·회사·가격·날짜 등 구조화 필드를 뽑기 위해 매 문서마다 LLM을 호출하면 지속 비용과 응답 일관성 문제에 직면한다. 이 게시물은 LLM에게 일회성으로 추출기 프로그램을 작성하게 한 뒤 그 코드를 로컬에서 반복 실행하는 워크플로를 소개해 매 호출 비용과 변동성을 제거하는 방법을 제시한다. 라벨 단계에서 저비용 모델로 예제를 태깅하고 캐싱해 재라벨링을 피하며, 빌드 단계에서 강한 모델이 TypeScript(정규식·단어 목록·문맥 휴리스틱)를 생성해 검증셋으로 자체 테스트·패치하고 여러 후보를 비교·선발하는 방식으로 추출기를 자동화한다. 최종적으로 생성된 코드를 네트워크나 API 키 없이 로컬에서 실행하면 문서당 처리 시간이 마이크로초 단위로 줄고 결과가 결정론적이 된다. 결과적으로 초기 생성 과정에서는 LLM 호출이 필요하지만 그 후 운영 단계에서는 LLM 호출이 완전히 사라져 비용과 응답 변동성이 크게 줄어든다. 구현체는 npm과 GitHub에 공개되어 있어 실제 코드와 파이프라인을 바로 확인·적용할 수 있다.

실용적 조언

  • 라벨 예제는 data.jsonl에 모아 두고 저비용 모델로 태깅한 뒤 결과를 캐싱해 재작업을 피할 것
  • 생성된 추출기 코드는 TypeScript(정규식·단어 목록·휴리스틱) 형태로 만들고 검증셋으로 반복 테스트해 오류를 패치할 것
  • 여러 후보를 생성해 성능 기준으로 선발하는 population/evolution 방식을 도입하면 단일 모델 오류에 의한 실패를 완화할 수 있다
  • 운영시에는 생성된 코드를 로컬에서 실행해 API 호출·네트워크 의존성을 제거함으로써 비용과 응답 변동성을 낮출 것

섹션별 상세

비정형 텍스트에서 이름·회사·티커·가격·날짜 같은 구조화 필드를 뽑는 문제 때문에 매 문서마다 LLM을 호출하면 비용과 속도, 결과 일관성에서 문제가 발생했다. 해결 방식은 LLM에게 일회성으로 추출기 프로그램을 작성하게 한 뒤 그 코드를 반복 실행하는 것이다. 입력은 원문 텍스트, 처리 단계는 LLM이 코드(정규식·단어 목록·문맥 휴리스틱)를 생성하고 출력은 로컬에서 실행되는 추출 결과이다. 이 접근은 매 호출 비용과 재현성 문제를 동시에 줄인다는 점에서 실무적 이점이 있다.
라벨링 단계는 data.jsonl에 예문을 넣고 저비용 모델(gpt-4o-mini 등)으로 엔티티를 태깅한 뒤 결과를 캐싱해 같은 예제가 다시 라벨링되지 않도록 구성된다. 입력 예제는 라벨링 모델에 들어가고 출력은 태깅된 예제로 저장되며 이후 단계의 학습·평가에 쓰인다. 저비용 모델 사용과 캐싱 근거가 명시되어 있어 라벨링 비용이 반복되지 않음을 보장한다. 라벨링이 일회성 작업이라는 점은 전체 비용을 낮추는 결정적 요인으로 작용한다.
빌드 단계에서는 더 강력한 모델이 라벨링된 데이터와 검증셋을 바탕으로 실제 TypeScript 추출기 코드를 생성하고, 생성된 코드가 보유한 오류를 검증셋으로 찾아 스스로 패치하며 여러 후보를 교배·선발하는 population/evolution 모드로 최적화를 진행한다. 입력은 라벨·검증 데이터와 후보 코드, 처리 흐름은 코드 생성 → 자체 테스트 → 오류 보정 → 후보 선발이고 출력은 최종 선택된 추출기 코드다. 이 과정은 규칙 기반(정규식·단어 목록·문맥 휴리스틱) 코드를 얻기 위해 설계되었고, population 모드는 후보 간 비교를 통해 안정성을 높이는 근거가 된다. 최종 산출물은 사람이 쓴 것과 유사한 결정론적 추출 규칙을 제공해 재현성을 확보한다.
실행 단계는 생성된 TypeScript 코드를 새로운 문서에 로컬에서 실행하는 방식으로, 네트워크·API 키·LLM 호출이 전혀 필요하지 않으며 문서당 처리 시간이 마이크로초 단위로 매우 짧다고 주장한다. 입력은 새 원문 텍스트, 처리는 로컬 추출기 실행, 출력은 구조화된 필드로 즉시 반환되는 워크플로다. 이로 인해 운영 중 지속적인 API 비용과 호출 지연, 그리고 매번 다른 LLM 응답으로 인한 결과 불일치를 제거할 수 있다. 링크된 npm 패키지와 GitHub 저장소가 있어 구현체와 코드를 직접 확인할 수 있다는 점이 실무 적용 근거가 된다.

용어 해설

프로그램 합성(Program Synthesis)
자연어 지시나 예제를 바탕으로 사람이 쓸 법한 실행 코드(정규식·휴리스틱·파서 등)를 자동으로 생성하는 기법으로, 입력 텍스트를 추출 규칙으로 변환해 반복적 LLM 호출을 코드 실행으로 대체하는 방식에서 핵심 역할을 한다.
캐싱(Caching)
한 번 계산한 결과(예: 라벨링된 예제)를 저장해 이후 동일 입력에 대해 재호출을 피하는 방법으로, 라벨링 비용을 한 번으로 제한하고 동일한 입력에 대해 결정론적 결과를 보장하는 데 쓰인다.
검증셋(held-out 예제)(Validation Set)
모델이나 생성된 추출기 코드가 과적합 없이 일반화하는지 확인하기 위해 학습에 쓰이지 않은 예제를 따로 떼어두는 데이터로, 생성된 코드의 테스트·수정·성능 비교에 사용된다.
정규표현식(Regex)
문자열 패턴을 서술해 특정 형식(날짜, 금액, 티커 등)을 추출하는 텍스트 처리 도구로, 자동 생성된 TypeScript 추출기 내부에서 핵심적인 규칙 기반 매칭 수단으로 활용된다.

언급된 도구

@interactkit/distill (npm)추천링크

LLM으로 추출기 코드를 생성하고 로컬에서 실행하는 파이프라인 패키지

gpt-4o-mini중립

저비용 라벨링(예제 태깅)용 LLM

TypeScript중립

생성된 추출기 코드를 실행하는 언어(정규식·휴리스틱 구현)

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 06. 26.수집 2026. 06. 26.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.