This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
제가 만든 것
우리는 AI가 생성한 글쓰기가 점점 더 흔해지는 시대를 살고 있지만, 그 내용의 상당 부분이 놀라울 정도로 비슷하게 들립니다.
사람들이 일반적인 AI 비서(AI assistants)를 사용하여 이메일, 학술 논문 또는 기술 보고서를 다듬을 때, 원래의 작문 스타일이 반복적인 유행어(buzzwords), 예측 가능한 문장 구조, 그리고 획일적인 기업 어조로 대체될 수 있습니다.
학생, 연구원, 전문가 및 콘텐츠 제작자에게 이는 문제를 야기합니다. 바로 그들의 글쓰기가 자신만의 개성을 담고 있는 개인의 목소리(personal voice)와 자연스러운 리듬을 잃어버릴 수 있다는 것입니다.
이것이 제가 InkFlow: 적응형 작문 쌍둥이 및 Anti-AI 슬롭 엔진을 구축한 이유입니다.
InkFlow는 사용자가 자신의 개별 스타일을 보존하면서 글쓰기 실력을 향상시키는 데 도움을 주도록 설계된 적응형 작문 비서입니다.
주요 기능은 네 가지입니다:
- 개인 스타일 유전체(Personal Style Genome): 2분간의 언어 교정 연습을 사용하여 격식성, 문장 길이 변화, 어휘 다양성, 절 구조, 구두점 습관 등을 포함하는 사용자 작문 스타일의 8차원 프로필을 구축합니다.
- AI 슬롭 탐지(AI-Slop Detection): 일반적인 합성 글쓰기 클리셰를 식별하고 초안이 평범하게 들리게 만드는 구절들을 강조 표시합니다.
- 4단계 재작성 파이프라인(Four-Stage Rewrite Pipeline): 텍스트를 생성하거나 변환하고, 원치 않는 스타일 패턴을 제거하며, 의미적 일관성을 확인하고, 저자의 구두점 선호도를 보존하도록 설계된 가벼운 문법 검사를 수행합니다.
- 적응형 스타일 학습(Adaptive Style Learning): 세션 전반에 걸친 작문 변화를 추적하고 단일 편집에 과민 반응하기보다는 반복되는 스타일 선호도를 통합합니다.
InkFlow는 자신의 목소리를 잃지 않으면서 글쓰기 지원을 원하는 대학생, 학계 종사자, 비원어민 영어 전문가, 콘텐츠 제작자 및 기술 작가들을 위해 설계되었습니다.
부업: 수익화(Monetization)
InkFlow는 프리미엄 모델(freemium model)을 따릅니다.
무료 플랜 (Free Tier): 하루 1,500단어 사용 가능, 개인 Style Genome 프로필 1개 제공, AI-slop 하이라이팅 기능 및 Humanize Studio 이용 가능.
Pro 플랜 — 월 ₹39: 무제한 일일 단어 수 제공, 다양한 상황에 맞는 여러 작문 프로필 제공, 그리고 UPI, 카드, 인터넷 뱅킹을 지원하는 통합 Razorpay 결제를 통해 더 높은 용량의 open-weight 모델에 우선 접근할 수 있습니다.
이 목표는 학생들과 독립 크리에이터들에게 개인화된 작문 도움 서비스를 합리적인 가격으로 제공하는 것입니다.
데모 (Demo)
실시간 웹 애플리케이션: https://ink-flow-twin.vercel.app
백엔드 API: https://inkflow-backend-73hf.onrender.com
데모 비디오:
favicon drive.google.com
탐색해 볼 수 있는 몇 가지 기능은 다음과 같습니다:
- Humanize Studio: 초안이나 원본 글머리 기호를 붙여넣고, 흔한 AI 작문 클리셰를 식별하며, 문자 단위 구두점 차이로 텍스트를 다듬을 수 있습니다.
- 2분 음성 보정 (Two-Minute Voice Calibration): 네 가지 언어학 연습을 완료하여 개인화된 Style Genome을 생성합니다.
- 문장 리듬 분석 (Sentence Cadence Analytics): 단락 전반에 걸친 문장 길이 변화를 검사할 수 있습니다.
- 직접 AI 작가 (Direct AI Writer): 이메일과 강의 노트를 작성한 후, Humanize Studio를 통해 다듬을 수 있습니다.
코드 (Code)
GitHub 저장소: https://github.com/SoumyaGhosh2006/InkFlow
이 프로젝트는 모듈식 풀스택 아키텍처를 사용합니다.
백엔드: FastAPI, Python 3.11+, 비동기 MongoDB 접근을 위한 Motor, Groq 추론, Pydantic v2, Razorpay 통합, Sentry 트레이싱 및 Pytest.
프론트엔드: React 19, TypeScript, Vite, Tailwind CSS, Framer Motion, Zustand, Radix UI, Lucide icons 및 Firebase Authentication.
이 저장소에는 작문 파이프라인, 스타일 보정, 인증 및 구독 워크플로우 구현이 포함되어 있습니다.
제작 과정 (How I Built It)
1. 이중 계층 오픈 가중치 추론 (Dual-Tier Open-Weight Inference)
InkFlow는 단일 모델에 의존하기보다는 Groq를 통해 주(Primary) 모델과 보조(Fallback) 모델을 사용합니다.
- 주 모델:
openai/gpt-oss-120b는 복잡한 스타일 변환, 미묘한 재작성, 그리고 Style Genome 조건화 처리를 담당합니다.
- 보조 모델:
openai/gpt-oss-20b는 주 모델이 타임아웃, 속도 제한(rate limits), 또는 지연 문제에 직면했을 때 더 가벼운 대안을 제공합니다.
백엔드는 FastAPI를 사용하여 React 프런트엔드로부터 요청을 조정하고 이를 순차적 재작성 파이프라인으로 라우팅합니다.
2. 8차원 스타일 게놈 (The Eight-Dimensional Style Genome)
"내 어조로 이것을 다시 써줘"와 같은 일반적인 지침은 종종 유용한 글쓰기 스타일의 표현이라기보다는 과장된 모방품을 생성하는 경우가 많습니다.
InkFlow는 대신 짧은 언어적 보정 연습(linguistic calibration exercise)을 사용하여 사람이 글을 쓰는 방식의 다양한 측면을 포착합니다.
여덟 가지 차원은 다음과 같습니다:
- 격식성 (Formality): 학술적 언어와 대화적 표현 사이의 균형.
- 통사 밀도 (Syntactic Density): 문장에서 종속절이 나타나는 빈도.
- 어휘 엔트로피 (Lexical Entropy): 어휘 다양성과 변화.
- 폭발성 분산 (Burstiness Variance): 짧은 진술부터 더 길고 복잡한 문장까지의 문장 길이 변화.
- 구두점 시그니처 (Punctuation Signature): 저자가 사용한 대시, 세미콜론, 쉼표 및 기타 구두점.
- 절 연결성 (Clause Chaining): 저자가 관련 아이디어를 연결하는 방식.
- 축약 비율 (Contraction Ratio): "don't"나 "it's"와 같은 형태의 빈도.
- 어조 친화도 (Tone Affinity): 글이 단정적인지, 탐색적인지, 분석적인지, 또는 실용적인 경향이 있는지 여부.
이러한 차원들을 종합하면 개인의 선호도에 맞춰 글쓰기 과정을 조정하기 위한 보다 구조화된 출발점을 제공합니다.
3. 4단계 순차적 재작성 파이프라인 (The Four-Stage Sequential Rewrite Pipeline)
InkFlow는 네 단계를 거쳐 글을 처리합니다.
1단계 — 기본 초안 생성 (Base Draft Generation): 원본 글머리 기호를 확장하거나 원래의 주장을 유지하면서 첫 번째 초안을 만듭니다.
스테이지 2 — 스타일 변환 및 슬롭 제거: 사용자의 Style Genome을 적용하고 흔한 합성 클리셰를 제거합니다.
스테이지 3 — 의미적 충실도 확인 (Semantic Fidelity Check): 변환된 텍스트가 원문의 의미를 유지하는지 확인하며, 상당한 의미 이탈(semantic drift)이 감지되면 재시도를 트리거합니다.
스테이지 4 — 개성 보존 문법 검사 (Quirk-Preserving Grammar Pass): 오류를 수정하면서도 특징적인 구두점 선택과 의도적인 스타일 패턴을 유지하려고 시도합니다.
최종 결과물에는 문자 단위의 차이점이 포함되어 사용자가 단순히 재작성된 초안을 맹목적으로 수락하는 대신 변경 사항을 검사할 수 있습니다.
4. 엔지니어링 과제 및 해결책 (Engineering Challenges and Solutions)
과제 1: 개인 구두점 유지하기 (Preserving Personal Punctuation)
기존의 문법 교정기는 사람의 글쓰기 스타일 일부인 대시(em-dashes), 세미콜론(semicolons) 등의 구두점 습관을 제거할 수 있습니다.
InkFlow는 문법 교정을 별도의 스테이지로 분리하고 결정론적 검사(deterministic checks)를 사용하여 이러한 선호도를 보호하는 데 도움을 줍니다.
과제 2: 의미 이탈 방지 (Preventing Semantic Drift)
공격적인 클리셰 제거는 중요한 문맥, 숫자 또는 사실적 주장을 실수로 제거할 수 있습니다.
InkFlow는 의미 있는 편차를 감지하고 재작성된 텍스트가 원문을 더 이상 적절하게 반영하지 못할 때 재시도하도록 설계된 의미 검증 스테이지(semantic verification stage)를 포함합니다.
과제 3: 모바일 작성 경험 개선 (Improving the Mobile Writing Experience)
나란히 편집하는 레이아웃은 작은 화면에서 사용하기 어려울 수 있습니다.
모바일 인터페이스는 원본 초안과 인간화된 결과물 사이를 전환하는 분할형 스위처(segmented switcher), 감지된 구절에 대한 간결한 경고 스트립, 그리고 재작성 후 결과물로 자동 전환되는 기능을 사용합니다.
과제 4: 인증 강화 (Strengthening Authentication)
개발 과정 중, 모의 인증 토큰(mock authentication tokens)은 방문자가 자신의 계정으로 로그인하는 대신 테스트 세션을 상속받을 위험을 초래했습니다.
프로덕션 구현에서는 모의 토큰(mock tokens)을 거부하고, 프론트엔드 폴백 토큰을 제거하며, Firebase 브라우저 세션 지속성 기능을 사용하고, 비활성 기반 로그아웃 정책을 포함합니다. 또한 이 애플리케이션은 사용자들에게 보호되는 작업을 수행하기 위해 로그인하도록 유도하는 동시에 초안 작성 기능(drafting features)을 탐색할 수 있도록 허용합니다.
5. 구독 및 신뢰성 (Subscription and Reliability)
InkFlow는 Firebase Authentication과 Razorpay 기반의 구독 워크플로우를 결합합니다. 백엔드에는 Pydantic 요청 유효성 검사(request validation), Sentry 추적(tracing), 그리고 자동화된 테스트가 포함되어 있습니다.
주 모델 및 폴백 모델 구성은 주 추론 서비스에 문제가 발생했을 때 복원력(resilience)을 개선하도록 설계되었습니다.
이러한 구성 요소들은 개인화된 작문 지원을 실용적이고 저렴하게 만드는 프로젝트의 광범위한 목표를 지원합니다.
Open Innovation은 왜 중요한가?
작문은 개인적인 것이기 때문에 오픈 혁신(Open innovation)은 중요합니다. 사람들은 AI가 자신의 단어를 어떻게 변화시킬지 강요받는 대신, 더 많은 통제권을 가져야 합니다.
작문 스타일에 대한 더 큰 통제권: 오픈 가중치 모델(open-weight models)은 개발자들에게 프롬프트, 모델 선택, 스타일 조건화 기법(style-conditioning techniques)을 실험할 수 있는 더 많은 유연성을 제공합니다. 이는 일반적인 기업의 목소리 대신 개인의 선호도에 맞춰 작문 도우미를 구축하는 것을 가능하게 합니다.
더 유연한 추론: InkFlow는 주 모델과 폴백 모델을 사용하여, 애플리케이션이 단일 모델 구성에 전적으로 의존하지 않고 모델 가용성 및 지연 시간 문제에 대응하도록 돕습니다.
저렴한 접근성: 이 프로젝트는 오픈 가중치 추론(open-weight inference)과 학생 및 독립 창작자를 대상으로 하는 저가 구독 모델을 결합합니다.
저자성에 대한 초점: 목표는 사람의 아이디어를 기계 생성된 산문으로 대체하는 것이 아닙니다. 이는 사람들이 자신의 기존 아이디어를 더 명확하게 표현하도록 돕고, 그들의 작문을 식별 가능하게 만드는 특징들을 유지하는 것입니다.
InkFlow는 오픈 가중치 AI가 어떻게 더욱 개인화된 작문 경험을 지원할 수 있는지에 대한 탐구입니다.
나의 에이전트 세션
InkFlow 설계: 적응형 작문 쌍둥이, Anti-AI 슬롭 엔진 및 심리언어학적 유전자체
당신
대학생과 전문가를 위한 적응형 개인 작문 쌍둥이이자 anti-AI-슬롭 어시스턴트인 InkFlow를 구축해 봅시다. 상업용 AI 작문 도구들은 텍스트를 로봇 같은 진부한 표현('tapestry 속으로 깊이 파고들다', '결정적인 증거')으로 소독하고 균질화합니다. 우리에게 필요한 것은 다음과 같습니다: 1) 복원력 있는 2단계 오픈 웨이트 추론 엔진 (Groq openai/gpt-oss-120b 주력, 20b 폴백), 2) 슬롭(slop)을 제거하지만 개인의 구두점 습관(em 대시, 세미콜론, 회화적 쉼표 연결 등)은 엄격히 보존하는 4단계 순차 재작성 파이프라인, 3) 2분짜리 심리언어학적 음성 교정 드릴 (Pennebaker & King 1999 + Boston Cookie Theft), 그리고 4) 일일/주간 단어 할당량 추적입니다.
더 보기
에이전트
저는 FastAPI 백엔드와 React 19 / TypeScript 프런트엔드를 사용하여 4단계 순차 재작성 파이프라인과 8차원 심리언어학적 스타일 유전자체 추출기(Psycholinguistic Style Genome extractor)를 준수하며 InkFlow를 설계할 것입니다:
- backend/services/providers.py: Groq 추론을 구성하여 2단계 제공 (openai/gpt-oss-120b 주력, connect=2.5s / read=9.0s 타임아웃, 800ms 이내 openai/gpt-oss-20b로 자동 장애 조치).
- backend/services/pipeline.py: 1단계(생성), 2단계(어조 및 슬롭 제거), 3단계(이유 기반 재시도를 통한 의미 확인, 드리프트 >15% 시), 그리고 4단계(인간의 구두점 습관을 보존하는 비파괴적 경미한 문법 검사)를 구현했습니다.
- backend/services/grill.py & DrillCard.tsx: 제약 없는 작문을 8가지 심리언어학적 매개변수(격식성, 통사 밀도, 어휘 엔트로피, 폭발성 분산, 구두점 서명, 절 연결, 어조, 축약형)에 매핑하는 2분짜리 음성 교정 드릴을 설계했습니다.
- backend/services/quota.py: 무료 등급에서 하루 1,500 단어 할당량 초기화를 지연 적용하도록 강제했습니다.
더 보기
▸ write_to_file backend/app/services/pipeline.py
입력
backend/app/services/pipeline.py
출력
이유 인지적 의미 재시도(reason-aware semantic retry) 및 구두점 보호 게이트를 갖춘 4단계 순차 변환 파이프라인을 생성했습니다.
▸ write_to_file backend/app/services/providers.py
Input
backend/app/services/providers.py
Output
세분화된 연결 시간 초과를 갖춘 이중 계층 Groq LPU 프로바이더 장애 조치(120B 주 -> 20B 대체)를 구현했습니다.
▸ run_command pytest tests -q
Input
Output
39개 테스트 통과, 실패 없음. 프로바이더 장애 조치, 4단계 재시도 게이트, 구두점 보존, 및 할당량 초기화를 검증했습니다.