taeaiai commited on
Commit
5cd474d
·
1 Parent(s): a9e316b

Add 공문/보고서 mode toggle with separate system prompts

Browse files
Files changed (1) hide show
  1. 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 SYSTEM_PROMPT = `당신은 한국 행정 공문 작성 전문가입니다. 사용자가 요청한 내용을 한국 표준 공문 양식에 맞춰 작성하세요.
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: SYSTEM_PROMPT },
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,