taeaiai commited on
Commit ·
5cd474d
1
Parent(s): a9e316b
Add 공문/보고서 mode toggle with separate system prompts
Browse files- static/index.html +30 -2
static/index.html
CHANGED
|
@@ -128,6 +128,16 @@
|
|
| 128 |
<section class="panel">
|
| 129 |
<h2>입력</h2>
|
| 130 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 131 |
<label for="prompt">내용 요점</label>
|
| 132 |
<textarea id="prompt" rows="10" placeholder="예: 5.13(수) 부사장 회의 참석 요청, 9~10시, 본사 회의실. 전 부서장 참석 필요. 회의 자료 5.12까지 제출."></textarea>
|
| 133 |
|
|
@@ -163,7 +173,7 @@ const setStatus = (msg, isError = false) => {
|
|
| 163 |
statusEl.classList.toggle('error', isError);
|
| 164 |
};
|
| 165 |
|
| 166 |
-
const
|
| 167 |
|
| 168 |
[작성 규칙]
|
| 169 |
- 형식: 수신 / 제목 / 본문 / 붙임(있을 경우) / 발신명의
|
|
@@ -176,6 +186,24 @@ const SYSTEM_PROMPT = `당신은 한국 행정 공문 작성 전문가입니다.
|
|
| 176 |
- 마크다운 기호(**, *, #, -) 절대 사용 금지
|
| 177 |
- 군더더기 없이 핵심만, 추측 금지`;
|
| 178 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 179 |
function buildUserPrompt() {
|
| 180 |
return $('prompt').value.trim();
|
| 181 |
}
|
|
@@ -229,7 +257,7 @@ async function generate() {
|
|
| 229 |
headers: { 'Content-Type': 'application/json' },
|
| 230 |
body: JSON.stringify({
|
| 231 |
messages: [
|
| 232 |
-
{ role: 'system', content:
|
| 233 |
{ role: 'user', content: buildUserPrompt() },
|
| 234 |
],
|
| 235 |
max_new_tokens: 600,
|
|
|
|
| 128 |
<section class="panel">
|
| 129 |
<h2>입력</h2>
|
| 130 |
|
| 131 |
+
<label>문서 양식</label>
|
| 132 |
+
<div class="row" style="gap:16px; margin-bottom:8px;">
|
| 133 |
+
<label style="display:flex; align-items:center; gap:6px; font-size:14px; color:var(--text); cursor:pointer;">
|
| 134 |
+
<input type="radio" name="doc-mode" value="공문" checked> 공문 (수신/제목/본문/발신)
|
| 135 |
+
</label>
|
| 136 |
+
<label style="display:flex; align-items:center; gap:6px; font-size:14px; color:var(--text); cursor:pointer;">
|
| 137 |
+
<input type="radio" name="doc-mode" value="보고서"> 보고서 (추진배경/계획)
|
| 138 |
+
</label>
|
| 139 |
+
</div>
|
| 140 |
+
|
| 141 |
<label for="prompt">내용 요점</label>
|
| 142 |
<textarea id="prompt" rows="10" placeholder="예: 5.13(수) 부사장 회의 참석 요청, 9~10시, 본사 회의실. 전 부서장 참석 필요. 회의 자료 5.12까지 제출."></textarea>
|
| 143 |
|
|
|
|
| 173 |
statusEl.classList.toggle('error', isError);
|
| 174 |
};
|
| 175 |
|
| 176 |
+
const SYSTEM_PROMPT_LETTER = `당신은 한국 행정 공문 작성 전문가입니다. 사용자가 요청한 내용을 한국 표준 공문 양식에 맞춰 작성하세요.
|
| 177 |
|
| 178 |
[작성 규칙]
|
| 179 |
- 형식: 수신 / 제목 / 본문 / 붙임(있을 경우) / 발신명의
|
|
|
|
| 186 |
- 마크다운 기호(**, *, #, -) 절대 사용 금지
|
| 187 |
- 군더더기 없이 핵심만, 추측 금지`;
|
| 188 |
|
| 189 |
+
const SYSTEM_PROMPT_REPORT = `당신은 한국 기업/공공기관 내부 보고서 작성 전문가입니다. 사용자가 요청한 내용을 표준 보고서 양식에 맞춰 작성하세요.
|
| 190 |
+
|
| 191 |
+
[작성 규칙]
|
| 192 |
+
- 형식: 작성일자(YYYY. M.) / 작성부서 / 본문 섹션
|
| 193 |
+
- 수신/발신/끝. 같은 공문 letter 양식 요소는 사용하지 않음
|
| 194 |
+
- 본문 섹션: "1. 추진 배경 / 2. 개요·결과 / 3. 조치 계획 / 4. 향후 일정" 식으로 번호와 제목
|
| 195 |
+
- 세부 항목은 "가. 나. 다." 사용, 더 세부는 "-" 글머리(들여쓰기)
|
| 196 |
+
- 문체: "~한다", "~된다", "~함" 등 보고체 (정중체 아님). 또는 "~합니다" 정중체. 일관성 유지
|
| 197 |
+
- 날짜 표기: "'26. 5월 중", "26. 2월 4주 ~ 4월 3주(9주간)" 등 보고서 관용 표기 허용
|
| 198 |
+
- 항목 안에 괄호로 보조 설명: 예) "(면담기간) ...", "(구 성) ..."
|
| 199 |
+
- 마크다운 기호(**, *, #) 절대 사용 금지
|
| 200 |
+
- 추측이나 가공 정보 추가 금지, 사용자가 준 내용만 정리`;
|
| 201 |
+
|
| 202 |
+
function getSystemPrompt() {
|
| 203 |
+
const mode = document.querySelector('input[name="doc-mode"]:checked')?.value || '공문';
|
| 204 |
+
return mode === '보고서' ? SYSTEM_PROMPT_REPORT : SYSTEM_PROMPT_LETTER;
|
| 205 |
+
}
|
| 206 |
+
|
| 207 |
function buildUserPrompt() {
|
| 208 |
return $('prompt').value.trim();
|
| 209 |
}
|
|
|
|
| 257 |
headers: { 'Content-Type': 'application/json' },
|
| 258 |
body: JSON.stringify({
|
| 259 |
messages: [
|
| 260 |
+
{ role: 'system', content: getSystemPrompt() },
|
| 261 |
{ role: 'user', content: buildUserPrompt() },
|
| 262 |
],
|
| 263 |
max_new_tokens: 600,
|