Spaces:
Sleeping
Sleeping
| 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, num_cards): | |
| prompt = f""" | |
| ํ์ฅ๋ค์ ๋ฆฌ๋์ญ ๊ฐ๋ฐ์ ์ํด ๋ ธ๋ ฅํ๋ ๊ธฐํ์์ด์ ๋ง์ผํฐ๋ก์, ํ๊ตญ์ด ์ดํ ๋ฅ๋ ฅ์ด ๊ต์ฅํ ๋ฐ์ด๋. ์๋ฌธ์ด ์์ด๋ ํ๊ตญ์ด๋ ๋ชจ๋ ์ ๋ คํ๊ฒ ํ๊ตญ์ด๋ก ์ ๋ฆฌํ ์ ์์ด. ๋ค๊ฐ ํด์ผ ํ ์ผ์ ์ฃผ์ด์ง ํ ์คํธ "{input_text}"์ ๊ธฐ๋ฐํ์ฌ ์นด๋๋ด์ค๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ฑฐ์ผ. ํ์ฅ๋ค์ ๋ฐ์๊ธฐ ๋๋ฌธ์ ๋ช ํํ๋ฉด์๋ ์์ธํ ๋ฐฉ์์ผ๋ก ์์ฑํ๋ ๊ฒ์ด ์ค์ํด. ์นด๋๋ด์ค์ ํค์ "{tone}"์ด๋ฉฐ, ์นด๋์ ์ด ์๋ {num_cards}์ผ. ์นด๋๋ด์ค์๋ ๋ค์์ด ํฌํจ๋์ด์ผ ํด: | |
| 1. ์ ์ฒด์นด๋์ ์๋๋ฆฌ์ค์ ํ๋ฆ์ ์ดํดํ ์ ์๋๋ก 100์ ์ ๋์ ์ค๋ช ๋ฌธ์ผ๋ก ์์ฑํด์ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์นด๋๋ด์ค์ ์ ๋ชฉ์ ๋ฝ์์ค. | |
| 2. ์นด๋๋ด์ค์ ๋ชฉ์ ์ {input_text}์ ์ค์ํ ๋ด์ฉ์ ์ฝ๊ฒ ์ดํดํ๋๊ฑฐ์ผ. ๋ง์ง๋ง ํ์ด์ง๋ฅผ ์ ์ธํ๊ณ ๋ ํ ์คํธ์ ์ง๋ฌธ์ด ํฌํจ๋์ด์๋ ์๋ผ. ๊ฐ ์นด๋์ ํฌํจ๋ ํ ์คํธ ๋ด์ฉ(๋ณธ๋ฌธ์ ์ธ์ฉ ๋ถ๋ถ๊ณผ ํฅ๋ฏธ๋ก์ด ๋ฌธ๊ตฌ๋ ์ง์ ์ธ์ฉํ๊ณ , ์ธ์ฉ๋ฌธ์ ์์ด์ฌ๋ ๊ด์ฐฎ์. ๊ณผ์ ์ด๋ ์ ์ฐจ๋ฅผ ์๊ฐํ ๊ฒ์ ํ๋ฉด์ ์๊ฐํ ์ ์๊ฒ ๊ตฌ์ฒด์ ํํ์ ์ด๋ ค์ ๋์ดํด์ค)์ ์์ฑํด์ค. ์ ๋๋ก ์๋ตํ์ง๋ง๊ณ ํ๋ฉด์ ํฌํจ๋ ํ ์คํธ๋ฅผ ๋ชจ๋ ๋ฃ์ด์ค | |
| 3. ์ ์ฒด ๋ฌธ์ ๋ด์ฉ์ ๊ฐ์ฅ ์ ์ด์ธ๋ฆฌ๊ณ ๋๊ธธ์ ๋๋ ์ด๋ฏธ์ง์ ํ๋ฉด ๊ตฌ์ฑ์ ๊ณจ๋ผ์ ์ถ์ฒํด์ฃผ๋ ๋ค์ ๋ด์ฉ์ ํฌํจํด์ค : 1)์ ๋ฐ์ ์ธ ์ฃผ์ ์ ๋ถ์๊ธฐ(์ด๋์/๋ฐ์) ํํ 2) ์๊ฐ(๋ํ์์ 3๊ฐ ์ ํํด์ ๋ฐฐ๊ฒฝ์๊ณผ ๊ฐ์กฐ์์ผ๋ก ๋๋ ํ, ์์์ด๋ฆ๊ณผ color์ฝ๋) ์ ์ 3) ์ ํ(์ค์ฌ/์นํฐ/์ถ์ํ) ์ ์ 4) ์นํฐ์ผ ๊ฒฝ์ฐ ์ด๋ฏธ์ง์ ํน์ง(์บ๋ฆญํฐ์ ์, ์ง์ฅ์ธ/๋๋ฌผ/ํ์ฅ-ํ์ ๋ฑ์ผ๋ก ์ค๋ช ), ์ถ์ํ์ ๊ฒฝ์ฐ ๋ํ์ ๋ฐฐ์น๋ ๋ชจ์ ์ค๋ช , ์ค์ฌ์ผ ๊ฒฝ์ฐ ์ด๋ฏธ์ง ์ค๋ช ) | |
| 4. ๋ง์ง๋ง ํ์ด์ง๋ ํ์ฅ๋ค์ด ์๊ฐํด๋ณผ๋งํ ์ง๋ฌธ์ด๋ ๋ช ์ธ, ์๊ฐ๊ฑฐ๋ฆฌ ๋ฑ์ผ๋ก ๋ง๋ฌด๋ฆฌํด์ค. | |
| ***์์*** | |
| 1. ์ ์ฒด ํ๋ฆ ์ค๋ช : | |
| - ์ค๋ช ๋ฌธ(100์) : | |
| - ์ฃผ์ ๋ถ์๊ธฐ(๋ฐ์/์ด๋์) : | |
| - ์๊ฐ(์์๋ช +์์์ฝ๋) | |
| - ์ ํ (์ค์ฌ/์นํฐ/์ถ์ํ) : | |
| - ์ ํ๋ณ ์ธ๋ถ ์ค๋ช : | |
| 2. ์ฒซ๋ฒ์งธ ์นด๋ | |
| - ํ ์คํธ : | |
| - ์ด๋ฏธ์ง์ ํ๋ฉด๊ตฌ์ฑ : | |
| 3. ๋๋ฒ์งธ ์นด๋ | |
| - ํ ์คํธ : | |
| - ์ด๋ฏธ์ง์ ํ๋ฉด ๊ตฌ์ฑ : | |
| ***์์ ๋*** | |
| ์นด๋๋ด์ค๋ฅผ ๋ณด๋ ์ฌ๋๋ค์ ํญ์ ๋ฐ์ ํ์ฅ๋ค์ด๋ฏ๋ก, ๋ด์ฉ์ ์์ ์ ๋๊ณ ํฅ๋ฏธ๋กญ๊ณ ์ ๋ณด๊ฐ ์ถฉ์คํด์ผํด. ๊ฒฐ๊ณผ๋ฌผ์ ๋ฐ๋์ ํ๊ตญ์ด๋ก ์ ๊ณตํด์ค | |
| """ | |
| 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, 6, 7, 8, 9, 10], label="์นด๋๋ด์ค์ ์ฅ์") | |
| ], | |
| outputs=gr.Textbox(label="์นด๋๋ด์ค ๊ธฐํ์", lines=15), | |
| title="์นด๋๋ด์ค ์์ฑ๊ธฐ by Crystalโจ", | |
| description="ํ๋ณต์ปฌ๋ฆฌ์ง์ ํ๋ณต์ ์ํ์ฌ...๐๐ปโโ๏ธ240301๐ฐ๐ท" | |
| ) | |
| iface.launch() | |