본 게시물은 Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass에 제출하는 글입니다.
제가 만든 것 (What I built)
ChromaWild는 색상 산책(color walk) 및 현장 기록 일지입니다. 사용자가 야외에서 찾아야 할 특정 색상을 제공하고, 발견한 것을 비교하며, 현장 메모를 저장하고 관찰 스케치를 할 수 있게 해줍니다.
저는 이 프롬프트가 사람들이 실제로 걸어 다니는 장소(공원, 보도, 버스 정류장, 놀이터, 건물, 공공 예술 작품, 하늘의 한 부분, 또는 식물 등)에서 작동하도록 만들고 싶었습니다. 반드시 야생 트레일일 필요는 없습니다.
색상과 주제는 Gemma가 Ollama를 통해 함께 생성합니다. 이 앱은 고정된 색상 목록에서 색상을 선택하고 미리 설정된 자연 주제를 붙이는 대신, 모델에게 신선하고 일관성 있는 프롬프트를 요청합니다.
데모 (Demo)
아직 호스팅되는 데모는 없습니다. 이 앱은 로컬에서 실행되며, 저장소 README에 설정 단계가 나와 있습니다: github.com/sleepyaishik69/ChromaWild.
로컬에서 퀘스트를 생성하려면 Ollama를 설치하고 ollama pull gemma2:2b를 실행한 다음, npm run dev로 앱을 시작하세요.
작동 방식 (How it works)
브라우저가 색상 매칭과 현장 기록(field entries), 사진, 스케치 및 진행 상황을 로컬 저장소에 보관합니다. 새로운 퀘스트를 위해 Next.js API 라우트는 Ollama에게 제목, 색상, 주제, 야외 힌트를 요청한 다음, 반환된 필드와 Hex 값을 확인하고 사용합니다.
모델 프롬프트에는 광범위한 주제 목록이 포함됩니다:
const categories = [
'plants', 'animals', 'water', 'sky', 'architecture', 'street',
'transit', 'public art', 'playgrounds', 'outdoor objects',
...
기본 모델은 설정 가능합니다:
model: process.env.OLLAMA_MODEL || 'gemma2:2b',
format: 'json',
요청 경로는 다음과 같습니다:
flowchart LR
Browser[ChromaWild in browser] -->|퀘스트 요청| Next[Next.js API 라우트]
Next -->|프롬프트| Ollama[로컬 Ollama 및 Gemma]
...
구현은 gemma API 라우트에서 확인할 수 있습니다. 저장소에는 또한 설정 지침, 기여 및 보안 참고 사항, 그리고 린팅(linting), 타입 검사(type checking), 빌드용 GitHub Actions 워크플로우가 포함되어 있습니다.
오픈 모델이 여기서 중요한 이유
Ollama를 사용하면 기본 색상 퀘스트 생성이 앱을 호스팅하는 장치에서 실행됩니다. 설정을 변경하여 다른 Ollama 모델을 시도할 수 있으며, 핵심 기능을 유료 추론 API에 종속시키지 않습니다. 이는 로컬 실험을 가능하게 하고 기본 퀘스트 프롬프트를 로컬 장치에 유지하게 합니다.
물론 트레이드오프가 있습니다: 사용자는 Ollama를 설치하고 모델을 다운로드해야 하며, 생성 속도는 하드웨어에 따라 달라집니다. 호스팅된 앱 설정은 다릅니다: 서버에서 Ollama에 접근할 수 있어야 하며, 이 프로젝트는 공개 배포 전에 여전히 API 보호가 필요합니다. 선택적 Groq 평가 및 ElevenLabs 음성 사용은 구성하는 경우 외부 서비스를 이용합니다.
앱의 공개 GitHub 저장소는 올라왔지만, 아직 프로젝트 라이선스를 선택해야 합니다. 또한 ChromaWild를 실제 색상 산책에 가져가서 일상적인 동네에서 어떤 프롬프트들이 쉽게 발견되는지 확인하고 싶습니다.
수상 부문
ChromaWild는 기본 설정에서 Gemma가 퀘스트를 생성하기 때문에 Gemma의 최적 활용(Best Use of Gemma) 부문에 적합해 보입니다. 만약 이 챌린지에 별도의 카테고리 제출 단계가 있다면, 그곳에서 선택할 것입니다.
관련 읽을거리