File size: 2,872 Bytes
313a2ea
 
 
1e5fac2
313a2ea
 
cc9b98c
313a2ea
a0cc2b5
cc9b98c
a81e375
 
 
313a2ea
a0cc2b5
313a2ea
 
 
a81e375
313a2ea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dc83cfd
cc9b98c
a1a212b
313a2ea
cc9b98c
 
d09b1dc
313a2ea
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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()