MiroFish๋Š” ๋‰ด์Šค, ์ •์ฑ…, ๊ธˆ์œต ์‹ ํ˜ธ ๊ฐ™์€ ์”จ์•— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์œผ๋ฉด ๋‹ค์ˆ˜์˜ ์—์ด์ „ํŠธ๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋””์ง€ํ„ธ ์„ธ๊ณ„๋ฅผ ๋งŒ๋“ค์–ด ๋ฏธ๋ž˜ ์ „๊ฐœ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ฒ ๋‹ค๋Š” ํ”„๋กœ์ ํŠธ๋‹ค. ํ•œ๋งˆ๋””๋กœ โ€œ์˜ˆ์ธก์šฉ ์—์ด์ „ํŠธ ์ƒŒ๋“œ๋ฐ•์Šคโ€์— ๊ฐ€๊น๋‹ค.

์ด ๋ ˆํฌ๋Š” 3์œ„ ยท โญ +17.6K๋กœ ํšŒ์ž๋œ ํ”„๋กœ์ ํŠธ๋‹ค. ๋ณ„ ์ˆซ์ž๋งŒ ๋ณด๋ฉด ์œ ํ–‰์ฒ˜๋Ÿผ ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์ง€๊ธˆ ์–ด๋””์— ์‹œ๊ฐ„์„ ์“ฐ๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๊ฝค ์†”์งํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚ธ๋‹ค. ์—์ด์ „ํŠธ ๋ถ ์†์—์„œ๋„ MiroFish๊ฐ€ ์œ ๋‚œํžˆ ๋ˆˆ์— ๋ˆ ์ด์œ ๋Š” ๋‹จ์ˆœ ์ฑ—๋ด‡์ด ์•„๋‹ˆ๋ผ โ€œ๋ฌด์ˆ˜ํ•œ ๊ฐœ์ฒด๊ฐ€ ์›€์ง์ด๋Š” ์‚ฌํšŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜โ€์„ ๋‚ด์„ธ์› ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ๊ตฌ์กฐ๊ฐ€ ํฌ๊ณ  ๊ณผ๊ฐํ•ด์„œ ๊ถ๊ธˆํ•ด์ง€๊ณ , ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ์ •์น˜ยท์—ฌ๋ก ยท์†Œ์„ค ๊ฒฐ๋ง๊นŒ์ง€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•œ๋‹ค๋Š” ๊ทธ๋ฆผ์ด ๊ฐ•ํ•˜๊ฒŒ ๋จนํžŒ๋‹ค.

flowchart LR
A[๋ฌธ์ œ] --> B[mirofish]
B --> C[์„ค์น˜]
C --> D[์ตœ์†Œ ์‹คํ—˜]
D --> E[์—…๋ฌด ์ ์šฉ ํŒ๋‹จ]

์น ํŒ ํŒ์„œํ˜• ์น˜ํŠธ์‹œํŠธ

  • ์ด ๋ ˆํฌ์˜ ํ•œ ์ค„ ํ‚ค์›Œ๋“œ๋Š” mirofish๋‹ค.
  • ์ด๋ฒˆ ๋ณด๊ฐ•์—์„œ๋Š” ์„ค์น˜์™€ ์‚ฌ์šฉ ์ˆœ์„œ๋ฅผ ๊ณต์‹ README ๊ธฐ์ค€์œผ๋กœ ๋” ์ด˜์ด˜ํ•˜๊ฒŒ ์ •๋ฆฌํ–ˆ๋‹ค.
  • ์ฝ์„ ๋•Œ๋Š” ์ „์ œ ์กฐ๊ฑด โ†’ ์„ค์น˜ โ†’ ์ฒซ ์‹คํ–‰ โ†’ ๊ฒ€์ฆ ์ˆœ์„œ๋กœ ๋ณด๋ฉด ๋œ๋‹ค.
  • โ€œ๋Œ€๋‹จํ•ด ๋ณด์ธ๋‹คโ€๋ณด๋‹ค โ€œ๋‚ด ์—…๋ฌด์—์„œ ๋ฐ˜๋ณต ๋น„์šฉ์„ ์ค„์ด๋Š”๊ฐ€โ€๋ฅผ ๋จผ์ € ๋ณธ๋‹ค.

์ด ๋ ˆํฌ๋ฅผ ํ•œ ์ค„๋กœ ๋ณด๋ฉด

MiroFish๋Š” ๋‰ด์Šค, ์ •์ฑ…, ๊ธˆ์œต ์‹ ํ˜ธ ๊ฐ™์€ ์”จ์•— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์œผ๋ฉด ๋‹ค์ˆ˜์˜ ์—์ด์ „ํŠธ๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋””์ง€ํ„ธ ์„ธ๊ณ„๋ฅผ ๋งŒ๋“ค์–ด ๋ฏธ๋ž˜ ์ „๊ฐœ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ฒ ๋‹ค๋Š” ํ”„๋กœ์ ํŠธ๋‹ค. ํ•œ๋งˆ๋””๋กœ โ€œ์˜ˆ์ธก์šฉ ์—์ด์ „ํŠธ ์ƒŒ๋“œ๋ฐ•์Šคโ€์— ๊ฐ€๊น๋‹ค.

