ll7098ll commited on
Commit
ad6df1d
·
verified ·
1 Parent(s): d13466c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -19
app.py CHANGED
@@ -26,31 +26,38 @@ model = genai.GenerativeModel(
26
 
27
  def generate_text(grade, num_paragraphs, sentences_per_paragraph, structure, topic):
28
  prompt = f"""
29
- 초등학교 {grade}학년 학생이 이해할 수 있는 수준의 설명문을 작성.
30
- 설명문의 주제는 {topic}이며, 주제를 중심으로 {structure} 구조에 따른 설명문을 작성할 것.
31
- 전체 문단 수는 {num_paragraphs} 문단 내외, 문단 당 문장 수는 {sentences_per_paragraph} 문장 내외.
32
- 설명문은 줄까만으로 작성하고 문단 구분을 할 것. 지정된 문단 수와 문단 당 문장 수를 꿀 지키기.
33
- 문단마다, 문단의 첫 문장 또는 마지막 문장이 문단의 중심 문장이 되도록 할 것. (중심 문장이라는 문단의 내용을 모두 포함할 수 있는 문장)
34
- 초등학교 {grade}학년 수준에 어렵은 단어와 한자어, 학습 도구어는 마지막에 어희 목록과 어희의 뜻을 초등학교 {grade}학년 수준에 맞게 유의언으로 또는 뜻을 풀어 설명하는 부분 따로 추가할 것.
35
- """
36
-
37
  full_text = "" # 전체 텍스트 저장 변수 초기화
38
-
39
  try:
40
- response = model.generate_content(prompt, stream=True)
41
- for chunk in response:
42
- full_text += chunk.text
43
- # Markdown to HTML 변환
44
- html_text = markdown.markdown(full_text, extensions=['tables'])
45
- output_area.markdown(html_text, unsafe_allow_html=True)
46
- time.sleep(0.1) # 지연 추가 (필요에 따라 조절)
47
 
48
  except Exception as e:
49
  st.error(f"에러 발생: {str(e)}")
50
  return ""
51
 
 
 
 
 
 
 
 
 
 
 
 
52
  return full_text
53
 
 
 
54
  # Streamlit 인터페이스 설정
55
  colored_header(
56
  label="📜 초등학생을 위한 읽기 자료 생성기",
@@ -62,13 +69,18 @@ add_vertical_space(1)
62
 
63
  with st.sidebar:
64
  st.header("옵션 설정")
65
- grade = st.selectbox("학년", [f"초등학교 {i}학년" for i in range(1, 7)])
66
  num_paragraphs = st.number_input("문단 수", min_value=1, value=3)
67
- sentences_per_paragraph = st.selectbox("문단 당 문장 수", ["3-4", "5-6", "6-7", "7-8", "9-10"], index=0)
68
  structure = st.selectbox("설명문 구조", ["정의와 예시", "비교와 대조", "분류", "분석", "인과", "순서"], index=0)
69
  topic = st.text_area("✏️ 주제 및 내용을 입력하세요 ", height=200)
70
 
71
  generate_button = st.button("읽기 자료 생성")
72
 
73
  # 출력 영역을 함수 외부에 정의
74
- output_area = st.empty()
 
 
 
 
 
 
26
 
27
  def generate_text(grade, num_paragraphs, sentences_per_paragraph, structure, topic):
28
  prompt = f"""
29
+ 초등학교 {grade}학년 학생이 이해할 수 있는 수준의 설명문을 작성.
30
+ 설명문의 주제는 {topic}이며, 주제를 중심으로 {structure} 구조에 따른 설명문을 작성할 것.
31
+ 전체 문단 수는 {num_paragraphs} 문단 내외, 문단 당 문장 수는 {sentences_per_paragraph} 문장 내외.
32
+ 설명문은 줄글로 작성하고 문단 구분을 명확히 할 것. 지정된 문단 수와 문단 당 문장 수를 준수하기.
33
+ 문단마다, 문단의 첫 문장 또는 마지막 문장이 문단의 중심 문장이 되도록 할 것. (중심 문장이란 문단의 내용을 모두 포함할 수 있는 문장)
34
+ 초등학교 {grade}학년 수준에 어려운 단어와 한자어, 학습 용어는 마지막에 어휘 목록과 어휘의 뜻을 초등학교 {grade}학년 수준에 맞게 유의어로 또는 뜻을 풀어 설명하는 부분을 따로 추가할 것.
35
+ """
36
+
37
  full_text = "" # 전체 텍스트 저장 변수 초기화
 
38
  try:
39
+ response = model.generate_content(prompt) #stream=True 삭제
40
+ full_text = response.text
 
 
 
 
 
41
 
42
  except Exception as e:
43
  st.error(f"에러 발생: {str(e)}")
44
  return ""
45
 
46
+ #Markdown to HTML 변환
47
+ html_text = markdown.markdown(full_text, extensions=['tables'])
48
+
49
+ #출력 및 복사 기능 추가
50
+ output_area.markdown(html_text, unsafe_allow_html=True)
51
+ copy_button = st.button("출력 내용 복사")
52
+ if copy_button:
53
+ pyperclip.copy(full_text)
54
+ st.success("클립보드에 복사되었습니다!")
55
+
56
+
57
  return full_text
58
 
59
+
60
+
61
  # Streamlit 인터페이스 설정
62
  colored_header(
63
  label="📜 초등학생을 위한 읽기 자료 생성기",
 
69
 
70
  with st.sidebar:
71
  st.header("옵션 설정")
72
+ grade = st.selectbox("학년", range(1, 7)) # 드롭다운 수정
73
  num_paragraphs = st.number_input("문단 수", min_value=1, value=3)
74
+ sentences_per_paragraph = st.selectbox("문단 당 문장 수", [3, 4, 5, 6, 7, 8, 9, 10]) # 드롭다운 수정
75
  structure = st.selectbox("설명문 구조", ["정의와 예시", "비교와 대조", "분류", "분석", "인과", "순서"], index=0)
76
  topic = st.text_area("✏️ 주제 및 내용을 입력하세요 ", height=200)
77
 
78
  generate_button = st.button("읽기 자료 생성")
79
 
80
  # 출력 영역을 함수 외부에 정의
81
+ output_area = st.empty()
82
+
83
+
84
+ if generate_button:
85
+ sentences_per_paragraph_range = str(sentences_per_paragraph) # 문장 수 변수 타입 변경
86
+ generate_text(grade, num_paragraphs, sentences_per_paragraph_range, structure, topic)