m97j's picture
Initial commit
361d672
metadata
title: PersonaChatEngine Ai Server
emoji: πŸ‘€
colorFrom: green
colorTo: green
sdk: docker
pinned: false
license: mit

βš™οΈ AI μ„œλ²„ (ai_server/)

μ—­ν•  & 데이터 흐름

  1. κ²Œμž„ μ„œλ²„ μš”μ²­ μˆ˜μ‹ (app.py)

    • μ΅œμ†Œ μž…λ ₯만 와도 λ™μž‘: { text, npc_id, player_id, ... }
    • μ˜΅μ…˜: μƒνƒœ/μ»¨ν…μŠ€νŠΈ λΆ€μ‘± μ‹œ rag/docs/npc_config.json λ“±μ—μ„œ NPC 메타λ₯Ό μ‘°νšŒν•΄ 보강
  2. μ „μ²˜λ¦¬Β·ν”„λ‘¬ν”„νŠΈ ꡬ성(pipeline/preprocess.py, utils/context_parser.py, manager/prompt_builder.py)

    • νƒœκ·Έ/μ»¨ν…μŠ€νŠΈ/ν”Œλ ˆμ΄μ–΄ λ°œν™”λ₯Ό λ¬Άμ–΄ <SYS>, <CTX>, <PLAYER>, <NPC> 포맷으둜 ꡬ성
  3. μΆ”λ‘  μš”μ²­(utils/hf_client.py, models/fallback_model.py, pipeline/generator.py)

    • 쑰건 뢈좩쑱 input β†’ fallback_model.pyμ—μ„œ λŒ€μ²΄ 응닡 생성
    • 쑰건 μΆ©μ‘± input β†’ generator.pyμ—μ„œ payload ꡬ성 ν›„ HF Space /predict_main POST
  4. ν›„μ²˜λ¦¬(pipeline/postprocess.py)

    • λͺ¨λΈ μ‘λ‹΅μ—μ„œ λŒ€μ‚¬ ν…μŠ€νŠΈ, delta, flagλ₯Ό νŒŒμ‹±Β·μ •κ·œν™”
    • flags β†’ μ‹œκ·Έλͺ¨μ΄λ“œ+threshold, delta β†’ λ²”μœ„ ν΄λž¨ν”„Β·λΌμš΄λ”©
  5. κ²Œμž„ μ„œλ²„ 응닡(schemas.py)

    • ν‘œμ€€ JSON으둜 λ°˜ν™˜
    {
      "text": "NPC의 λŒ€λ‹΅...",
      "delta": {"trust": 0.10, "relationship": 0.08},
      "flags": {"give_item": true, "npc_main_story": false},
      "meta": {"npc_id": "mother_abandoned_factory"}
    }
    

πŸ“ 디렉토리 ꡬ쑰

ai-server/
β”œβ”€β”€ app.py                  # FastAPI μ—”νŠΈλ¦¬ν¬μΈνŠΈ
β”œβ”€β”€ config.py               # μ„œλ²„ μ„€μ • 및 λͺ¨λΈ 경둜 관리
β”œβ”€β”€ schemas.py              # μš”μ²­/응닡 데이터 ꡬ쑰 μ •μ˜
β”œβ”€β”€ requirements.txt        # μ˜μ‘΄μ„± νŒ¨ν‚€μ§€ λͺ©λ‘
β”œβ”€β”€ pipeline/               # λŒ€ν™” 흐름 처리 λͺ¨λ“ˆ
β”‚   β”œβ”€β”€ preprocess.py       # μž…λ ₯ μ „μ²˜λ¦¬ 및 ν”„λ‘¬ν”„νŠΈ ꡬ성
β”‚   β”œβ”€β”€ postprocess.py      # λͺ¨λΈ 좜λ ₯ ν›„μ²˜λ¦¬
β”‚   └── generator.py        # λͺ¨λΈ μΆ”λ‘  μš”μ²­ 처리
β”œβ”€β”€ rag/                    # RAG 기반 flag 해석 λͺ¨λ“ˆ
β”‚   β”œβ”€β”€ rag_manager.py
β”‚   └── docs/npc_config.json
β”œβ”€β”€ utils/                  # μœ ν‹Έλ¦¬ν‹° λͺ¨λ“ˆ
β”‚   β”œβ”€β”€ hf_client.py        # HF API 톡신
β”‚   └── context_parser.py   # λŒ€ν™” λ§₯락 νŒŒμ‹±
β”œβ”€β”€ models/                 # λͺ¨λΈ λ‘œλ”© 및 fallback 처리
β”‚   β”œβ”€β”€ emotion_model.py    # emotion model을 μ΄μš©ν•œ inference μ§„ν–‰
β”‚   β”œβ”€β”€ fallback_model.py   # fallback model을 μ΄μš©ν•œ inference μ§„ν–‰
β”‚   └── model_loader.py
└── manager/
    β”œβ”€β”€ agent_manager.py    
    β”œβ”€β”€ dialogue_manager.py # 전체 pipeline λͺ¨λ“ˆ 관리
    └── prompt_builder.py