์™œ ์ง€๊ธˆ ์ด ๋ ˆํฌ๊ฐ€ ๋œจ๋Š”๊ฐ€

์—์ด์ „ํŠธ ๋ถ ์†์—์„œ๋„ MiroFish๊ฐ€ ์œ ๋‚œํžˆ ๋ˆˆ์— ๋ˆ ์ด์œ ๋Š” ๋‹จ์ˆœ ์ฑ—๋ด‡์ด ์•„๋‹ˆ๋ผ โ€œ๋ฌด์ˆ˜ํ•œ ๊ฐœ์ฒด๊ฐ€ ์›€์ง์ด๋Š” ์‚ฌํšŒ ์‹œ๋ฎฌ๋ ˆ์ด์…˜โ€์„ ๋‚ด์„ธ์› ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ๊ตฌ์กฐ๊ฐ€ ํฌ๊ณ  ๊ณผ๊ฐํ•ด์„œ ๊ถ๊ธˆํ•ด์ง€๊ณ , ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ๋Š” ์ •์น˜ยท์—ฌ๋ก ยท์†Œ์„ค ๊ฒฐ๋ง๊นŒ์ง€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•œ๋‹ค๋Š” ๊ทธ๋ฆผ์ด ๊ฐ•ํ•˜๊ฒŒ ๋จนํžŒ๋‹ค.

๋ ˆํฌ ์•ˆ์—์„œ ๋จผ์ € ๋ณผ ๊ฒƒ

  • GraphRAG ๊ธฐ๋ฐ˜ ๊ทธ๋ž˜ํ”„ ๊ตฌ์ถ•๊ณผ ๊ฐœ์ฒด ๊ธฐ์–ต ์ฃผ์ž… ๋‹จ๊ณ„
  • ํ™˜๊ฒฝ ๊ตฌ์„ฑ ํ›„ ๋‹ค์ˆ˜ ์—์ด์ „ํŠธ๊ฐ€ ๋ณ‘๋ ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ๋ฆ„
  • ๋ณด๊ณ ์„œ ์ƒ์„ฑ๊ณผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์„ธ๊ณ„ ๋‚ด๋ถ€ ์บ๋ฆญํ„ฐ์™€์˜ ์‹ฌํ™” ๋Œ€ํ™” ๊ธฐ๋Šฅ

์„ค์น˜ ์ „์— ํ™•์ธํ•  ๊ฒƒ

  • Node.js 18+
  • Python 3.11 ์ด์ƒ 3.12 ์ดํ•˜
  • uv ์ตœ์‹  ๋ฒ„์ „
  • LLM API Key์™€ ZEP API Key

์„ค์น˜ ๋ฐฉ๋ฒ•

๊ณต์‹ ํ™•์ธ ๋งํฌ

์†Œ์Šค์ฝ”๋“œ๋กœ ์„ค์น˜(๊ถŒ์žฅ)

git clone https://github.com/666ghj/MiroFish.git
cd MiroFish
cp .env.example .env

๊ทธ๋‹ค์Œ .env์— ์ตœ์†Œ ์•„๋ž˜ ๊ฐ’์€ ์ฑ„์›Œ์•ผ ํ•œ๋‹ค.

LLM_API_KEY=your_api_key
LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
LLM_MODEL_NAME=qwen-plus
ZEP_API_KEY=your_zep_api_key

์˜์กด์„ฑ์€ ํ•œ ๋ฒˆ์— ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

npm run setup:all

๋‹จ๊ณ„๋ณ„๋กœ ๋‚˜๋ˆ„๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ํ•œ๋‹ค.

npm run setup
npm run setup:backend

์‹คํ–‰์€ ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ ํ•œ๋‹ค.

npm run dev

์ •์ƒ์ด๋ผ๋ฉด ํ”„๋ก ํŠธ์—”๋“œ๋Š” http://localhost:3000, ๋ฐฑ์—”๋“œ API๋Š” http://localhost:5001์—์„œ ์—ด๋ฆฐ๋‹ค.

Docker๋กœ ๋น ๋ฅด๊ฒŒ ๋„์šฐ๊ธฐ

cp .env.example .env
docker compose up -d

