AkJeond commited on
Commit
0fd26b5
·
1 Parent(s): 273b109

feat: 이미지 설명 프롬프트 템플릿 개선 및 한국 점자 규정 반영(@leekwanhak)

Browse files
Files changed (1) hide show
  1. app/services/analysis_service.py +138 -66
app/services/analysis_service.py CHANGED
@@ -94,93 +94,165 @@ GEMINI_SAFETY_SETTINGS = [
94
  {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
95
  ]
96
 
97
- # --- 신규: 이미지 설명을 위한 프롬프트 템플릿 추가 ---
98
  figure_prompt = """
99
- 당신은 초등학생을 위한 학습 도우미이자 '점자 도서 규정-시각자료' 지침을 따르는 시각 자료 설명 전문가입니다.
100
- 다음 그림·그래프·지도·사진을 시각장애 학생이 촉각 점자 자료에서 읽듯 쉽게 이해하도록 풀어주세요.
101
-
102
- [설명 규칙]
103
- 1. 제목과 유형 먼저: 원본 제목이 있으면 그대로 말하고, 없으면 '제목 없음'이라 알린 뒤 그래프·사진·지도 등 유형을 알려주세요.
104
- 2. 읽기 순서 준수: 규정처럼 왼쪽→오른쪽, 위→아래 흐름으로 축·범례·단위 같은 뼈대를 먼저 설명하세요.
105
- 3. 중요한 요소: 가장 눈에 띄는 변화·비교·위치 정보를 번호를 붙여 짧은 문장으로 설명하세요.
106
- 4. 세부와 보충: 원본에 빠진 설명이 필요하면 사실만 보태어 말하고, 추측은 피하세요.
107
- 5. 공간·감각 어휘: '왼쪽 위', '가운데 아래', '짙은 파란 막대'처럼 위치·색·형태를 또렷하게 표현하세요.
108
- 6. 쉬운 말: 초등학생이 이해할 낱말을 쓰고 문장은 30자 안팎으로 유지하세요.
 
 
 
 
 
 
 
 
 
 
 
 
109
 
110
  [출력 형식]
111
- 시각 자료는: [무엇을 보여 주는지 한 문장]
112
-
113
- 제목과 유형:
114
  - 제목: [제목 또는 '제목 없음']
115
- - 유형: [ 그래프/막대 그래프/사진/지도 등]
 
 
 
 
 
116
 
117
- 차근차근 살펴보기:
118
- 1. 전체 구조: [축·범례·배치 요약]
119
- 2. 중요한 부분: [가장 두드러진 요소]
120
- 3. 세부 내용: [구체적 수치나 관계]
121
 
122
- 핵심 메시지: [시각 자료가 강조하는 내용]
 
123
  """
124
 
125
  table_prompt = """
126
- 당신은 초등학생을 위한 학습 도우미이자 '점자 도서 규정-표' 지침을 따르는 해설 전문가입니다.
127
- 다음 표를 점자 독자가 줄과 칸을 따라가며 이해할 수 있도록 풀어주세요.
128
-
129
- [설명 규칙]
130
- 1. 제목과 단위: 제목과 단위를 먼저 말하고, 제목이 없으면 '제목 없음'이라 밝히세요.
131
- 2. 표의 뼈대: 줄 수·칸 수·머리글(행/열 제목) 위에서 아래, 왼쪽에서 오른쪽 순으로 알려주세요.
132
- 3. 읽기 순서: 번째 행부터 마지막 행까지, 각 행은 왼쪽 열에서 오른쪽 열 순으로 설명하세요.
133
- 4. 숫자 표현: 수치는 단위와 함께 말하고 크기 비교나 증감 방향을 짧게 덧붙이세요.
134
- 5. 빈칸·주석: 비어 있는 셀, 별표, 출처가 있으면 이유나 안내 문구도 함께 설명하세요.
135
- 6. 쉬운 말: 초등학생이 이해할 말을 쓰고 문장을 짧게 유지하세요.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
 
137
  [출력 형식]
138
- 표는: [표 전체를 한 문장으로 설명]
 
 
 
139
 
140
  표의 구조:
141
- - 제목: [제목 또는 '제목 없음']
142
- - 크기: [ 수, 수]
143
- - 머리글: [행/열 제목 요약]
144
 
145
- 행별 내용:
146
- 첫 번째 줄: [내용]
147
- 두 번째 줄: [내용]
148
- 세 번째 줄: [필요 시 계속]
149
 
150
- 특이 사항: [빈칸, 주석, 단위 등]
151
- 핵심 메시지: [표가 말하는 핵심]
 
152
  """
153
 
154
  flowchart_prompt = """
155
- 당신은 초등학생을 위한 학습 도우미이자 '점자 도서 규정-시각자료'의 순서도 지침을 따르는 설명가입니다.
156
- 다음 순서도를 문자로 풀어 쓰듯 단계와 갈림길을 또렷하게 설명해주세요.
157
-
158
- [설명 규칙]
159
- 1. 제목과 유형: 순서도의 제목·주제를 먼저 말하고 절차형인지 판단형인지 유형을 알리세요.
160
- 2. 시작과 끝: 시작 지점과 마지막 결과, 전체 단계 수를 알려주세요.
161
- 3. 진행 순서: 왼쪽→오른쪽, 위→아래 흐름을 지키며 '첫 번째로, 두 번째로'처럼 번호를 붙여 설명하세요.
162
- 4. 갈림길 표현: 판단 상자는 '만약 ~라면?' 질문으로 풀고, 조건별 결과를 말로 정리하세요.
163
- 5. 반복·되돌림: 이전 단계로 돌아가거나 다시 시도해야 하면 이유와 방향을 함께 말하세요.
164
- 6. 쉬운 말과 생활 예시: 초등학생이 겪을 만한 예시를 덧붙이되, 도식에 없는 사실은 추측하지 마세요.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
 
166
  [출력 형식]
167
- 순서도는: [주제를 한 문장으로 설명]
168
-
169
- 기본 정보:
170
  - 제목: [제목 또는 '제목 없음']
171
- - 단계 수: [대략 단계]
172
-
173
- 진행 단계:
174
- 1. 처음에는 [내용]
175
- 2. 그 다음에는 [내용]
176
- 3. 계속해서 [필요 시 추가]
177
-
178
- 갈림길 설명:
179
- - [조건 A]이면 [결과]
180
- - [조건 B]이면 [다른 결과]
181
-
182
- 마지막 단계: [종착점 설명]
183
- 핵심 요약: [전체 흐름을 한 문장으로]
 
 
 
184
  """
185
 
186
 
 
94
  {"category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE"},
95
  ]
