--- title: Maple Npc Generator emoji: ๐Ÿš€ colorFrom: gray colorTo: blue sdk: static pinned: false --- # ๐Ÿ ๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ NPC ์„ฑ๊ฒฉ ๋Œ€ํ™” ์ƒ์„ฑ๊ธฐ ### MapleStory NPC Personality Dialogue Generator > **Big Five ์„ฑ๊ฒฉ ๋ชจ๋ธ ๊ธฐ๋ฐ˜ LLM NPC ๋Œ€ํ™” ์ƒ์„ฑ ์‹œ์Šคํ…œ** > A real-time NPC dialogue generation system powered by Gemini AI and the Big Five personality model. [![Live Demo](https://img.shields.io/badge/๐Ÿ%20Live%20Demo-maple--npc--generator.vercel.app-brightgreen)](https://maple-npc-generator.vercel.app/) [![Vercel](https://img.shields.io/badge/Deployed%20on-Vercel-black)](https://vercel.com) [![Gemini](https://img.shields.io/badge/Powered%20by-Gemini%203%20Flash-blue)](https://ai.google.dev) --- ## ๐ŸŽฎ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ 20๋…„๊ฐ„ ๊ฒŒ์ž„์ฝ˜ํ…์ธ , ๋ ˆ๋ฒจ๋””์ž์ธ์„ ๋‹ด๋‹นํ•˜๋ฉฐ ์ฒด๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. **"์ˆ˜๊ฐœ์›” ๊ณต๋“ค์—ฌ ๋งŒ๋“  ์ฝ˜ํ…์ธ ๊ฐ€ ๋‹จ ๋ฉฐ์น  ๋งŒ์— ๊ณ ๊ฐˆ๋œ๋‹ค."** NPC ๋Œ€ํ™”๋Š” ๊ฒŒ์ž„ ๋ชฐ์ž…๊ฐ์˜ ํ•ต์‹ฌ์ด์ง€๋งŒ, ์ˆ˜๋ฐฑ ๋ช…์˜ NPC์—๊ฒŒ ์ผ์ผ์ด ๊ฐœ์„ฑ ์žˆ๋Š” ๋Œ€์‚ฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋ง‰๋Œ€ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์‹ฌ๋ฆฌํ•™์˜ **Big Five ์„ฑ๊ฒฉ ๋ชจ๋ธ**์„ ๊ฒŒ์ž„ NPC์— ์ ์šฉํ•˜์—ฌ, AI๊ฐ€ NPC์˜ ์„ฑ๊ฒฉ์— ๋งž๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ๋Œ€ํ™”๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. > *"์ด๋ก ์„ ๋„˜์–ด์„  ์‹ค์ฒด โ€” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ํ˜„์žฅ์˜ ๋ฌธ์ œ๋ฅผ AI๋กœ ์ง์ ‘ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค."* --- ## ๐Ÿš€ Live Demo **๐Ÿ‘‰ [https://maple-npc-generator.vercel.app/](https://maple-npc-generator.vercel.app/)** ์Šฌ๋ผ์ด๋”๋กœ NPC์˜ Big Five ์„ฑ๊ฒฉ ์ˆ˜์น˜๋ฅผ ์กฐ์ •ํ•˜๊ณ , ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋‹ฌ๋ผ์ง€๋Š” ๋Œ€ํ™” ์Šคํƒ€์ผ์„ ์ง์ ‘ ์ฒดํ—˜ํ•ด๋ณด์„ธ์š”. --- ## ๐Ÿง  Big Five ์„ฑ๊ฒฉ ๋ชจ๋ธ (OCEAN) ์‹ฌ๋ฆฌํ•™์˜ ํ‘œ์ค€ ์„ฑ๊ฒฉ ๋ชจ๋ธ์„ NPC ๋Œ€ํ™” ์ƒ์„ฑ์— ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. | ํŠน์„ฑ | ์˜๋ฌธ | ๋‚ฎ์„ ๋•Œ | ๋†’์„ ๋•Œ | |------|------|---------|---------| | **๊ฐœ๋ฐฉ์„ฑ** | Openness | ์ „ํ†ต์ , ํ˜„์‹ค์  | ์ฐฝ์˜์ , ํ˜ธ๊ธฐ์‹ฌ ๋งŽ์Œ | | **์„ฑ์‹ค์„ฑ** | Conscientiousness | ์ฆ‰ํฅ์ , ์œ ์—ฐํ•จ | ์ฒด๊ณ„์ , ์ฑ…์ž„๊ฐ ๊ฐ•ํ•จ | | **์™ธํ–ฅ์„ฑ** | Extraversion | ์กฐ์šฉํ•จ, ๋‚ด์„ฑ์  | ํ™œ๋ฐœํ•จ, ์‚ฌ๊ต์  | | **์นœํ™”์„ฑ** | Agreeableness | ์ง์„ค์ , ๊ฒฝ์Ÿ์  | ๊ณต๊ฐ์ , ํ˜‘๋ ฅ์  | | **์‹ ๊ฒฝ์„ฑ** | Neuroticism | ์•ˆ์ •์ , ์นจ์ฐฉํ•จ | ๊ฐ์ •์ , ์˜ˆ๋ฏผํ•จ | ๊ฐ ์ˆ˜์น˜๋Š” LLM ํ”„๋กฌํ”„ํŠธ์˜ **personality ํŒŒ๋ผ๋ฏธํ„ฐ**๋กœ ๋ณ€ํ™˜๋˜์–ด Gemini์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์‹ ๊ฒฝ์„ฑ(Neuroticism) ์ˆ˜์น˜๋Š” ๋ชจ๋ธ์˜ `temperature` ๊ฐ’์—๋„ ์ง์ ‘ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ``` temperature = 0.7 + (neuroticism / 200) ``` --- ## ๐Ÿ—๏ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ``` [์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €] โ”‚ โ”‚ POST /api/chat (NPC ์„ค์ • + Big Five ์ˆ˜์น˜ + ๋Œ€ํ™” ํžˆ์Šคํ† ๋ฆฌ) โ–ผ [Vercel Edge Function] โ† GEMINI_API_KEY (์„œ๋ฒ„์—๋งŒ ์กด์žฌ, ์™ธ๋ถ€ ๋…ธ์ถœ ์—†์Œ) โ”‚ โ”‚ Streaming SSE โ–ผ [Gemini 3 Flash Preview] โ”‚ โ”‚ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต โ–ผ [์‚ฌ์šฉ์ž ํ™”๋ฉด์— ํƒ€์ดํ•‘ ํšจ๊ณผ๋กœ ์ถœ๋ ฅ] ``` **API ํ‚ค ๋ณด์•ˆ:** ํด๋ผ์ด์–ธํŠธ ๋ฒˆ๋“ค์— ํ‚ค๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ณ , Vercel ์„œ๋ฒ„์‚ฌ์ด๋“œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ๋งŒ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. --- ## ๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ | ๋ถ„๋ฅ˜ | ๊ธฐ์ˆ  | |------|------| | **Frontend** | React 18, TypeScript, Vite, Tailwind CSS | | **AI** | Google Gemini 3 Flash Preview (`gemini-3-flash-preview`) | | **๋ฐฐํฌ** | Vercel (Edge Functions) | | **์• ๋‹ˆ๋ฉ”์ด์…˜** | Motion (Framer Motion) | | **์•„์ด์ฝ˜** | Lucide React | --- ## ๐Ÿ“ฆ ์„ค์น˜ ๋ฐ ์‹คํ–‰ ### 1. ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํด๋ก  ```bash git clone https://github.com/Taewan627/maple-npc-generator.git cd maple-npc-generator ``` ### 2. ํŒจํ‚ค์ง€ ์„ค์น˜ ```bash npm install ``` ### 3. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ```bash cp .env.example .env ``` `.env` ํŒŒ์ผ์„ ์—ด๊ณ  Gemini API ํ‚ค ์ž…๋ ฅ: ``` GEMINI_API_KEY=AIza... ``` > API ํ‚ค ๋ฐœ๊ธ‰: [Google AI Studio](https://aistudio.google.com) โ†’ Get API key ### 4. ๋กœ์ปฌ ์‹คํ–‰ ```bash npm run dev ``` `http://localhost:5173` ์ ‘์† --- ## ๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ``` โ”œโ”€โ”€ api/ โ”‚ โ””โ”€โ”€ chat.ts # Vercel Edge Function (Gemini API ํ˜ธ์ถœ, ํ‚ค ๋ณดํ˜ธ) โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ App.tsx # ๋ฉ”์ธ UI ์ปดํฌ๋„ŒํŠธ โ”‚ โ”œโ”€โ”€ types.ts # Big Five ํƒ€์ž… ์ •์˜ โ”‚ โ”œโ”€โ”€ services/ โ”‚ โ”‚ โ””โ”€โ”€ geminiService.ts # API Route ํ˜ธ์ถœ ๋ฐ SSE ์ŠคํŠธ๋ฆผ ํŒŒ์‹ฑ โ”‚ โ””โ”€โ”€ data/ โ”‚ โ””โ”€โ”€ maple_knowledge.json # ๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ์„ธ๊ณ„๊ด€ ์ง€์‹๋ฒ ์ด์Šค โ”œโ”€โ”€ vercel.json # Vercel ๋ผ์šฐํŒ… ์„ค์ • โ””โ”€โ”€ vite.config.ts # Vite ๋นŒ๋“œ ์„ค์ • ``` --- ## ๐Ÿ”ฌ ๋…ผ๋ฌธ ์—ฐ๊ตฌ ์—ฐ๊ณ„ ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ ์—ฐ๊ตฌ์˜ **์‹ค์ฆ ์‹œ์Šคํ…œ(Proof of Concept)** ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. > **"LLM ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„ NPC ํŽ˜๋ฅด์†Œ๋‚˜์˜ ์„ฑ๊ฒฉ ์ฐจ๋ณ„์„ฑ ๋ฐ ์ผ๊ด€์„ฑ ๊ฒ€์ฆ์„ ์œ„ํ•œ ์ •๋Ÿ‰์  ํ”„๋ ˆ์ž„์›Œํฌ ์—ฐ๊ตฌ: Big Five ๋ชจ๋ธ์„ ์ค‘์‹ฌ์œผ๋กœ"** > KCI ๋“ฑ์žฌ์ง€| ํ•œ๊ตญ ๋””์ง€ํ„ธ์ฝ˜ํ…์ธ  ํ•™ํšŒ **์—ฐ๊ตฌ ํ•ต์‹ฌ ์งˆ๋ฌธ:** - Big Five ์ˆ˜์น˜ ๋ณ€ํ™”๊ฐ€ LLM ์ถœ๋ ฅ์˜ ์„ฑ๊ฒฉ ์ฐจ๋ณ„์„ฑ์— ์œ ์˜๋ฏธํ•œ ์˜ํ–ฅ์„ ์ฃผ๋Š”๊ฐ€? - ๋™์ผ NPC์— ๋Œ€ํ•œ ๋ฐ˜๋ณต ์ƒ์„ฑ ์‹œ ์„ฑ๊ฒฉ ์ผ๊ด€์„ฑ์ด ์œ ์ง€๋˜๋Š”๊ฐ€? - ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ AI ๊ธฐ๋ฐ˜ NPC ๋Œ€ํ™” ์ƒ์„ฑ์ด ์ œ์ž‘ ํšจ์œจ์„ ๊ฐœ์„ ํ•˜๋Š”๊ฐ€? ์ด ์‹œ์Šคํ…œ์€ ์œ„ ์—ฐ๊ตฌ ๊ฐ€์„ค์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ **A/B ํ…Œ์ŠคํŠธ ๋ฐ ์‚ฌ์šฉ์ž ์‹คํ—˜ ํ”Œ๋žซํผ**์œผ๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. --- ## ๐Ÿ‘ค ๊ฐœ๋ฐœ์ž **๊น€ํƒœ์™„ (Taewan Kim)** ์„œ๊ฐ•๋Œ€ํ•™๊ต ๊ฐ€์ƒ์œตํ•ฉ ํ…Œํฌ๋†€๋กœ์ง€ ๋ฐ•์‚ฌ๊ณผ์ • - ๐Ÿค— HuggingFace: [huggingface.co/devmeta](https://huggingface.co/devmeta) - ๐Ÿ™ GitHub: [github.com/Taewan627](https://github.com/Taewan627) --- ## ๐Ÿ“„ License MIT License