Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
|
@@ -1,19 +1,35 @@
|
|
| 1 |
import os
|
| 2 |
import time
|
| 3 |
import streamlit as st
|
| 4 |
-
from PIL import Image
|
| 5 |
import google.generativeai as genai
|
| 6 |
from streamlit_extras.colored_header import colored_header
|
| 7 |
import markdown
|
| 8 |
import pyperclip
|
| 9 |
-
import
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 10 |
|
| 11 |
-
#
|
| 12 |
-
|
|
|
|
| 13 |
|
| 14 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
generation_config = {
|
| 16 |
-
"temperature": 0.7,
|
| 17 |
"top_p": 0.95,
|
| 18 |
"top_k": 40,
|
| 19 |
"max_output_tokens": 4096,
|
|
@@ -21,112 +37,218 @@ generation_config = {
|
|
| 21 |
}
|
| 22 |
|
| 23 |
model = genai.GenerativeModel(
|
| 24 |
-
model_name="gemini-
|
| 25 |
generation_config=generation_config,
|
| 26 |
)
|
| 27 |
|
| 28 |
-
# PDF 텍스트 추출 함수
|
| 29 |
def extract_text_from_pdf(uploaded_pdf_file):
|
| 30 |
-
"""PDF 파일에서 텍스트를 추출합니다."""
|
| 31 |
text = ""
|
| 32 |
try:
|
| 33 |
-
|
| 34 |
-
|
| 35 |
-
|
| 36 |
-
text += page.extract_text()
|
| 37 |
except Exception as e:
|
| 38 |
-
st.error(f"PDF 파일 처리
|
| 39 |
return None
|
| 40 |
return text
|
| 41 |
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
PDF 텍스트와 사용자 지시사항을 기반으로 보고서 또는 계획서를 생성합니다.
|
| 45 |
-
Args:
|
| 46 |
-
pdf_text: 추출된 PDF 텍스트
|
| 47 |
-
user_instructions: 사용자 지시사항
|
| 48 |
-
Returns:
|
| 49 |
-
str: 생성된 보고서 또는 계획서 텍스트
|
| 50 |
-
"""
|
| 51 |
full_text = ""
|
| 52 |
try:
|
| 53 |
-
|
| 54 |
-
#
|
| 55 |
|
| 56 |
-
## PDF
|
| 57 |
```
|
| 58 |
-
{pdf_text}
|
| 59 |
```
|
| 60 |
|
| 61 |
## 사용자 지시사항:
|
| 62 |
-
{user_instructions}
|
| 63 |
|
| 64 |
---
|
| 65 |
|
| 66 |
-
|
| 67 |
-
|
| 68 |
-
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
|
| 73 |
-
|
| 74 |
-
for chunk in response.text:
|
| 75 |
-
full_text += chunk
|
| 76 |
-
time.sleep(0.01)
|
| 77 |
-
st.session_state.generated_result += chunk
|
| 78 |
-
output_area.markdown(st.session_state.generated_result, unsafe_allow_html=True)
|
| 79 |
-
except Exception as e:
|
| 80 |
-
st.error(f"보고서/계획서 생성 중 오류 발생: {str(e)}")
|
| 81 |
-
return full_text
|
| 82 |
|
| 83 |
-
#
|
| 84 |
-
colored_header(
|
| 85 |
-
label="PDF 보고서/계획서 자동 작성 AI",
|
| 86 |
-
description="PDF 서식 파일을 업로드하고 지시사항을 입력하면 보고서/계획서를 작성해줍니다.",
|
| 87 |
-
color_name="blue-70", # 색상 변경
|
| 88 |
-
)
|
| 89 |
|
| 90 |
-
|
| 91 |
-
uploaded_pdf_file = st.file_uploader("PDF 서식 파일 업로드", type=["pdf"])
|
| 92 |
|
| 93 |
-
|
| 94 |
-
user_instructions = st.text_area("작성 지시사항 입력 (예: '이 PDF를 바탕으로 2024년 마케팅 계획 보고서를 작성해주세요.', '핵심 내용을 요약하고, 개선 방안을 3가지 제시해주세요.')",
|
| 95 |
-
placeholder="자세하고 명확하게 지시사항을 입력하세요.") # placeholder 추가
|
| 96 |
|
| 97 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
|
| 99 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
|
| 101 |
-
if generate_button and uploaded_pdf_file and user_instructions: # 지시사항도 입력되었는지 확인
|
| 102 |
try:
|
| 103 |
-
|
| 104 |
-
|
| 105 |
-
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
html_text = markdown.markdown(result, extensions=['tables']) # Markdown 형식으로 변환 (필요에 따라 조정)
|
| 109 |
-
output_area.markdown(html_text, unsafe_allow_html=True)
|
| 110 |
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
|
|
|
| 116 |
|
| 117 |
-
|
| 118 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
|
| 120 |
elif generate_button and not uploaded_pdf_file:
|
| 121 |
-
st.warning("PDF 서식 파일을
|
| 122 |
elif generate_button and not user_instructions:
|
| 123 |
-
st.warning("작성 지시사항을
|
| 124 |
|
| 125 |
-
#
|
| 126 |
-
if
|
| 127 |
html_text = markdown.markdown(st.session_state.generated_result, extensions=['tables'])
|
| 128 |
output_area.markdown(html_text, unsafe_allow_html=True)
|
| 129 |
|
| 130 |
-
|
|
|
|
| 131 |
pyperclip.copy(st.session_state.generated_result)
|
| 132 |
-
st.success("복사되었습니다!")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
import os
|
| 2 |
import time
|
| 3 |
import streamlit as st
|
| 4 |
+
from PIL import Image
|
| 5 |
import google.generativeai as genai
|
| 6 |
from streamlit_extras.colored_header import colored_header
|
| 7 |
import markdown
|
| 8 |
import pyperclip
|
| 9 |
+
import pdfminer.high_level
|
| 10 |
+
from io import StringIO
|
| 11 |
+
from docx import Document
|
| 12 |
+
from docx.shared import Inches
|
| 13 |
+
from streamlit_lottie import st_lottie
|
| 14 |
+
import json
|
| 15 |
|
| 16 |
+
# --- 설정 ---
|
| 17 |
+
PAGE_CONFIG = {"page_title":"교육 계획 및 보고서 작성 AI", "page_icon":":pencil2:"}
|
| 18 |
+
st.set_page_config(**PAGE_CONFIG)
|
| 19 |
|
| 20 |
+
# --- 로딩 애니메이션 ---
|
| 21 |
+
def load_lottiefile(filepath):
|
| 22 |
+
with open(filepath, "r") as f:
|
| 23 |
+
return json.load(f)
|
| 24 |
+
|
| 25 |
+
lottie_loading = load_lottiefile("lottie/loading.json")
|
| 26 |
+
|
| 27 |
+
# Google Gemini API 키 설정
|
| 28 |
+
genai.configure(api_key=st.secrets["GEMINI_API_KEY"])
|
| 29 |
+
|
| 30 |
+
# 모델 설정
|
| 31 |
generation_config = {
|
| 32 |
+
"temperature": 0.7,
|
| 33 |
"top_p": 0.95,
|
| 34 |
"top_k": 40,
|
| 35 |
"max_output_tokens": 4096,
|
|
|
|
| 37 |
}
|
| 38 |
|
| 39 |
model = genai.GenerativeModel(
|
| 40 |
+
model_name="gemini-pro",
|
| 41 |
generation_config=generation_config,
|
| 42 |
)
|
| 43 |
|
| 44 |
+
# --- PDF 텍스트 추출 함수 ---
|
| 45 |
def extract_text_from_pdf(uploaded_pdf_file):
|
|
|
|
| 46 |
text = ""
|
| 47 |
try:
|
| 48 |
+
output_string = StringIO()
|
| 49 |
+
pdfminer.high_level.extract_text_to_fp(uploaded_pdf_file, output_string)
|
| 50 |
+
text = output_string.getvalue()
|
|
|
|
| 51 |
except Exception as e:
|
| 52 |
+
st.error(f"PDF 파일 처리 오류 (pdfminer.six): {e}")
|
| 53 |
return None
|
| 54 |
return text
|
| 55 |
|
| 56 |
+
# --- 보고서/계획서 생성 함수 (교육 계획 및 보고서에 맞춘 프롬프트) ---
|
| 57 |
+
def generate_report_or_plan(pdf_text, user_instructions, report_type="계획서"):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
full_text = ""
|
| 59 |
try:
|
| 60 |
+
prompt_template = f"""
|
| 61 |
+
# 교육 {report_type} 자동 작성 도구
|
| 62 |
|
| 63 |
+
## PDF 서식 파일 내용:
|
| 64 |
```
|
| 65 |
+
{{pdf_text}}
|
| 66 |
```
|
| 67 |
|
| 68 |
## 사용자 지시사항:
|
| 69 |
+
{{user_instructions}}
|
| 70 |
|
| 71 |
---
|
| 72 |
|
| 73 |
+
**[교육 {report_type} 작성 지시사항]**
|
| 74 |
+
1. 위 PDF 서식 파일의 내용을 **정확하게 분석**하고, {report_type} 작성에 필요한 정보를 추출합니다.
|
| 75 |
+
2. 사용자 지시사항을 **최대한 반영**하여 교육 {report_type} 초안을 작성합니다.
|
| 76 |
+
3. 작성하는 {report_type}는 **학교 및 교육기관에서 사용하는 공식적인 문서 형식**을 따릅니다.
|
| 77 |
+
4. 내용은 **한국어로 작성**하며, **명확하고 논리적인 구조**로 구성합니다.
|
| 78 |
+
5. 교육 {report_type}의 목적, 목표, 주요 내용, 실행 방법, 기대 효과, 평가 방법 등을 **필수적으로 포함**합니다.
|
| 79 |
+
6. 필요한 경우, PDF 내용 외에 **교육 관련 일반적인 정보나 창의적인 아이디어**를 추가하여 내용을 풍부하게 만듭니다.
|
| 80 |
+
7. **목차, 제목, 소제목, 번호 매기기, 목록** 등을 활용하여 문서의 가독성을 높입니다. (예시: 1. 제목, 1.1 소제목, (1) 내용, - 목록)
|
| 81 |
+
8. {report_type} 유형 (사업 계획서, 교육활동 계획서, 프로젝트 학습 계획서 등) 에 맞춰 **적절한 형식과 필수 항목**을 포함합니다.
|
| 82 |
+
9. 만약 PDF 내용이 불충분하거나 지시사항을 명확히 이해하기 어렵다면, 솔직하게 "**PDF 서식 파일 내용이 부족하거나, 지시사항이 명확하지 않아 교육 {report_type} 초안 작성이 어렵습니다.**" 라고 답변해주세요.
|
| 83 |
|
| 84 |
+
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
|
| 86 |
+
# 작성된 교육 {report_type} 초안:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 87 |
|
| 88 |
+
"""
|
|
|
|
| 89 |
|
| 90 |
+
prompt_text = prompt_template.format(pdf_text=pdf_text, user_instructions=user_instructions, report_type=report_type)
|
|
|
|
|
|
|
| 91 |
|
| 92 |
+
response = model.generate_content([prompt_text], stream=True)
|
| 93 |
+
for chunk in response.parts:
|
| 94 |
+
if hasattr(chunk, "text"):
|
| 95 |
+
chunk_text = chunk.text
|
| 96 |
+
full_text += chunk_text
|
| 97 |
+
time.sleep(0.01)
|
| 98 |
+
st.session_state.generated_result += chunk_text
|
| 99 |
+
output_area.markdown(st.session_state.generated_result, unsafe_allow_html=True)
|
| 100 |
+
except Exception as e:
|
| 101 |
+
st.error(f"교육 {report_type} 생성 중 오류 발생: {str(e)}")
|
| 102 |
+
return full_text
|
| 103 |
|
| 104 |
+
# --- DOCX 파일 생성 함수 ---
|
| 105 |
+
def create_docx_file(text, filename="report.docx"):
|
| 106 |
+
document = Document()
|
| 107 |
+
for line in text.splitlines():
|
| 108 |
+
document.add_paragraph(line)
|
| 109 |
|
|
|
|
| 110 |
try:
|
| 111 |
+
document.save(filename)
|
| 112 |
+
return filename
|
| 113 |
+
except Exception as e:
|
| 114 |
+
st.error(f"DOCX 파일 생성 오류: {e}")
|
| 115 |
+
return None
|
|
|
|
|
|
|
| 116 |
|
| 117 |
+
# --- Streamlit UI ---
|
| 118 |
+
colored_header(
|
| 119 |
+
label="교육 계획 및 보고서 작성 AI",
|
| 120 |
+
description="PDF 서식 파일을 업로드하고 지시사항을 입력하면, 교육 계획서 또는 보고서 초안을 작성해줍니다.",
|
| 121 |
+
color_name="blue-70",
|
| 122 |
+
)
|
| 123 |
|
| 124 |
+
# --- UI 요소 배치 ---
|
| 125 |
+
col1, col2 = st.columns([1, 1])
|
| 126 |
+
|
| 127 |
+
with col1:
|
| 128 |
+
uploaded_pdf_file = st.file_uploader("PDF 서식 파일 업로드", type=["pdf"])
|
| 129 |
+
|
| 130 |
+
with col2:
|
| 131 |
+
report_type = st.selectbox("문서 유형 선택", ["계획서", "보고서", "제안서", "기타"])
|
| 132 |
+
|
| 133 |
+
user_instructions = st.text_area("작성 지시사항",
|
| 134 |
+
placeholder="""# 계획서 작성 지시사항 예시:
|
| 135 |
+
- 2025학년도 SW 교육 운영 계획서를 작성해주세요.
|
| 136 |
+
- PDF 서식 파일을 참고하여, 계획의 개요, 운영 방침, 세부 프로그램, 예산 계획, 기대 효과를 포함해주세요.
|
| 137 |
+
- 학교 특성 및 학생 요구 분석 내용을 반영하여 구체적으로 작성해주세요.
|
| 138 |
+
|
| 139 |
+
# 보고서 작성 지시사항 예시:
|
| 140 |
+
- 2025학년도 학생생성성교육과정 운영 결과 보고서를 작성해주세요.
|
| 141 |
+
- PDF 서식 파일을 참고하여, 운영 개요, 운영 결과 분석, 주요 성과, 문제점 및 개선 방안, 향후 계획을 포함해주세요.
|
| 142 |
+
- 객관적인 데이터와 구체적인 사례를 바탕으로 보고서를 작성해주세요.""",
|
| 143 |
+
height=300)
|
| 144 |
+
|
| 145 |
+
generate_button = st.button("계획서/보고서 초안 생성", use_container_width=True)
|
| 146 |
+
|
| 147 |
+
output_area = st.empty()
|
| 148 |
+
|
| 149 |
+
if "generated_result" not in st.session_state:
|
| 150 |
+
st.session_state.generated_result = ""
|
| 151 |
+
|
| 152 |
+
# --- 생성 및 결과 출력 ---
|
| 153 |
+
if generate_button and uploaded_pdf_file and user_instructions:
|
| 154 |
+
with st.spinner(text=f"교육 {report_type} 초안 생성 중..."):
|
| 155 |
+
try:
|
| 156 |
+
# 1. PDF 텍스트 추출
|
| 157 |
+
pdf_text = extract_text_from_pdf(uploaded_pdf_file)
|
| 158 |
+
if pdf_text:
|
| 159 |
+
# 2. 보고서/계획서 생성 (Gemini Pro)
|
| 160 |
+
st.session_state.generated_result = ""
|
| 161 |
+
result_text = generate_report_or_plan(pdf_text, user_instructions, report_type)
|
| 162 |
+
|
| 163 |
+
if result_text:
|
| 164 |
+
# 3. Markdown to HTML 변환 및 출력
|
| 165 |
+
html_text = markdown.markdown(result_text, extensions=['tables'])
|
| 166 |
+
output_area.markdown(html_text, unsafe_allow_html=True)
|
| 167 |
+
|
| 168 |
+
# 4. 다운로드 버튼 (다양한 형식)
|
| 169 |
+
st.download_button(
|
| 170 |
+
label="📝 텍스트 파일 (.txt) 다운로드",
|
| 171 |
+
data=result_text.encode("utf-8"),
|
| 172 |
+
file_name=f"{report_type}_초안.txt",
|
| 173 |
+
mime="text/plain",
|
| 174 |
+
key="download_txt"
|
| 175 |
+
)
|
| 176 |
+
st.download_button(
|
| 177 |
+
label="📄 Markdown 파일 (.md) 다운로드",
|
| 178 |
+
data=result_text.encode("utf-8"),
|
| 179 |
+
file_name=f"{report_type}_초안.md",
|
| 180 |
+
mime="text/markdown",
|
| 181 |
+
key="download_md"
|
| 182 |
+
)
|
| 183 |
+
docx_filename = create_docx_file(result_text, filename=f"{report_type}_초안.docx")
|
| 184 |
+
if docx_filename:
|
| 185 |
+
with open(docx_filename, "rb") as f:
|
| 186 |
+
st.download_button(
|
| 187 |
+
label="🗂️ Word 파일 (.docx) 다운로드",
|
| 188 |
+
data=f,
|
| 189 |
+
file_name=docx_filename,
|
| 190 |
+
mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
| 191 |
+
key="download_docx"
|
| 192 |
+
)
|
| 193 |
+
else:
|
| 194 |
+
st.warning(f"교육 {report_type} 초안 생성에 실패했습니다. 지시사항 및 PDF 내용을 확인해주세요.")
|
| 195 |
+
|
| 196 |
+
else:
|
| 197 |
+
st.warning("PDF 파일에서 텍스트 추출에 실패했습니다.")
|
| 198 |
+
|
| 199 |
+
except Exception as e:
|
| 200 |
+
st.error(f"오류 발생: {e}")
|
| 201 |
|
| 202 |
elif generate_button and not uploaded_pdf_file:
|
| 203 |
+
st.warning("PDF 서식 파일을 업로드해주세요.")
|
| 204 |
elif generate_button and not user_instructions:
|
| 205 |
+
st.warning("작성 지시사항을 입력해주세요.")
|
| 206 |
|
| 207 |
+
# --- 기존 생성 결과 출력 ---
|
| 208 |
+
if st.session_state.generated_result:
|
| 209 |
html_text = markdown.markdown(st.session_state.generated_result, extensions=['tables'])
|
| 210 |
output_area.markdown(html_text, unsafe_allow_html=True)
|
| 211 |
|
| 212 |
+
# 복사 버튼
|
| 213 |
+
if st.button("📝 출력 내용 복사", key="copy_button_result", use_container_width=True):
|
| 214 |
pyperclip.copy(st.session_state.generated_result)
|
| 215 |
+
st.success("클립보드에 복사되었습니다!", icon="✅")
|
| 216 |
+
|
| 217 |
+
# --- FAQ 섹션 (최하단으로 이동) ---
|
| 218 |
+
with st.expander("❓ 교육 계획 및 보고서 작성 AI FAQ"):
|
| 219 |
+
st.write("""
|
| 220 |
+
**Q1. 교육 계획 및 보고서 작성 AI는 어떤 기능을 제공하나요?**
|
| 221 |
+
|
| 222 |
+
A. 이 앱은 선생님들의 **각종 교육 계획서 및 보고서 작성**을 돕기 위해 개발된 AI 도구입니다. PDF 서식 파일을 업로드하고 작성 지시사항을 입력하면, **사업 계획서, 교육활동 계획서, 프로젝트 학습 계획서, 결과 보고서** 등 다양한 교육 관련 문서 초안을 빠르게 생성할 수 있습니다. AI는 서식 파일 내용과 지시사항을 분석하여 문서의 구조와 내용을 자동으로 구성하며, 사용자 정의에 따라 수정 및 추가 작업이 가능합니다.
|
| 223 |
+
|
| 224 |
+
**Q2. 어떤 종류의 교육 문��� 작성을 지원하나요?**
|
| 225 |
+
|
| 226 |
+
A. 본 AI는 학교 및 교육기관에서 일반적으로 사용하는 다양한 교육 문서 작성을 지원합니다. 주요 지원 문서는 다음과 같습니다:
|
| 227 |
+
* **계획서:** 사업 계획서, 교육활동 계획서, 프로젝트 학습 계획서, 연간 운영 계획서, 예산 계획서, 행사 계획서 등
|
| 228 |
+
* **보고서:** 결과 보고서, 운영 보고서, 평가 보고서, 사업 결과 보고서, 행사 결과 보고서, 분석 보고서 등
|
| 229 |
+
* **제안서:** 프로그램 제안서, 사업 제안서, 개선 제안서 등
|
| 230 |
+
* **기타 교육 관련 문서:** 학습 자료, 안내 자료, 홍보 자료 등 (지시사항에 따라 다양하게 활용 가능)
|
| 231 |
+
|
| 232 |
+
**Q3. PDF 서식 파일은 왜 필요한가요?**
|
| 233 |
+
|
| 234 |
+
A. PDF 서식 파일은 AI가 **문서의 기본적인 구조와 형식**을 파악하고, **필수 포함 항목**을 인식하는 데 중요한 역할을 합니다. 서식 파일을 통해 AI는 사용자가 작성하려는 문서의 유형을 더 정확하게 이해하고, 그에 맞춰 **더욱 적합한 초안**을 생성할 수 있습니다. 만약 서식 파일이 없다면, AI는 일반적인 문서 형식에 따라 초안을 생성하지만, 특정 서식에 최적화된 결과를 얻기 어려울 수 있습니다.
|
| 235 |
+
|
| 236 |
+
**Q4. 작성 지시사항을 효과적으로 작성하는 방법은 무엇인가요?**
|
| 237 |
+
|
| 238 |
+
A. AI가 사용자의 의도를 정확하게 파악하고, 만족스러운 결과물을 생성하기 위해서는 **구체적이고 명확한 지시사항**을 입력하는 것이 중요합니다. 다음과 같은 내용을 포함하여 지시사항을 작성해보세요:
|
| 239 |
+
* **문서의 유형:** (예: 2025학년도 SW 교육 운영 계획서, 2024학년도 교육과정 운영 결과 보고서)
|
| 240 |
+
* **문서의 목적:** (예: SW 교육 운영 계획 수립, 교육과정 운영 결과 보고)
|
| 241 |
+
* **PDF 서식 파일에서 참고할 내용:** (예: 서식 파일의 '세부 프로그램' 섹션 참고, 서식 파일의 양식에 맞춰 작성)
|
| 242 |
+
* **필수 포함 내용:** (예: SWOT 분석 결과 포함, 예산 계획 상세하게 작성, 데이터 시각화 자료 포함)
|
| 243 |
+
* **문서의 특정 스타일 또는 강조점:** (예: 표 형식으로 깔끔하게 작성, 핵심 내용을 요약하여 작성, 실현 가능성을 강조)
|
| 244 |
+
|
| 245 |
+
**Q5. 생성된 초안은 어떻게 활용해야 하나요?**
|
| 246 |
+
|
| 247 |
+
A. AI가 생성한 초안은 **완벽한 최종 문서가 아닌, 초안**입니다. 초안을 바탕으로 다음과 같은 단계를 거쳐 문서를 완성하는 것을 권장합니다:
|
| 248 |
+
1. **초안 검토:** 생성된 초안을 꼼꼼히 읽고, 내용의 정확성, 논리성, 형식의 적절성을 검토합니다.
|
| 249 |
+
2. **내용 수정 및 보완:** 필요에 따라 내용을 수정, 추가, 삭제하고, 문장을 다듬습니다. 특히, AI가 놓칠 수 있는 세부 사항이나 맥락을 보완합니다.
|
| 250 |
+
3. **서식 조정:** 학교 또는 기관의 공식 문서 서식에 맞게 최종적으로 서식을 조정합니다.
|
| 251 |
+
4. **최종 검토 및 승인:** 완성된 문서를 최종적으로 검토하고, 필요한 경우 상급자에게 보고하여 승인을 받습니다.
|
| 252 |
+
|
| 253 |
+
AI는 문서 작성 시간을 단축하고 초안 작성의 부담을 줄여주는 유용한 도구이지만, 최종 문서의 완성도는 사용자의 검토 및 수정 작업에 달려 있습니다. AI를 효율적으로 활용하여 교육 문서 작성 업무를 스마트하게 처리해보세요!
|
| 254 |
+
""")
|