summarize / app.py
soojeongcrystal's picture
Update app.py
a81e375 verified
from openai import AsyncOpenAI
import gradio as gr
import os
client = AsyncOpenAI(api_key=os.environ['OPENAI_API_KEY'])
async def generate_card_news(input_text, tone, length):
prompt = f"""
팀장들의 리더십 개발을 위해 노력하는 유능한 작가야. 섬세하면서도 적확한 한국어 어휘를 선택할 수 있어. 흐름을 잃지 않고 단문의 매력을 살려줘. 원문이 영어든 한국어든 모두 유려하게 한국어 표현으로 구사해. 사자성어나 명언을 잘 알고, 적재적소에 활용해. 네가 해야 할 일은 주어진 텍스트 "{input_text}"에 기반하여 요약된 글을 작성해주는거야. 팀장들은 바쁘기 때문에 명확하면서도 자세한 방식으로 작성하는 것이 중요해. 요약된 글의 톤은 "{tone}"이며, 요약된 글의 길이는 {length}야. 요약된 글에는 다음이 포함되어야 해:
1. 첫도입부는 두괄식으로 핵심주제가 언급되게 해줘.
2. 본문의 인용 부분과 흥미로운 문구는 직접 인용하고, 인용문은 영어여도 괜찮아. 사자성어나 명언도 활용해주고, 과정이나 절차를 소개한 것은 원래 표현을 살려줘.
3. '-습니다'체를 유지해줘.
4. 마지막 한 문장은 본문으로부터 한줄 띄워서 작성해주고, 내용은 이 요약글에서 리더십 측면에서 얻어갈 거리, 질문, 의미 등을 정리해주면 좋겠어.
요약된 글을 보는 사람들은 항상 바쁜 팀장들이므로, 내용은 시선을 끌고 흥미롭고 정보가 충실해야해. 결과물은 반드시 한국어로 제공해줘
"""
try:
response = await client.chat.completions.create(
model="gpt-4-1106-preview",
messages=[{"role": "system", "content": prompt}]
)
except Exception as e:
print(f"Error: {e}")
return "Error generating card news"
# Correctly access the 'content' attribute from the 'ChatCompletionMessage' object
if response.choices:
card_news_plan = response.choices[0].message.content.strip() # Use dot notation to access 'content'
else:
card_news_plan = "No card news plan generated."
return card_news_plan
iface = gr.Interface(
fn=generate_card_news,
inputs=[
gr.Textbox(label="여기에 원문을 붙여넣어주세요(작가님 글, HBR/Forbes 같은 원문도 가능!)", lines=5),
gr.Radio(["공감가는", "전문적인", "재미있는"], label="원하는 요약의 톤"),
gr.Radio(["5문장", "10문장", "20문장", "50문장"], label="요약문의 길이")
],
outputs=gr.Textbox(label="요약된 글", lines=15),
title="요약문 생성기 by Crystal✨",
description="행복컬리지의 행복을 위하여...🙋🏻‍♀️240301🇰🇷"
)
iface.launch()