README ๊ธฐ์ค€์œผ๋กœ Docker๋Š” ๋ฃจํŠธ์˜ .env๋ฅผ ์ฝ๊ณ , ๊ธฐ๋ณธ ํฌํŠธ๋Š” 3000(ํ”„๋ก ํŠธ์—”๋“œ) / 5001(๋ฐฑ์—”๋“œ)๋‹ค. ๋กœ์ปฌ ์˜์กด์„ฑ ์„ค์น˜๊ฐ€ ๋ฒˆ๊ฑฐ๋กœ์šฐ๋ฉด ์ด ๊ฒฝ๋กœ๊ฐ€ ๋” ํŽธํ•˜๋‹ค.

์„ค์น˜ ํ™•์ธ

  • http://localhost:3000์ด ์—ด๋ฆฌ๋Š”์ง€ ๋ณธ๋‹ค.
  • ๋ฐฑ์—”๋“œ๊ฐ€ 5001 ํฌํŠธ์—์„œ ์‚ด์•„ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
  • ์ดˆ๊ธฐ ์‹คํ—˜์—์„œ๋Š” ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ผ์šด๋“œ๋ฅผ ๋„ˆ๋ฌด ํฌ๊ฒŒ ์žก์ง€ ๋ง๊ณ  README ๊ถŒ์žฅ๋Œ€๋กœ 40๋ผ์šด๋“œ ๋ฏธ๋งŒ์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค.

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  1. UI์— seed material์„ ๋„ฃ๋Š”๋‹ค. README ์„ค๋ช…๋Œ€๋กœ ๋ฐ์ดํ„ฐ ๋ถ„์„ ๋ฆฌํฌํŠธ๋‚˜ ์†Œ์„ค ํ…์ŠคํŠธ์ฒ˜๋Ÿผ ์ถœ๋ฐœ ์žฌ๋ฃŒ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  2. ์˜ˆ์ธก ์š”๊ตฌ์‚ฌํ•ญ์„ ์ž์—ฐ์–ด๋กœ ์ ๋Š”๋‹ค. ์งˆ๋ฌธ์ด ๋„“์œผ๋ฉด ๊ฒฐ๊ณผ๋„ ํ๋ ค์ง€๋‹ˆ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ์ขํžˆ๋Š” ํŽธ์ด ์ข‹๋‹ค.
  3. Graph Building โ†’ Environment Setup โ†’ Simulation โ†’ Report Generation ์ˆœ์„œ๋กœ ์ง„ํ–‰๋˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ณธ๋‹ค.
  4. ๊ฒฐ๊ณผ ๋ณด๊ณ ์„œ๊ฐ€ ๋‚˜์˜ค๋ฉด ๊ทธ๊ฑธ ์ •๋‹ต์ฒ˜๋Ÿผ ๋ฏฟ๊ธฐ๋ณด๋‹ค, ์–ด๋–ค ๋ณ€์ˆ˜์— ๋ฏผ๊ฐํ•œ์ง€ ์ถ”๊ฐ€ ์งˆ๋ฌธ์„ ๋‹ค์‹œ ๋˜์ ธ๋ณธ๋‹ค.

์ฒ˜์Œ์—๋Š” โ€œ์ •์น˜/๊ธˆ์œต ๋Œ€์˜ˆ์ธกโ€๋ณด๋‹ค ์ข์€ ์งˆ๋ฌธ์ด ์ข‹๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด ์ •์ฑ… ์ดˆ์•ˆ์ด ๊ณต๊ฐœ๋์„ ๋•Œ ์ดํ•ด๊ด€๊ณ„์ž ๋ฐ˜์‘์ด ์–ด๋–ป๊ฒŒ ๊ฐˆ๋ฆด๊นŒ์ฒ˜๋Ÿผ ๋ฌป๊ณ , ์†Œ๊ทœ๋ชจ ๋ผ์šด๋“œ๋กœ ๋จผ์ € ๋Œ๋ฆฌ๋Š” ํŽธ์ด ์•ˆ์ •์ ์ด๋‹ค. ๊ณต์‹ README๋„ ๋น„์šฉ์„ ์ด์œ ๋กœ ์ ์€ ๋ผ์šด๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ผ๊ณ  ์•ˆ๋‚ดํ•œ๋‹ค.

์–ด๋””์— ๋ฐ”๋กœ ์จ๋จน์„ ์ˆ˜ ์žˆ๋‚˜

์‚ฌ๋ก€ A. ์—ฌ๋ก  ๋ณ€ํ™” ๊ฐ€์„ค ์ ๊ฒ€

์–ด๋–ค ์ด์Šˆ๊ฐ€ ์ปค์งˆ ๋•Œ ์ดํ•ด๊ด€๊ณ„์ž๋ณ„ ๋ฐ˜์‘์„ ๊ฐ€์ •ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด seed ์ž๋ฃŒ์™€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋„ฃ์–ด ๋ฐ˜์‘ ๊ตฌ์กฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์‹ค์ „์—์„œ๋Š” ์ •๋‹ต ๊ธฐ๊ณ„๋ผ๊ธฐ๋ณด๋‹ค ์˜์‚ฌ๊ฒฐ์ • ์ „์— ์งˆ๋ฌธ ๋ชฉ๋ก์„ ๋„“ํ˜€์ฃผ๋Š” ๋„๊ตฌ์— ๊ฐ€๊น๋‹ค.

