뱅크샐러드에서 합법적으로 Vibe Coding하는 방법
운영자가 DSL로 미션을 만들고 LLM이 초안을 생성·검증하게 했다.
샐러드게임의 미션을 운영자가 자유롭게 바꾸되, 코드 수준의 위험은 막기 위해 샐러드게임 DSL을 도입했다. 핵심은 지출 내역이라는 제한된 입력에 대해 map, filter, reduce 같은 안전한 연산만 허용하는 것이다.
이를 위해 GitLab의 micro-language-framework를 활용해 토큰 파싱과 DSL 골격을 맡기고, 필요한 연산자만 플러그인으로 구현했다. 예를 들어 <= 같은 비교 연산은 desc, symbol, validate, evaluate 인터페이스만 채우면 정의할 수 있었고, 여기에 한글 토큰 지원까지 추가해 운영자가 더 쉽게 읽고 쓰게 했다.
운영자가 한글로 미션 규칙을 입력하면 LLM이 DSL을 제안하도록 백오피스를 설계했다. 프롬프트에는 두 가지 맥락을 함께 넣었다.
- DSL의 문법과 연산자 설명:
desc명령으로 전체 스펙을 텍스트로 주입 - 실제 사용 사례: DB에 쌓인 기존 DSL 예시를 함께 제공
하지만 LLM은 지원하지 않는 기능도 그럴듯하게 만들어내는 hallucination 문제가 있었다. 이를 막기 위해 생성된 DSL이 기대한 결과를 내는지 바로 확인하는 TestSaladgameDSL API를 만들고, 여기에 더해 두 번째 LLM 프롬프트로 생성 결과를 비판적으로 재검토하는 이중 검토를 붙였다.
마지막으로 LLM이 DSL만이 아니라 테스트케이스까지 제안하게 해 경계 조건을 점검했고, 최종적으로는 QA 엔지니어의 수동 테스트를 통과한 미션만 사용자에게 공개했다. 결론적으로, 이 접근은 LLM을 무제한으로 쓰는 방식이 아니라 토큰을 절약하면서도 예측 가능한 결과를 여러 번 재사용하는 DSL 레이어를 만드는 방향이 앞으로의 엔지니어링에 중요하다는 점을 보여준다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.