Kims12 commited on
Commit
fc4aa21
·
verified ·
1 Parent(s): 6a0362f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -31
app.py CHANGED
@@ -44,7 +44,6 @@ def get_category_prompt(category):
44
  - 바다 환경오염, 식탁으로 되돌아온다. 플라스틱 사용 이대로 괜찮은가요?
45
  - "맥주 한잔이라도 날마다 술이 땡긴다면? 이것 의심해야"
46
  """
47
-
48
  elif category == "스토리텔링":
49
  return """
50
  # 스토리텔링 카피라이팅 생성 규칙
@@ -175,46 +174,41 @@ with gr.Blocks() as iface:
175
  output_boxes[category] = output_box
176
 
177
  ########################################################
178
- # 기존 validate_and_generate 함수 이름/출력 형식 유지
179
- # 내부에서 비동기 처리 + Gradio 스트리밍(yield) 사용
180
  ########################################################
181
- def validate_and_generate(topic):
182
- async def async_gen():
183
- try:
184
- # 비동기로 카피라이팅 생성
185
- results = {}
186
-
187
- # 순차가 아닌, '완료된 순서대로' 결과를 yield
188
- async for cat, copywriting in generate_copywriting_async(CATEGORIES, topic):
189
- results[cat] = copywriting
190
- # 현재까지 완료된 내용만 업데이트
191
- yield [
192
- gr.update(value=f"진행중: [{cat}] 카피라이팅 완료"),
193
- *[gr.update(value=results.get(c, "")) for c in CATEGORIES]
194
- ]
195
-
196
- # 모든 카테고리 완료 후 최종 메세지
197
  yield [
198
- gr.update(value="카피라이팅 생성이 완료되었습니다."),
199
  *[gr.update(value=results.get(c, "")) for c in CATEGORIES]
200
  ]
201
 
202
- except Exception as e:
203
- logger.error(f"Error during copywriting generation: {str(e)}")
204
- yield [
205
- gr.update(value=f"오류 발생: {str(e)}"),
206
- *[gr.update(value="") for _ in CATEGORIES]
207
- ]
208
 
209
- # Gradio에서 스트리밍 출력을 위해 async_gen 함수 자체를 반환
210
- return async_gen()
 
 
 
 
211
 
 
212
  generate_btn.click(
213
  fn=validate_and_generate,
214
  inputs=[topic],
215
  outputs=[status] + [output_boxes[category] for category in CATEGORIES]
216
  )
217
 
218
- # 비동기 처리를 위해 queue() 사용(Gradio 3.30+ 기준)
219
- iface.queue()
220
- iface.launch()
 
44
  - 바다 환경오염, 식탁으로 되돌아온다. 플라스틱 사용 이대로 괜찮은가요?
45
  - "맥주 한잔이라도 날마다 술이 땡긴다면? 이것 의심해야"
46
  """
 
47
  elif category == "스토리텔링":
48
  return """
49
  # 스토리텔링 카피라이팅 생성 규칙
 
174
  output_boxes[category] = output_box
175
 
176
  ########################################################
177
+ # (수정) validate_and_generate 함수를 비동기 함수로 바꿔
178
+ # 3개의 출력에 맞게 yield마다 [status, box1, box2]를 반환
179
  ########################################################
180
+ async def validate_and_generate(topic):
181
+ try:
182
+ results = {}
183
+ # 완료된 순서대로 스트리밍
184
+ async for cat, copywriting in generate_copywriting_async(CATEGORIES, topic):
185
+ results[cat] = copywriting
186
+ # 현재까지 완료된 copywriting을 반영해서 출력
 
 
 
 
 
 
 
 
 
187
  yield [
188
+ gr.update(value=f"진행중: [{cat}] 카피라이팅 완료"),
189
  *[gr.update(value=results.get(c, "")) for c in CATEGORIES]
190
  ]
191
 
192
+ # 모든 카테고리가 완료된 뒤 최종 출력
193
+ yield [
194
+ gr.update(value="카피라이팅 생성이 완료되었습니다."),
195
+ *[gr.update(value=results.get(c, "")) for c in CATEGORIES]
196
+ ]
 
197
 
198
+ except Exception as e:
199
+ logger.error(f"Error during copywriting generation: {str(e)}")
200
+ yield [
201
+ gr.update(value=f"오류 발생: {str(e)}"),
202
+ *[gr.update(value="") for _ in CATEGORIES]
203
+ ]
204
 
205
+ # 비동기 함수를 Gradio 이벤트 핸들러로 등록
206
  generate_btn.click(
207
  fn=validate_and_generate,
208
  inputs=[topic],
209
  outputs=[status] + [output_boxes[category] for category in CATEGORIES]
210
  )
211
 
212
+ # Gradio 3.30+부터는 queue() + async 함수로 스트리밍 가능
213
+ iface.queue()
214
+ iface.launch()