🧩 μ΅œμ‹  RAG νƒ€μž…λ³„ λ§€ν•‘ (11μ’…)

type 쑰회 μ‹œμ  쑰회 쑰건 μ‚¬μš© λͺ¨λ“ˆ/ν•¨μˆ˜ μ£Όμš” λͺ©μ 
trigger_def preprocess_input npc_id, quest_stage retrieve(...) 메인 경둜 쑰건 νŒμ •
fallback preprocess_input npc_id, quest_stage retrieve(...) fallback prompt ꡬ성
forbidden_trigger_list preprocess_input npc_id _load_forbidden_trigger_data κΈˆμ§€ 트리거 감지
trigger_meta preprocess_input npc_id, trigger _load_trigger_meta 특수 fallback μ‹œ delta/action ν™•μ •
lore build_main_prompt npc_id, quest_stage/any RAG main docs 세계관/λ°°κ²½ μ„€λͺ…
description build_main_prompt npc_id, quest_stage RAG main docs ν˜„μž¬ 상황 μ„€λͺ…
flag_def postprocess_pipeline npc_id, quest_stage, flag_name pre_data["rag_main_docs"] flag threshold/μ˜ˆμ‹œ λ¬Έμž₯
main_res_validate postprocess_pipeline npc_id, quest_stage pre_data["rag_main_docs"] 응닡 검증 κΈ°μ€€
npc_persona build_main_prompt npc_id retrieve(...) NPC μ„±κ²©Β·νŠΉμ„± 반영
dialogue_turn postprocess_pipeline npc_id, quest_stage retrieve(...) λŒ€ν™” μ˜ˆμ‹œ μ°Έμ‘°
(μ—†μŒ) fallback_final_check pre_data["trigger_meta"] - 응닡 의미 일치 검증

πŸ“Œ 데이터 흐름 μš”μ•½

  1. preprocess_input()

    • trigger_def β†’ 메인 쑰건 νŒμ •
    • forbidden_trigger_list + trigger_meta β†’ 특수 fallback 감지
    • fallback β†’ 일반 fallback μŠ€νƒ€μΌ
  2. build_main_prompt()

    • lore + description + npc_persona β†’ 메인 prompt μ»¨ν…μŠ€νŠΈ ꡬ성
  3. build_fallback_prompt()

    • fallback_style + trigger_meta β†’ fallback prompt ꡬ성
  4. postprocess_pipeline()

    • flag_def β†’ flag threshold/μ˜ˆμ‹œ
    • main_res_validate β†’ 응닡 검증
  5. fallback_final_check()

    • trigger_meta β†’ delta/action 의미 일치 검증

πŸ”— ν…ŒμŠ€νŠΈ

μ—…λ°μ΄νŠΈ μ˜ˆμ •


πŸ‘€ PersonaChatEngine AI Server

κ²Œμž„ λ‚΄ NPC λŒ€ν™” μ—”μ§„ API μ„œλ²„μž…λ‹ˆλ‹€.
μ΅œμ†Œ μž…λ ₯λ§ŒμœΌλ‘œλ„ λ™μž‘ν•˜λ©°, RAG 기반 λ¬Έμ„œμ™€ NPC 메타데이터λ₯Ό ν™œμš©ν•΄ λŒ€ν™”λ₯Ό λ³΄κ°•ν•©λ‹ˆλ‹€.

βš™οΈ μ£Όμš” κΈ°λŠ₯

  • κ²Œμž„ μ„œλ²„ μš”μ²­ μˆ˜μ‹  및 μ „μ²˜λ¦¬
  • 쑰건 νŒμ • ν›„ 메인/폴백 λͺ¨λΈ μΆ”λ‘ 
  • RAG 기반 세계관·상황·NPC 성격 반영
  • 응닡 ν›„μ²˜λ¦¬ 및 JSON ν‘œμ€€ 응닡 λ°˜ν™˜