alantech/marsha

Marsha is a functional, higher-level, English-based programming language that gets compiled into tested Python software by an LLM

Marsha – LLM 기반의 "프로그래밍 언어"

무엇인가요 – Marsha는 데이터 처리 작업에 대한 작은 마크다운 스타일의 설명을 작성할 수 있게 해줍니다. 입력과 출력 "타입"을 선언하고, 짧은 자연어 설명을 작성하며, 몇 가지 입력-출력 예제를 제공합니다. Marsha 컴파일러는 이 사양을 LLM(기본적으로 OpenAI API, 그러나 호환되는 모든 엔드포인트가 가능)에 전송하여 Python 코드를 생성하고, 예제를 테스트로 실행하여 검증한 후 실행 가능한 스크립트를 반환합니다.

핵심 아이디어

  • 선언형 구문.mrsh 파일은 마크다운처럼 보입니다. 타입은 CSV 스타일의 테이블로 정의되며, 함수는 # func … 헤딩으로 선언된 후 설명과 예제 블록이 이어집니다.
  • 예제 기반 테스팅 – 제공한 예제는 컴파일러가 생성된 코드를 검증하는 테스트 스위트가 되어, 잘못된 출력의 가능성을 줄입니다.
  • LLM을 백엔드 컴파일러로 사용 – 사양을 Python으로 변환하는 중대한 작업은 LLM이 수행합니다. 설정, 명령줄 플래그, 환경 변수를 통해 모델을 선택할 수 있습니다.
  • 실행 가능한 출력 – 생성된 Python 코드에는 작은 CLI 래퍼(또는 간단한 REST 서버)가 포함되어 있어, 터미널에서 직접 컴파일된 함수를 호출할 수 있습니다.

사용 방법

  1. 리포지토리에서 패키지를 설치합니다:
    uv pip install git+https://github.com/alantech/marsha
    
  2. Marsha 구문(타입 정의, # func … 블록, 설명, 예제)을 사용하여 my_task.mrsh 파일을 작성합니다.
  3. 컴파일합니다:
    python -m marsha my_task.mrsh
    
    명령어는 설정된 LLM에 접속하여 Python 코드를 생성하고, 테스트를 실행한 후 결과 스크립트를 작성합니다.
  4. 생성된 스크립트를 CLI 도구로 또는 소규모 웹 서비스로 실행합니다:
    python -m my_task --help          # 생성된 CLI 옵션 확인
    python -m my_task -s 8080         # REST 서버 시작
    

설정 – Marsha는 표준 OS 위치(~/.config/marsha/config.json 등)에서 JSON 설정 파일을 읽습니다. api_base, api_key, model, model_strong를 설정할 수 있습니다. 환경 변수(OPENAI_ORG, OPENAI_SECRET_KEY/OPENAI_API_KEY)는 기본 OpenAI 백엔드에 사용됩니다. --api-base--model 플래그는 명령줄에서 이 설정을 오버라이드합니다.

명령줄 옵션 (주요 요약):

  • -q – 코드 생성만 수행하고 수정 단계를 건너뜁니다 (저렴하지만 신뢰도는 낮음).
  • -a N – 최대 N번의 컴파일 시도를 하며, 실패 시 재시도합니다.
  • -n N – 각 시도당 N개의 병렬 LLM "사고 경로"를 실행하고, 첫 번째 성공한 경로를 선택합니다.
  • --exclude-main-helper – 자동 생성된 CLI 래퍼를 제외합니다.
  • --exclude-sanity-check – Marsha 정의의 초기 일관성 검사를 건너뜁니다.
  • -s – 컴파일 통계를 파일에 기록합니다.

로드맵 요약

  • 평균 정확도를 90% 이상으로 끌어올립니다.
  • 에디터용 구문 강조 플러그인을 추가합니다.
  • Python 외의 타겟 언어를 지원합니다.
  • 모듈 시스템과 기존 Python 코드를 Marsha 구문으로 되돌리는 "디컴파일러"를 도입합니다.
  • 시각적 GUI 에디터와 더 풍부한 디버깅 도구를 구축합니다.

대상 사용자 – 수동으로 모든 줄을 직접 코딩하지 않고도, 작은 데이터 처리 스크립트(예: pandas 파이프라인)를 더 고수준의 예제 중심 방식으로 생성하고 싶은 개발자이며, 테스트 주도 감시 하에 LLM이 구현을 생성하는 것에 익숙한 사람입니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트