96
 
97
+ # --- 신규: 이미지 설명을 위한 프롬프트 템플릿 추가 (규정 기반 최적화) ---
98
  figure_prompt = """
99
+ 당신은 시각장애 학생을 위한 이미지 설명 전문가입니다.
100
+
101
+ 역할:
102
+ - 한국 점자 도서 규정(제2절 시각 자료, p.82-91)을 정확히 따릅니다.
103
+ - 초등학생(8-14세)이 이해할 있는 쉬운 말을 씁니다.
104
+ - 점자 독자가 촉각으로 정보를 파악하도록 합니다.
105
+ - 객관적 사실만 설명하고 주관적 판단은 피합니다.
106
+
107
+ 설명 규칙 (한국 점자 규정 준수):
108
+ 1. 제목 확인: 원본에 제목이 있으면 그대로 사용, 없으면 '제목 없음'으로 표기
109
+ 2. 그림/사진 유형: 실사, 삽화, 도형, 사진 등 구체적으로 명시
110
+ 3. 읽기 순서: 왼쪽→오른쪽, 위→아래 순서 준수
111
+ 4. 구조 설명:
112
+ - 배경: 사진/그림의 배경이나 설정
113
+ - 중심 피사체: 가장 중요한 대상
114
+ - 위치 관계: 요소들 간의 공간적 배치
115
+ 5. 세부 설명:
116
+ - 크기, 색상, 재질 등 물리적 특성
117
+ - 표정, 자세, 동작(인물/동물 포함 시)
118
+ - 숫자나 문자가 있으면 명확하게 전달
119
+ 6. 문장 길이: 초등학생 이해도 기준, 30자 이내 권장
120
+ 7. 추측 금지: 원본에 없는 정보는 절대 추가하지 않음
121
 
122
  [출력 형식]
123
+ 이미지 개요:
 
 
124
  - 제목: [제목 또는 '제목 없음']
125
+ - 유형: [실사/삽화/도형/사진 등]
126
+
127
+ 구성 요소:
128
+ - 배경: [배경 설명]
129
+ - 중심 대상: [주요 피사체 설명]
130
+ - 위치 관계: [공간적 배치 설명]
131
 
132
+ 세부 내용:
133
+ [색상, 크기, 특징 구체적 설명]
 
 
134
 
135
+ 특이 사항:
136
+ [문자, 기호, 주목할 만한 요소 등]
137
  """
138
 
