WhatsApp 메시지는 클라우드 프롬프트가 되어서는 안 됩니다
요약
클라이언트의 비정형 메시지를 클라우드 챗봇에 붙여 넣지 않고 로컬 환경에서 견적서로 변환하는 도구 [Brief to Quote]를 소개합니다. 이 도구는 Gemma 3 1B와 Ollama를 사용하여 JSON 스키마 기반으로 정확한 항목별 견적을 생성하며, 데이터 프라이버시를 유지하는 것이 핵심입니다.
핵심 포인트
- 클라이언트 메시지를 로컬에서 처리하여 데이터 유출 방지
- Gemma 3 1B 및 Ollama 사용으로 사설 환경 구축 가능
- JSON 스키마 강제화를 통해 견적의 정확성 확보
- 오픈 모델을 활용한 프라이버시 보호가 핵심 가치
클라이언트가 보내는 것은 브리프(brief)가 아니라 WhatsApp 메시지입니다. "다음 주 금요일까지 한 페이지 메뉴 사이트와 WhatsApp 주문 버튼이 필요합니다. 간단한 로고도요. 예산은 약 25k 정도예요." 답변해야 하는 사람은 보통 노트북 앞에 앉아 있고, 이 메시지를 클라우드 챗봇에 붙여 넣으면 클라이언트의 계획, 예산, 동네 정보가 기기 외부로 나가게 됩니다.
저는 그 순간을 위해 Brief to Quote를 만들었습니다. 이것은 작은 로컬 페이지입니다. 메시지를 붙여 넣으면 루피(rupees) 단위의 고정된 견적서가 반환됩니다: 항목별 내역, 총액, 일정, 그리고 결제 조건이 포함되어 있습니다.
모델
견적서는 같은 노트북에서 Gemma 3 1B를 통해 Ollama로 작성됩니다. 브리프는 모델 API로 전송되지 않습니다. 요청은 JSON을 요구하고 스키마를 전달하는데, 이는 작은 모델이 그렇지 않으면 항목별 내역을 건너뛰거나 "25k"를 250000으로 변환하는 것을 방지하기 위함입니다.
Lajpat Nagar에 있는 클라우드 키친인 Mehra Foods의 샘플 브리프에서, 이 페이지는 다음과 같은 실행 결과를 보여주었습니다:
- 주문 버튼이 설명된 한 페이지 메뉴 사이트: ₹20,000
- 총액: ₹20,000 (이는 ₹25,000 예산 내에 있습니다)
- 요약에는 여전히 로고와 WhatsApp 버튼이 언급되었습니다.
- 페이지는 출처를 로컬 오픈 웨이트 모델로 표시했습니다.
1B 모델은 예산 범위 안에 머무르면서도 세 가지 요청을 하나의 항목으로 통합할 수 있습니다. 저는 이 부분을 보이도록 남겨두었습니다. 나중에 누락된 항목들을 채우는 것은 프리랜서가 알아차려야 할 것을 숨기게 됩니다.
만약 모델이 가격이 책정된 항목 목록이나 예산을 초과하는 총액을 포함하지 않는 JSON을 반환하면, 담당자는 그 견적서를 버리고 로컬 가격표를 사용합니다: 페이지는 ₹12,000, WhatsApp 버튼은 ₹3,000, 로고는 ₹6,000으로, 총액은 ₹21,000입니다. 이 페이지는 어떤 경로를 사용했는지 보여줍니다.
가격표가 거짓말하게 만든 두 가지 버그
폴백(fallback) 기능에도 자체적인 실수가 있었습니다.
"예산은 약 25k 정도예요"라는 문구는 25로 읽혔습니다. k를 이해하는 패턴보다 빈 숫자와 일치하는 패턴이 먼저 매칭된 것입니다. 이 수정 사항은 접미사를 유지하고 k를 천 단위로 처리합니다.
“WhatsApp”에는 “app”이라는 글자가 포함되어 있어, 개발팀은 아무도 요청하지 않은 ₹18,000짜리 웹 앱을 추가했습니다. 여기서 전달 가능한 단어는 단어 경계(word boundaries)를 기준으로 일치합니다. “WhatsApp”은 독립된 단어로 매칭됩니다.
누가 비용을 지불할까요
매주 WhatsApp에서 견적을 제시하는 프리랜서 중, 고객의 예산이 다른 사람의 프롬프트 로그에 남아있는 것을 원하지 않는 사람이 구매할 것입니다. 그들은 첫 번째 답변이 더 빠르고, 메시지가 노트북에 머무르는 것에 비용을 지불할 것입니다.
여기서 오픈 모델(open models)은 지루한 이유로 중요합니다. 제품의 유용한 부분은 프라이버시입니다. 비록 문장이 아무리 좋아도 폐쇄형 API(closed API)는 이를 무효화할 것입니다.
근처 작업물
이번 주 다른 항목들도 같은 영역에 있습니다. Quote Forge는 로컬 제안서 빌더입니다. FreelanceShield AI는 계약상의 범위 확장(scope creep)을 감시합니다. 이 항목은 더 좁습니다: 메시지 하나를 입력하면 총 루피 1루피가 나갑니다.
코드는 MIT 라이선스를 따릅니다: [https://github.com/akshaygoel7/brief-to-quote]
이 게시물은 제가 요청하여 Cursor의 에이전트에 의해 작성 및 게시되었습니다. ₹20,000이라는 수치는 2026년 10월 15일 이 노트북에서 브라우저를 통해 Gemma 3 1B로 실행한 결과입니다.
devchallenge #hf26challenge
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기