risum 모듈 — RISU modules[] — 기능 확장
👍 56 · 조회 1502 · 2025-12-11
뮤즈 프롬프트 v2.2.2 모듈 다운로드 ▲ CLICK ABOVE TO DOWNLOAD ▲ <span class="fr-mk" style="display:none"> </span><span class="fr-mk" style="display:none"> </span><span class="fr-mk" style="display:none"> </span> ➤ 쓰는법 / Usage LBI 위 옵션 확인 필수입니다 기본 세팅 기준 프롬프트 토큰 1741. 가볍습니다. ➤ 이야기 / Changelog Intro 뮤즈 프롬프트는 순문학적인 RP를 지향합니다. 간단하고 편안하게, 토글의 큰 조작 없이 사용자인 제가 소설 속으로 들어가고 싶어서 제작했습니다. 더 뛰어난 묘사력, 명확한 작업 범위를 만들어 LLM이 소설 작가로써 최선을 다하도록 했고, 또한 XML 구조도를 채택해 다양한 종류의 캐릭터 / 세계관을 지원할 수 있게 하였습니다. 몰입도 있는 RP를 원하신다면 사용해 보세요. 사설 모듈이 드디어 나왔습니다. 정규식 등은 없고, 오직 리퀘스트 수정 용 모듈입니다. 다음부턴 사칭 방지를 강화하겠습니다. 테크니컬 XML로 챗을 묶어서 보내는 모듈을 추가했습니다. 글로벌 활성화 켜주세요. 로어북을 위로 올려도 큰 성능 차이가 없어서, 오히려 구조상 이것이 더 적절할 거 같아 변형했습니다. 추후 실험적으로 모델 출력이 없는, 항상 single-turn인 것도 실험해볼 생각입니다. ➤ 감사인사 / Credits Anthropic's Claude system prompt 나 그리고 나 또 나 뮤즈프롬 언급이 너무 없어서 챗붕들에게는 2.2 버전 감사인사 없습니다. 네 아직도 존나 삐져있습니다.
2.2.2 버전부터 챗 보내는 로직용으로 사용합니다.
{
"name": "🎶뮤즈 프롬프트 챗 감싸주기🎶",
"description": "2.2.2 버전부터 챗 보내는 로직용으로 사용합니다.",
"id": "2cddf65f-2002-4bce-8dc9-cf5c433b13d7",
"hideIcon": false,
"trigger": [
{
"comment": "",
"type": "start",
"conditions": [],
"effect": [
{
"type": "triggerlua",
"code": "listenEdit(\"editRequest\", function(triggerId, data)\n -- 1) Convert every system except the first one into user\n local seenSystem = false\n for _, e in ipairs(data) do\n if e.role == \"system\" then\n if seenSystem then e.role = \"user\" else seenSystem = true end\n end\n end\n\n -- 2) Remove NewChat marker, keep startIdx (= next index in original stream)\n local startIdx = 1\n for i, e in ipairs(data) do\n if e.memo == \"NewChat\" then\n startIdx = i + 1\n table.remove(data, i)\n break\n end\n end\n\n -- 3) Merge consecutive same-role messages\n local merged = {}\n for _, e in ipairs(data) do\n local role = e.role\n local content = e.content or \"\"\n local last = merged[#merged]\n if last and last.role == role then\n last.content = last.content .. \"\\n\" .. content\n else\n merged[#merged + 1] = { role = role, content = content }\n end\n end\n\n -- 4) Find last assistant turn (in merged)\n local lastAsst = nil\n for i = #merged, 1, -1 do\n if merged[i].role == \"assistant\" then\n lastAsst = i\n break\n end\n end\n\n -- 5) Wrap+concat everything BEFORE the last assistant; stop wrapping at last assistant (+ next user)\n local function wrapUser(s) return \"<user_input>\" .. s .. \"</user_input>\" end\n local function wrapAsst(s) return \"<Gemini_output>\" .. s .. \"</Gemini_output>\" end\n\n local wrapped = {}\n local cutoff = lastAsst and (lastAsst - 1) or #merged\n for i = 1, cutoff do\n local e = merged[i]\n if e.role == \"user\" then\n wrapped[#wrapped + 1] = wrapUser(e.content)\n elseif e.role == \"assistant\" then\n wrapped[#wrapped + 1] = wrapAsst(e.content)\n end\n end\n\n local out = {}\n\n -- history blob: wrapped XML concatenated, forced to role=\"user\"\n if #wrapped > 0 then\n out[#out + 1] = { role = \"user\", content = table.concat(wrapped, \"\\n\\n\") .. \"\\n\\n\" }\n end\n\n -- tail: unwrapped, roles preserved (assistant stays assistant, user stays user)\n local tailStartOutIdx = nil\n if lastAsst then\n tailStartOutIdx = #out + 1\n out[#out + 1] = { role = merged[lastAsst].role, content = merged[lastAsst].content }\n\n if merged[lastAsst + 1] and merged[lastAsst + 1].role == \"user\" then\n out[#out + 1] = { role = merged[lastAsst + 1].role, content = merged[lastAsst + 1].content }\n end\n end\n\n -- tailStartOutIdx tells external logic where \"last assistant pair\" begins in returned list\n return out, startIdx, tailStartOutIdx\nend)\n"
}
],
"lowLevelAccess": false
}
],
"lowLevelAccess": false,
"regex": [],
"lorebook": [],
"namespace": "muse_wrapper",
"assets": []
}