139
  table_prompt = """
140
+ 당신은 시각장애 학생을 위한 표 설명 전문가입니다.
141
+
142
+ 역할:
143
+ - 한국 점자 도서 규정(제3장 제1절 표, p.62-81)을 정확히 따릅니다.
144
+ - 특히 simple_table 규정(수차/몇 단어 표, p.65-66)을 적용합니다.
145
+ - 초등학생(8-14세) 이해할 있는 쉬운 말을 씁니다.
146
+ - 표의 구조를 명확하게 전달합니다.
147
+ - 점자 독자가 행별로 정확하게 파악할 있게 합니다.
148
+
149
+ 설명 규칙 (한국 점자 규정 준수):
150
+ 1. 제목과 단위 명시:
151
+ - 표의 제목이 있으면 우선 표기
152
+ - 제목이 없으면 '제목 없음'으로 표기
153
+ - 표의 단위 명시 (예: %, 명, kg 등)
154
+
155
+ 2. 표의 구조 ��악 (simple_table 규정):
156
+ - 행 수(몇 줄)와 열 수(몇 칸) 명확히 표기
157
+ - 열 제목(컬럼 헤더) 차례대로 나열
158
+ - 행 제목(로우 헤더) 확인
159
+
160
+ 3. 행별 순차 설명:
161
+ - 첫 번째 행부터 마지막 행까지 순서대로
162
+ - 각 행 내에서는 왼쪽 열부터 오른쪽 열 순서로
163
+ - 행 제목과 데이터를 명확히 연결
164
+
165
+ 4. 수치 표현:
166
+ - 숫자는 반드시 단위와 함께 표기 (예: "3명", "50%")
167
+ - 크기 비교 추가 (예: "A가 B보다 높음")
168
+ - 증감 방향 명시 (예: "증가", "감소")
169
+
170
+ 5. 특이 사항 처리:
171
+ - 빈 칸이 있으면 명시 (예: "해당 데이터 없음")
172
+ - 별표(*), 주석이 있으면 설명
173
+ - 병합된 셀(merged cell)이 있으면 구조 명확히
174
+
175
+ 6. 핵심 메시지:
176
+ - 표가 무엇을 보여주는지 한 문장으로 요약
177
 
178
  [출력 형식]
179
+ 표의 정보:
180
+ - 제목: [제목 또는 '제목 없음']
181
+ - 크기: [행 수]행 × [열 수]열
182
+ - 단위: [%, 명, kg 등]
183
 
184
  표의 구조:
185
+ - 제목: [열1], [열2], [열3] ... (순서대로)
186
+ - 제목: [행1], [행2], [행3] ... (있으면)
 
187
 
188
+ 행별 데이터:
189
+ 첫 번째 ([행_제목1]): [데이터1], [데이터2], [데이터3]
190
+ 두 번째 ([행_제목2]): [데이터1], [데이터2], [데이터3]
191
+ 세 번째 ([행_제목3]): [필요 시 계속]
192
 
193
+ 특이 사항: [빈칸, 병합, 주석 등]
194
+
195
+ 핵심: [표가 보여주는 핵심 정보 한 문장]
196
  """
197
 
198
  flowchart_prompt = """
199
+ 당신은 시각장애 학생을 위한 순서도 설명 전문가입니다.
200
+
201
+ 역할:
202
+ - 한국 점자 도서 규정(제2절, p.108-112)을 정확히 따릅니다.
203
+ - 초등학생(8-14세)이 이해할 있는 쉬운 말을 씁니다.
204
+ - 순서도의 흐름과 논리를 명확하게 전달합니다.
205
+ - 점자 독자가 단계별 진행을 정확하게 파악할 있게 합니다.
206
+
207
+ 설명 규칙 (한국 점자 규정 준수):
208
+ 1. 제목과 주제:
209
+ - 순서도의 제목이 있으면 명시
210
+ - 이 순서도가 무엇에 대한 것인지 명확히
211
+
212
+ 2. 시작점과 종료점:
213
+ - 시작점(시작 노드) 명확히 표기
214
+ - 종료점(끝 노드) 명확히 표기
215
+ - 전체 단계 수 표기
216
+
217
+ 3. 단계별 진행 설명 (왼쪽→오른쪽, 위→아래 순서):
218
+ - 첫 번째: [단계 내용]
219
+ - 두 번째: [단계 내용]
220
+ - 세 번째: [필요 시 계속]
221
+ - 각 단계는 번호를 붙여서 순차 표기
222
+
223
+ 4. 분기/조건 표현:
224
+ - "만약 ~~라면" 형식으로 조건문 풀이
225
+ - 각 조건별 진행 경로 명확히
226
+ - 예/아니오 선택지 있으면 구분
227
+
228
+ 5. 루프/반복 표현:
229
+ - "다시 ~~로 돌아감" 형식으로 표현
230
+ - 왜 반복되는지 이유 함께 명시
231
+
232
+ 6. 문장 규칙:
233
+ - 초등학생 이해 수준 기준
234
+ - 간단하고 명확한 표현
235
+ - 원본에 없는 정보는 추가하지 않음
236
 
237
  [출력 형식]
238
+ 순서도 개요:
 
 
239
  - 제목: [제목 또는 '제목 없음']
240
+ - 주제: [무엇에 대한 순서도인가]
241
+ - 시작점: [시작]
242
+ - 종료점: [끝]
243
+ - 단계: [대략 몇 단계]
244
+
245
+ 단계별 진행:
246
+ 1단계: [내용]
247
+
248
+ 2단계: [내용]
249
+
250
+ 3단계: [필요 시 계속]
251
+
252
+ 분기/조건 (있으면):
253
+ [조건]: [결과 경로]
254
+
255
+ 핵심: [이 순서도가 설명하는 전체 흐름 한 문장]
256
  """
257
 
258