์‚ฌ๋ก€ B. ์Šคํ† ๋ฆฌ/์ฝ˜ํ…์ธ  ์‹คํ—˜

์†Œ์„ค ๊ฒฐ๋ง์ด๋‚˜ ์„ธ๊ณ„๊ด€ ์ „๊ฐœ์ฒ˜๋Ÿผ ์ •๋Ÿ‰ ๋ฐ์ดํ„ฐ๊ฐ€ ์•ฝํ•œ ์ฃผ์ œ์—์„œ๋„ ์•„์ด๋””์–ด ์ƒŒ๋“œ๋ฐ•์Šค๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ •ํ™•๋„๋ณด๋‹ค โ€œ๊ฐ€๋Šฅํ•œ ์ „๊ฐœ๋ฅผ ํ’๋ถ€ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š”๊ฐ€โ€๊ฐ€ ๋” ์ค‘์š”ํ•˜๋‹ค.

์ฒ˜์Œ ํ•ด๋ณผ ์ตœ์†Œ ์‹คํ—˜

  1. ๋ผ์ด๋ธŒ ๋ฐ๋ชจ๋ฅผ ๋จผ์ € ์—ด์–ด ๊ฒฐ๊ณผ๋ฌผ ๊ฐ์„ ์žก๋Š”๋‹ค.
  2. ๋กœ์ปฌ์—์„œ๋Š” .env๋ฅผ ์ฑ„์šด ๋’ค npm run dev๋กœ UI๋ฅผ ๋„์šด๋‹ค.
  3. ์งง์€ seed ์ž๋ฃŒ์™€ ๋ช…ํ™•ํ•œ ์งˆ๋ฌธ 1๊ฐœ๋งŒ ๋„ฃ์–ด ์ฒซ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  4. ๋ณด๊ณ ์„œ์—์„œ ํฅ๋ฏธ๋กœ์šด ๊ฐ€์„ค 2~3๊ฐœ๋ฅผ ๋‹ค์‹œ ํ™•์ธ ์งˆ๋ฌธ์œผ๋กœ ์žฌ์‹คํ–‰ํ•œ๋‹ค.

๊ฒ€์ฆ ํฌ์ธํŠธ๋Š” ๊ฐ„๋‹จํ•˜๋‹ค. ์ข‹์€ ์‹คํ—˜์€ โ€œ๋งž์ท„๋‹คโ€๋ณด๋‹ค โ€œ๊ฒฐ์ • ์ „์— ์–ด๋–ค ์งˆ๋ฌธ์„ ์ƒˆ๋กœ ์•Œ๊ฒŒ ๋๋Š”๊ฐ€โ€๋กœ ํ‰๊ฐ€ํ•˜๋Š” ํŽธ์ด ๋‚ซ๋‹ค. ๊ฒฐ๊ณผ๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๋‹จ์ •์ ์ด๋ฉด ์˜คํžˆ๋ ค ๊ฒฝ๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.

๋ณผ ๋•Œ ์ฃผ์˜ํ•  ์ 

  • ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์–ธ์ฒ˜๋Ÿผ ๋ฐ›์•„๋“ค์ด๋ฉด ์œ„ํ—˜ํ•˜๋‹ค.
  • LLM API์™€ Zep ๊ฐ™์€ ์™ธ๋ถ€ ์˜์กด์„ฑ์ด ์žˆ์–ด ๋น„์šฉ๊ณผ ์„ค์ • ๋ถ€๋‹ด์ด ์žˆ๋‹ค.
  • ์ดˆ๋ฐ˜ ๋ฐ๋ชจ๋Š” ์ธ์ƒ์ ์ด์ง€๋งŒ, ์‹ค์ œ ์—…๋ฌด์— ์“ฐ๋ ค๋ฉด ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ํ’ˆ์งˆ ๊ด€๋ฆฌ๊ฐ€ ํ•„์ˆ˜๋‹ค.

๋‹ค์Œ ์ฝ๊ธฐ

์ด ๊ธ€์€ AI๋ฅผ ํ™œ์šฉํ•ด ์ดˆ์•ˆ์„ ์ •๋ฆฌํ–ˆ๊ณ , GitHub README์™€ ๊ณต์‹ ๋งํฌ๋ฅผ ๋‹ค์‹œ ํ™•์ธํ•ด ์‹ค๋ฌด ์ ์šฉ ๊ด€์ ์œผ๋กœ ํ’€์–ด์ผ๋‹ค.