Spaces:
Sleeping
Sleeping
import gradio as gr | |
import random | |
import os | |
import re | |
from huggingface_hub import InferenceClient | |
from youtube_transcript_api import YouTubeTranscriptApi, NoTranscriptFound | |
from fpdf import FPDF | |
from fpdf.enums import XPos, YPos | |
from datetime import datetime | |
# ํด๋ผ์ด์ธํธ ์์ฑ ํจ์ | |
def create_client(model_name): | |
return InferenceClient(model_name, token=os.getenv("HF_TOKEN")) | |
client = create_client("CohereForAI/c4ai-command-r-plus") | |
# API ํธ์ถ ํจ์ | |
def call_api(content, system_message, max_tokens, temperature, top_p): | |
messages = [{"role": "system", "content": system_message}, {"role": "user", "content": content}] | |
random_seed = random.randint(0, 1000000) | |
response = client.chat_completion(messages=messages, max_tokens=max_tokens, temperature=temperature, top_p=top_p, seed=random_seed) | |
return response.choices[0].message.content | |
# ์ ๋ณด ๋ถ์ ํจ์ | |
def analyze_info(category, style, transcripts): | |
transcript_list = transcripts.split("\n\n---\n\n") | |
analyzed_content = f"์ ํํ ์นดํ ๊ณ ๋ฆฌ: {category}\n์ ํํ ํฌ์คํ ์คํ์ผ: {style}\n\n" | |
for i, transcript in enumerate(transcript_list, 1): | |
analyzed_content += f"์ ํ๋ธ ํธ๋์คํฌ๋ฆฝํธ {i}:\n{transcript}\n\n" | |
return analyzed_content | |
# ๋ธ๋ก๊ทธ ํฌ์คํธ ์์ฑ ํจ์ | |
def generate_blog_post(category, style, transcripts, category_prompt, style_prompt, max_tokens, temperature, top_p): | |
full_content = analyze_info(category, style, transcripts) | |
combined_prompt = f"{category_prompt}\n\n{style_prompt}\n\n{full_content}" | |
modified_text = call_api(combined_prompt, "", max_tokens, temperature, top_p) | |
return modified_text.replace('\n', '\n\n') | |
# ์ ํ๋ธ ๋๋ณธ ์์ฝ ํจ์ | |
def summarize_transcript(transcripts, system_message, max_tokens, temperature, top_p): | |
summary = call_api(transcripts, system_message, max_tokens, temperature, top_p) | |
return summary | |
# ์ ํ๋ธ ๋น๋์ค ID ์ถ์ถ ํจ์ | |
def get_video_id(youtube_url): | |
video_id_match = re.search(r"(?<=v=)[^#&?]*", youtube_url) or re.search(r"(?<=youtu.be/)[^#&?]*", youtube_url) | |
return video_id_match.group(0) if video_id_match else None | |
# ์ ํ๋ธ ํธ๋์คํฌ๋ฆฝํธ ์ถ์ถ ํจ์ | |
def get_transcript(youtube_url): | |
video_id = get_video_id(youtube_url) | |
if not video_id: | |
return "Invalid YouTube URL. Please enter a valid URL." | |
language_order = ['ko', 'en', 'ja', 'zh-Hans', 'pt', 'es', 'it', 'fr', 'de', 'ru'] | |
for lang in language_order: | |
try: | |
transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=[lang]) | |
return f"Transcript in {lang}:\n\n{' '.join([entry['text'] for entry in transcript])}" | |
except NoTranscriptFound: | |
continue | |
except Exception as e: | |
return f"Error: {str(e)}" | |
return "No transcript available in the specified languages." | |
# ์นดํ ๊ณ ๋ฆฌ๋ณ ํ๋กฌํํธ ํจ์ | |
def get_blog_post_prompt(category): | |
if category == "์ผ๋ฐํ": | |
return """ | |
#์ ํ๋ธ ๋๋ณธ์ ๋ธ๋ก๊ทธ ํฌ์คํ ์ผ๋ก ๋ณํํ๋ ๊ท์น(์ผ๋ฐํ_v4) | |
##[๊ธฐ๋ณธ ๊ท์น] | |
1.ํ๊ตญ์ด๋ก ์์ฑํ๋, ์ฝ๊ณ ์์ฐ์ค๋ฌ์ด ํํ ์ฌ์ฉ | |
2.์ฌ๋ฌ ์ ํ๋ธ ๋๋ณธ์ ๋ด์ฉ์ ์ข ํฉํ์ฌ ํ๋์ ์ผ๊ด๋ ๋ธ๋ก๊ทธ ๊ธ๋ก ์ฌ๊ตฌ์ฑ | |
3. ๊ฐ ์น์ ์ ์ต์ 400์ ์ด์ ์์ฑํ๊ณ ์ต์ข ๊ธ์ ๊ธธ์ด๋ 3000์ ์ด์์ผ๋ก ์์ฑ | |
4. ์ถ์ฒ ์ ๋ชฉ 3๊ฐ์ง, ๋์ ๋ถ, ๋ณธ๋ก (์์ฃผ์ ํฌํจ), ๊ฒฐ๋ก ์ ๊ตฌ์กฐ๋ก ์์ฑํ ๊ฒ(๋ค๋ฅธ ๊ตฌ์กฐ ์ถ๋ ฅ๊ธ์ง) | |
5. ์ฃผ์ ์ ๋ง๋ ๋ ์ฐฝ์ ์ธ ๊ฐ์ ํ์ ๋๋ค์์ ์ฌ์ฉํ์ฌ ์์ฑํ ๊ฒ(ํ๋ช ๋ณ๋ ์ถ๋ ฅ ๊ธ์ง) | |
6. ํฌ์คํ ์คํ์ผ์ ๋ง๊ฒ ๋งํฌ, ์ดํฌ, ์ดํ๋ฅผ ์กฐ์ ํ ๊ฒ | |
##[ํฌ์คํ ๊ตฌ์กฐ] | |
###[์ถ์ฒ ์ ๋ชฉ] | |
1. ํตํฉ๋ ์ฃผ์ ๋ฅผ ๋ฐ์ํ๊ณ ๋ ์์ ํฅ๋ฏธ๋ฅผ ์ ๋ฐํ๋ ์ ๋ชฉ 3๊ฐ์ง ์ ์ | |
###[๋์ ๋ถ] | |
1. ์ฌ๋ฌ ์์์ ๊ณตํต ์ฃผ์ ๋ ํต์ฌ ๋ฉ์์ง๋ฅผ ์๊ฐ | |
2. ๋ ์์ ๊ด์ฌ์ ๋๋ ์์(์ง๋ฌธ, ํฅ๋ฏธ๋ก์ด ์ฌ์ค, ํต๊ณ, ๊ณต๊ฐ๋ ํ์ฑ ๋ฑ)๋ก ์์ | |
3. ๊ธ์์ ๋ค๋ฃฐ ์ฃผ์ ๋ด์ฉ์ ๊ฐ๋ตํ ์๊ฐ | |
###[๋ณธ๋ก ] | |
1. ์ฃผ์ ๋ณ ํตํฉ ๋ถ์ | |
- ๊ณตํต ์ฃผ์ ๋ ์ฐ๊ด์ฑ ์๋ ๋ด์ฉ์ ์ค์ฌ์ผ๋ก ์น์ ๊ตฌ์ฑ | |
- ๊ฐ ์์์ ๊ด์ ์ด๋ ์ ๋ณด๋ฅผ ๋น๊ต/๋์กฐํ๋ฉฐ ์ข ํฉ | |
- ์น์ ๊ฐ ์์ฐ์ค๋ฌ์ด ์ฐ๊ฒฐ๊ณผ ํ๋ฆ ์ ์ง | |
2. ๋ ํนํ ์ธ์ฌ์ดํธ ๊ฐ์กฐ | |
- ๊ฐ ์์์์ ์ ์๋ ๊ณ ์ ํ ๊ด์ ์ด๋ ์ ๋ณด ๊ฐ์กฐ | |
- ํ์์ ๋ฐฐ๊ฒฝ ์ ๋ณด, ์์, ๊ด๋ จ ํต๊ณ ๋ฑ์ ์ถ๊ฐํ์ฌ ๋ด์ฉ ๋ณด๊ฐ | |
3. ๋ฐ์ดํฐ ๋ฐ ์์ ํตํฉ | |
- ์ฌ๋ฌ ๋๋ณธ์์ ์ ์๋ ๋ฐ์ดํฐ๋ ์์๋ฅผ ์ข ํฉํ์ฌ ์ ์ | |
- ๋ ์๊ฐ ๊ณต๊ฐํ ์ ์๋ ์ํฉ์ด๋ ์ฌ๋ก ํฌํจ | |
4. ์๊ฐ์ ํ๋ฆ ๋๋ ๋ฐ์ ๊ณผ์ ๋ฐ์ | |
- ์ฃผ์ ์ ๊ดํ ์๊ฐ์ ๋ณํ๋ ๋ฐ์ ๊ณผ์ ์ด ์๋ค๋ฉด ์ด๋ฅผ ์ค๋ช | |
###[๊ฒฐ๋ก ] | |
1. ํตํฉ๋ ๋ด์ฉ์ ํต์ฌ ํฌ์ธํธ ์์ฝ | |
2. ๋ ์์๊ฒ ๊ด๋ จ ํ๋์ด๋ ์๊ฐ์ ๋ณํ ์ ๋ | |
3. ์ถ๊ฐ ํ๊ตฌ๊ฐ ํ์ํ ์ฃผ์ ๋ ํฅํ ์ ๋ง ์ ์ | |
##[์ต์ ํ ์ ๋ต] | |
1. SEO ์ต์ ํ | |
- ํตํฉ๋ ์ฃผ์ ์ ๊ด๋ จ๋ ์ฃผ์ ํค์๋๋ฅผ ์ ๋ชฉ, ์์ ๋ชฉ, ๋ณธ๋ฌธ์ ์์ฐ์ค๋ฝ๊ฒ ํฌํจ | |
- ๊ฒ์ ์๋์ ๋ถํฉํ๋ ํฌ๊ด์ ์ธ ๋ด์ฉ ๊ตฌ์ฑ | |
2. ๊ฐ๋ ์ฑ ํฅ์ | |
- ๊ฐ๊ฒฐํ๊ณ ๋ช ํํ ๋ฌธ์ฅ ์ฌ์ฉ | |
- ์ ์ ํ ๋จ๋ฝ ๊ตฌ๋ถ๊ณผ ์ฌ๋ฐฑ ํ์ฉ | |
3. ๋ ์ ์ฐธ์ฌ ์ ๋ | |
- ๋ ์์ ๊ฒฝํ์ด๋ ์๊ฒฌ์ ๋ฌป๋ ์ง๋ฌธ ํฌํจ | |
- ๊ด๋ จ ์ ๋ณด๋ ์ถ๊ฐ ์๋ฃ์ ๋ํ ์๋ด ์ ๊ณต | |
##[๊ต์ ๋ฐ ํธ์ง] | |
1. ๋ง์ถค๋ฒ, ๋ฌธ๋ฒ, ์ดํ ์ฌ์ฉ์ ์ ํ์ฑ ํ์ธ | |
2. ๋ฌธ์ฒด์ ํค์ ์ผ๊ด์ฑ ์ ์ง | |
3. ์ ์ฒด ๊ธ์ ๋ ผ๋ฆฌ์ ํ๋ฆ๊ณผ ๊ตฌ์กฐ ์ ๊ฒ | |
4. 'ํ์'๋ผ๋ ํํ ์ ์ธ | |
5. ์ ํ๋ธ ๊ด๋ จ ํํ ์ ๊ฑฐ ๋ฐ ๋ธ๋ก๊ทธ ํ์์ ๋ง๊ฒ ์กฐ์ | |
6. ์ ํ๋ธ ํน์ ์ฉ์ด(์: '๊ตฌ๋ ', '์ข์์', '์๋ฆผ', '๋ค์ ์์' ๋ฑ) ์ฌ์ฉ ๊ธ์ง | |
7. '์ ํ๋ฒ', 'YouTuber' ๋ฑ์ ํํ์ '์ ์์' ๋๋ '์งํ์' ๊ฐ์ ๋ค๋ฅธ ํํ์ผ๋ก ๋์ฒด | |
8. ์ฑ๋๋ช , ์ ์์ ์ค๋ช ๋ฑ ๊ฐ์ธ ์ ๋ณด ์ ์ธ | |
##[์ฃผ์์ฌํญ] | |
1. ๋๋ณธ์ ์ง์ ์ ์ธ ์ธ์ฉ ๊ธ์ง, ๋ด์ฉ์ ์ฌ๊ตฌ์ฑํ์ฌ ์์ฑ | |
2. ์์ถฉ๋๋ ์ ๋ณด๊ฐ ์์ ๊ฒฝ์ฐ ๊ณต์ ํ๊ฒ ๋ค๋ฃจ๊ณ ๊ฐ๋ฅํ ์ค๋ช ์ ์ | |
""" | |
elif category == "์ ๋ณด์ฑ": | |
return """ | |
#์ ํ๋ธ ๋๋ณธ์ ๋ธ๋ก๊ทธ ํฌ์คํ ์ผ๋ก ๋ณํํ๋ ๊ท์น(์ ๋ณด์ฑ_v4) | |
##[๊ธฐ๋ณธ ์์น] | |
1. ๋ฐ๋์ ํ๊ตญ์ด(ํ๊ธ)๋ก ์์ฑํ๋ผ | |
2. ์ฌ๋ฌ ์ ํ๋ธ ๋๋ณธ์ ๋ด์ฉ์ ์ข ํฉํ์ฌ ํ๋์ ์ฃผ์ ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๋ธ๋ก๊ทธ ๊ธ๋ก ์ฌ๊ตฌ์ฑํ๋ผ | |
3. ์ต์ข ๊ธ์ ๊ธธ์ด๋ 3000-4000์ ์ฌ์ด๋ก ์์ฑ | |
4. ์ถ์ฒ์ ๋ชฉ3๊ฐ์ง, ๋์ ๋ถ, ๋ณธ๋ก , ๊ฒฐ๋ก ์ ๊ตฌ์กฐ๋ก ์์ฑ | |
5. ๊ฐ๊ด์ ์ด๊ณ ์ ๋ขฐํ ์ ์๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ํค์ผ๋ก ์์ฑ | |
6. ์ฌ๋ฌ ์ ํ๋ธ ๋๋ณธ์ ๋ด์ฉ์ ์ข ํฉํ์ฌ ํ๋์ ํฌ๊ด์ ์ด๊ณ ๋ ์ฐฝ์ ์ธ ๋ธ๋ก๊ทธ ๊ธ ์์ฑ | |
##[ํฌ์คํ ๊ตฌ์กฐ] | |
###[์ถ์ฒ์ ๋ชฉ] | |
1. ์ฃผ์ ๋ฅผ ๋ช ํํ ๋ํ๋ด๊ณ ๋ ์์ ๊ด์ฌ์ ๋ ์ ์๋ ์ ๋ชฉ 3๊ฐ์ง๋ฅผ ๊ฐ์ฅ ๋จผ์ ์ถ๋ ฅํ๋ผ | |
2. ๋ ์์ ๊ด์ฌ์ ๋ ์ ์๋ ํํ๋ก ์์ฑํ๋ผ(์: "์์๋๋ฉด ์ ์ฉํ ~", "์ ๋ฌธ๊ฐ๊ฐ ์๋ ค์ฃผ๋ ~") | |
##[๋์ ๋ถ] | |
1. ์ฃผ์ ์ ์ค์์ฑ๊ณผ ์ผ์์ํ์์์ ๊ด๋ จ์ฑ ์ค๋ช | |
2. ๋ค๋ฃฐ ์ฃผ์ ๋ด์ฉ ๊ฐ๋ตํ ์๊ฐ | |
3. ๋ ์๊ฐ ์ป์ ์ ์๋ ์ค์ฉ์ ์ธ ์ ๋ณด๋ ์ด์ ์ ์ | |
4. ๋ ์์ ๊ด์ฌ์ ๋๋ ์์(์ง๋ฌธ, ํฅ๋ฏธ๋ก์ด ์ฌ์ค, ํต๊ณ, ๊ณต๊ฐ๋ ํ์ฑ ๋ฑ)๋ก ์์ | |
###[๋ณธ๋ก ] | |
1. ์ฃผ์ ์ ๋ฐ๋ผ 4~6๊ฐ์ ์ฃผ์ ์น์ ์ผ๋ก ์ ์ฐํ๊ฒ ๊ตฌ์ฑํ๋ผ. | |
2. ์์ฑ๋ ๊ธ์ด 2500์ ์ด์ ๋๋๋ก ์์ฑํ๋ผ | |
3. ๊ฐ ์น์ ์ ๋ช ํํ ์์ ๋ชฉ์ ์ฌ์ฉํ์ฌ ๊ตฌ๋ถํ๋ผ | |
4. ์ ๋ณด์ ์ค์๋์ ๋ฐ๋ผ ๋ด์ฉ์ ๊น์ด์ ์์ ์กฐ์ ํ๋ผ | |
5. ๊ฐ ์น์ ์ ์ฃผ์ ์ ํต์ฌ ์ธก๋ฉด์ ๋ค๋ฃจ๋๋กํ๋ค. | |
###[๊ฒฐ๋ก ] | |
1. ์ฃผ์ ํฌ์ธํธ ์์ฝ | |
2. ๋ ์์๊ฒ ์ค์ฉ์ ์ธ ์กฐ์ธ์ด๋ ํ๋ ์ง์นจ ์ ๊ณต | |
3. ๋ ์์์ ์ํธ์์ฉ์ ์ ๋ํ๋ ์ง๋ฌธ์ด๋ call-to-action ํฌํจ | |
4. ์ฃผ์ ์ ๊ด๋ จ๋ ํฅํ ์ ๋ง์ด๋ ์ถ์ธ ๊ฐ๋จํ ์ธ๊ธ | |
##[์ต์ ํ ์ ๋ต] | |
###[SEO ์ต์ ํ] | |
1. ์ฃผ์ ์ ๊ด๋ จ๋ ํค์๋๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํฌํจ (ํค์๋ ๋ฐ๋ 2-3% ์ ์ง) | |
2. ๊ฒ์ ์๋์ ๋ถํฉํ๋ ํฌ๊ด์ ์ธ ๋ด์ฉ ๊ตฌ์ฑ | |
###[๊ฐ๋ ์ฑ ํฅ์] | |
1. ๋ช ํํ ์์ ๋ชฉ๊ณผ ๋จ๋ฝ ๊ตฌ๋ถ ์ฌ์ฉ | |
2. ํ์์ ๋ฒํธ ๋งค๊ธฐ๊ธฐ๋ ๊ธ๋จธ๋ฆฌ ๊ธฐํธ ์ฌ์ฉ | |
##[์ฃผ์์ฌํญ] | |
1. ์ฌ๋ฌ๊ฐ์ ์ ํ๋ธ ๋๋ณธ์ค ํ๋์ ์น์ฐ์น ๋ด์ฉ ๊ธ์ง, ๊ฐ๊ด์ ์ด๊ณ ๊ณต์ ํ ์ ๋ณด ์ ๊ณต | |
2. ์ต์ ์ ๋ณด ์ฌ์ฉ, ์์ฑ ์์ ๋ช ์ | |
3. ๋ณต์กํ ์ ๋ฌธ ์ฉ์ด๋ ๊ฐ๋ ์ ์ผ๋ฐ ๋ ์๋ ์ดํดํ ์ ์๊ฒ ์ฝ๊ฒ ์ค๋ช | |
4. ์ ํ๋ธ ๊ด๋ จ ํํ ์ ๊ฑฐ ๋ฐ ๋ธ๋ก๊ทธ ํ์์ ๋ง๊ฒ ์กฐ์ | |
5. ์ ํ๋ธ ํน์ ์ฉ์ด(์: '๊ตฌ๋ ', '์ข์์', '์๋ฆผ', '๋ค์ ์์' ๋ฑ) ์ฌ์ฉ ๊ธ์ง | |
6. '์ ํ๋ฒ', 'YouTuber' ๋ฑ์ ํํ์ '์ ์์' ๋๋ '์งํ์' ๊ฐ์ ๋ค๋ฅธ ํํ์ผ๋ก ๋์ฒด | |
7. ์ฑ๋๋ช , ์ ์์ ์ค๋ช ๋ฑ ๊ฐ์ธ ์ ๋ณด ์ ์ธ | |
""" | |
elif category == "1๊ฐ ์ํ ์ถ์ฒํ": | |
return """ | |
#์ ํ๋ธ ๋๋ณธ์ ๋ธ๋ก๊ทธ ํฌ์คํ ์ผ๋ก ๋ณํํ๋ ๊ท์น(์ถ์ฒํ_v4) | |
##[๊ธฐ๋ณธ ๊ท์น] | |
1. ํ๊ตญ์ด๋ก ์์ฑํ๋, ์ฝ๊ณ ์์ฐ์ค๋ฌ์ด ํํ ์ฌ์ฉ | |
2. ์ฌ๋ฌ ์ ํ๋ธ ๋๋ณธ์ ๋ด์ฉ์ ์ข ํฉํ์ฌ ํ๋์ ์ํ์ ์ง์ค๋ ์ถ์ฒ ๋ธ๋ก๊ทธ ๊ธ๋ก ์ฌ๊ตฌ์ฑ | |
3. ์ต์ข ๊ธ์ ๊ธธ์ด๋ 3000์ ์ด์์ผ๋ก ์์ฑ | |
4. ์ถ์ฒ ์ ๋ชฉ, ๋์ ๋ถ, ๋ณธ๋ก , ๊ฒฐ๋ก ์ ๊ตฌ์กฐ๋ก ์์ฑ | |
5. ์ฃผ์ ์ ๋ง๋ ๋ ์ฐฝ์ ์ธ ๊ฐ์ ํ์ ๋๋ค์์ ์ฌ์ฉํ์ฌ ์์ฑ | |
6. ์ ๋ฌธ์ฑ๊ณผ ๊ฐ๊ด์ฑ์ ๊ฐ์ถ ํค์ผ๋ก ์์ฑ | |
##[ํฌ์คํ ๊ตฌ์กฐ] | |
###[์ถ์ฒ ์ ๋ชฉ] | |
1. ์ ํ์ ํต์ฌ ์ฅ์ ์ด๋ ํน์ง์ ๊ฐ์กฐํ๋ ์ ๋ชฉ | |
2. ๋ ์์ ํธ๊ธฐ์ฌ์ ์๊ทนํ๋ ์ง๋ฌธํ ์ ๋ชฉ | |
3. ์ ํ์ ํ์ ์ฑ์ด๋ ์ฐจ๋ณ์ ์ ๋ถ๊ฐ์ํค๋ ์ ๋ชฉ | |
4. ์ถ์ฒ์ ๋ชฉ 3๊ฐ์ง๋ง ์ถ๋ ฅํ๋ผ(๋ค๋ฅธ๊ตฌ์กฐ, ์ค๋ช ์ถ๋ ฅ๊ธ์ง) | |
###[๋์ ๋ถ] | |
1. ์ ํ์ ์ฃผ์ ํน์ง๊ณผ ์์ฅ์์์ ์์น ์๊ฐ | |
2. ๋ ์์ ๊ด์ฌ์ ๋๋ ์์(๋ฌธ์ ์ ๊ธฐ, ํฅ๋ฏธ๋ก์ด ์ฌ์ค ๋ฑ) ํฌํจ | |
3. ๋ฆฌ๋ทฐ์ ์ฃผ์ ๋ด์ฉ ๊ฐ๋ตํ ์๊ณ | |
###[๋ณธ๋ก ] | |
- ๋ค์ ์์๋ค์ ์ฃผ์ ์ ๋ง๊ฒ ์ ํ์ ์ผ๋ก ํฌํจํ๊ณ ๋ง๋ ์ฃผ์ ๊ฐ ์๋ค๋ฉด ์ ํฉํ ์ฃผ์ ๋ฅผ ์์ฑํ๋ผ | |
- ๋จ, ์ถฉ๋ถํ ์(3000-4000์)์ ๊ธ์ด ์์ฑ๋ ์ ์๋๋ก ์น์ ์ ์ค์ ํ๋ผ. | |
- ๊ฐ ์น์ ์ ๋ช ํํ ์์ ๋ชฉ์ ์ฌ์ฉํ์ฌ ๊ตฌ๋ถํ๊ณ , ์ ๋ณด์ ์ค์๋์ ๋ฐ๋ผ ๋ด์ฉ์ ๊น์ด์ ์์, ์์ ๋ชฉ ์กฐ์ ํ๋ผ | |
1. ์ ํ ๊ฐ์ | |
- ๊ธฐ๋ณธ ์คํ ๋ฐ ์ฃผ์ ๊ธฐ๋ฅ ์ค๋ช | |
- ๊ฒฝ์ ์ ํ๊ณผ์ ์ฐจ๋ณ์ ๊ฐ์กฐ | |
2. ๋์์ธ ๋ฐ build quality | |
- ์ธ๊ด ๋์์ธ ๋ฐ ๋ง๊ฐ ํ์ง ํ๊ฐ | |
- ๋ฌด๊ฒ, ํฌ๊ธฐ ๋ฑ ํด๋์ฑ ๊ด๋ จ ์ ๋ณด | |
3. ์ฑ๋ฅ ๋ถ์ | |
- ๋ฒค์น๋งํฌ ํ ์คํธ ๊ฒฐ๊ณผ ์์ธ ์ค๋ช (ํ์์ ๊ทธ๋ํ๋ ํ ํ์ฉ) | |
- ์ค์ ์ฌ์ฉ ๊ฒฝํ ๊ธฐ๋ฐ์ ์ฑ๋ฅ ํ๊ฐ | |
- ๋ฐ์ด ๋ฐ ์์ ๊ด๋ จ ์ ๋ณด | |
4. ๋ฐฐํฐ๋ฆฌ ์ฑ๋ฅ | |
- ๋ฐฐํฐ๋ฆฌ ์ง์ ์๊ฐ ํ ์คํธ ๊ฒฐ๊ณผ | |
- ์ถฉ์ ์๋ ๋ฐ ๋ฐฐํฐ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ ์ค๋ช | |
5. ํน์ ๊ธฐ๋ฅ ๋ฐ ์ํํธ์จ์ด | |
- AI ๊ธฐ๋ฅ ๋ฑ ์ ํ๋ง์ ํน๋ณํ ๊ธฐ๋ฅ ์์ธ ์ค๋ช | |
- ์ ์กฐ์ฌ ์ ์ฉ ์ํํธ์จ์ด์ ์ ์ฉ์ฑ ํ๊ฐ | |
6. ์ฌ์ฉ ๊ฒฝํ | |
- ํค๋ณด๋, ํธ๋ํจ๋, ๋์คํ๋ ์ด ๋ฑ ์ฌ์ฉ๊ฐ ํ๊ฐ | |
- ์ผ์์ ์ธ ์์ ๋ฐ ํน์ํ ์ํฉ์์์ ์ฌ์ฉ ๊ฒฝํ ๊ณต์ | |
7. ํธํ์ฑ ๋ฐ ํ์ฅ์ฑ | |
- ์ํํธ์จ์ด ํธํ์ฑ ์ด์ ์ค๋ช | |
- ํฌํธ ๋ฐ ์ฐ๊ฒฐ์ฑ ๊ด๋ จ ์ ๋ณด | |
8. ๊ฐ๊ฒฉ ๋ฐ ๊ฒฝ์๋ ฅ | |
- ๊ฐ๊ฒฉ๋ ๋น ์ฑ๋ฅ ํ๊ฐ | |
- ์ ์ฌ ์ ํ๊ณผ์ ๋น๊ต ๋ถ์ | |
###[๊ฒฐ๋ก ] | |
1. ์ ํ์ ํต์ฌ ์ฅ๋จ์ ์์ฝ | |
2. ์ ํฉํ ์ฌ์ฉ์ ์ ํ ์ ์ | |
3. ์ต์ข ์ถ์ฒ ์๊ฒฌ ๋ฐ ๊ตฌ๋งค ์กฐ์ธ | |
##[์ต์ ํ ์ ๋ต] | |
1. SEO ์ต์ ํ | |
- ์ ํ๋ช , ์ฃผ์ ๊ธฐ๋ฅ, ์ฑ๋ฅ ๊ด๋ จ ํค์๋ ์์ฐ์ค๋ฝ๊ฒ ํฌํจ | |
- ๊ฒ์ ์๋์ ๋ถํฉํ๋ ํฌ๊ด์ ์ธ ๋ด์ฉ ๊ตฌ์ฑ | |
2. ๊ฐ๋ ์ฑ ํฅ์ | |
- ๋ช ํํ ์์ ๋ชฉ ์ฌ์ฉ์ผ๋ก ์ ๋ณด ๊ตฌ๋ถ | |
- ์ค์ ์ ๋ณด๋ ๊ตต์ ๊ธ์จ๋ ๊ธฐ์ธ์๊ผด๋ก ๊ฐ์กฐ | |
- ํ์์ ํ๋ ์ฐจํธ ํ์ฉํ์ฌ ์ ๋ณด ์๊ฐํ | |
3. ๋ ์ ์ฐธ์ฌ ์ ๋ | |
- ์ ํ ์ฌ์ฉ ๊ฒฝํ์ด๋ ์๊ฒฌ์ ๋ฌป๋ ์ง๋ฌธ ํฌํจ | |
- ์ถ๊ฐ ์ ๋ณด๋ ๋ฆฌ์์ค์ ๋ํ ์๋ด ์ ๊ณต | |
##[์ฃผ์์ฌํญ] | |
1. ๊ฐ๊ด์ ์ด๊ณ ๊ณต์ ํ ๋ฆฌ๋ทฐ ์ ๊ณต, ๊ณผ๋ํ ํ๋ณด์ฑ ํํ ์์ | |
2. ํ ์คํธ ํ๊ฒฝ ๋ฐ ์กฐ๊ฑด์ ๋ช ํํ ๋ช ์ | |
3. ๊ฐ๊ฒฉ ์ ๋ณด ๋ฑ์ ์์ฑ ์์ ๊ธฐ์ค์์ ๋ช ์ | |
4. ์ ํ๋ธ ๊ด๋ จ ํํ ์ ๊ฑฐ ๋ฐ ๋ธ๋ก๊ทธ ํ์์ ๋ง๊ฒ ์กฐ์ | |
5. ์ ๋ฌธ ์ฉ์ด๋ ๊ธฐ์ ์ ํน์ง ์ค๋ช ์ ์ผ๋ฐ ๋ ์๋ ์ดํดํ ์ ์๋๋ก ์ฝ๊ฒ ํ์ด์ ์ค๋ช | |
6. ์ ํ์ ํ๊ณ์ ์ด๋ ๊ฐ์ ์ด ํ์ํ ๋ถ๋ถ๋ ๊ท ํ์๊ฒ ๋ค๋ฃธ | |
""" | |
elif category == "ํ๋ ์ด์ ํ": | |
return """ | |
#์ ํ๋ธ ๋๋ณธ์ ๋ธ๋ก๊ทธ ํฌ์คํ ์ผ๋ก ๋ณํํ๋ ๊ท์น(ํ๋ ์ด์ ํ_v3) | |
##[๊ธฐ๋ณธ ๊ท์น] | |
1. ํ๊ตญ์ด๋ก ์์ฑํ๋, ์ฝ๊ณ ์์ฐ์ค๋ฌ์ด ํํ ์ฌ์ฉํ๋ผ | |
2. ์ฌ๋ฌ ์ ํ๋ธ ๋๋ณธ์ ๋ด์ฉ์ ์ข ํฉํ์ฌ ํ๋์ ์ฃผ์ ์ ๋ํ ๋ค์ํ ์ํ ์ถ์ฒ ๋ธ๋ก๊ทธ ๊ธ๋ก ์ฌ๊ตฌ์ฑ | |
3. ๋ฐ๋์ ๊ฐ ์น์ ์ ์ต์ 400์ ์ด์ ์์ฑํ๊ณ ์ต์ข ๊ธ์ ๊ธธ์ด๋ 3000์ ์ด์์ผ๋ก ์์ฑ | |
4. ์ถ์ฒ ์ ๋ชฉ, ๋์ ๋ถ, ๋ณธ๋ก (์ ํ ์ ํ ๋น๊ต, ์ ์ ๊ธฐ์ค, ์ถ์ฒ ์ํ ๋ฆฌ์คํธ), ๊ฒฐ๋ก ์ ๊ตฌ์กฐ๋ก ์์ฑ | |
5. ์ฃผ์ ์ ๋ง๋ ๋ ์ฐฝ์ ์ธ ๊ฐ์ ํ์ ๋๋ค์์ ์ฌ์ฉํ์ฌ ์์ฑ | |
6. ๊ฐ๊ด์ ์ด๊ณ ์ ๋ณด ์ ๊ณต์ ์ค์ ์ ๋ ํค์ผ๋ก ์์ฑ | |
##[ํฌ์คํ ๊ตฌ์กฐ] | |
###[์ถ์ฒ ์ ๋ชฉ] | |
1. ์ถ์ฒ์ ๋ชฉ 3๊ฐ์ง๋ง ์ถ๋ ฅํ๋ผ(๋ค๋ฅธ๊ตฌ์กฐ, ์ค๋ช ์ถ๋ ฅ๊ธ์ง) | |
2. ๋ ์์ ํธ๊ธฐ์ฌ์ ์๊ทนํ๋ ํฅ๋ฏธ๋ก์ด ์ ๋ชฉ ์ฌ์ฉ | |
3. ์ ํ์ ํต์ฌ ๊ฐ์น๋ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ ๊ฐ์กฐํ๋ ์ ๋ชฉ | |
4. ๋น๊ต๋ ๋์กฐ๋ฅผ ํ์ฉํ ์ ๋ชฉ | |
5. ์ง๋ฌธ ํ์์ด๋ ๋์ ์ ์ธ ๋ฌธ๊ตฌ๋ฅผ ์ฌ์ฉํ ์ ๋ชฉ | |
6. ์ซ์๋ ์์๋ฅผ ํ์ฉํ ์ ๋ชฉ (ํ์์) | |
7. ๋ ์์ธต์ ๋ช ํํ ํ๋ ์ ๋ชฉ | |
8. "Best X" ๋๋ "Top Y" ํ์์ ์ ๋ชฉ๋ ์ ์ ํ ์ฌ์ฉํ๋ผ | |
9. ๋ ์์ ๊ด์ฌ์ ๋ ์ ์๋ ํฅ๋ฏธ๋ก์ด ์ ๋ชฉ | |
###[๋์ ๋ถ] | |
1. ์ถ์ฒ ์ฃผ์ ์ ํ์์ฑ๊ณผ ์ ํ์ ์ด๋ ค์ ์๊ฐ | |
2. ๊ธ์ ๋ชฉ์ ์ค๋ช (์ ํ ์ ํ ๋น๊ต ๋ฐ ์ถ์ฒ ์ ํ ์๊ฐ) | |
3. ๋ ์์ ๊ด์ฌ์ ๋๋ ์์ ํฌํจ (์: ๊ณ์ ์ ์์ธ, ์ํ ๊ฐ์ ํจ๊ณผ ๋ฑ) | |
###[๋ณธ๋ก ] | |
- ๋ค์ ์์๋ค์ ์ฃผ์ ์ ๋ง๊ฒ ์ ํ์ ์ผ๋ก ํฌํจํ๊ณ ๋ง๋ ์ฃผ์ ๊ฐ ์๋ค๋ฉด ์ ํฉํ ์ฃผ์ ๋ฅผ ์์ฑํ๋ผ | |
- ๋จ, ์ถฉ๋ถํ ์(3000-4000์)์ ๊ธ์ด ์์ฑ๋ ์ ์๋๋ก ์น์ ์ ์ค์ ํ๋ผ. | |
- ๊ฐ ์น์ ์ ๋ช ํํ ์์ ๋ชฉ์ ์ฌ์ฉํ์ฌ ๊ตฌ๋ถํ๊ณ , ์ ๋ณด์ ์ค์๋์ ๋ฐ๋ผ ๋ด์ฉ์ ๊น์ด์ ์์ ์กฐ์ | |
1. ์ ํ ์ ํ๋ณ ๋น๊ต | |
- ๊ฐ ์ ํ์ ์ฅ๋จ์ ๋ถ์ | |
- ์ฌ์ฉ ํ๊ฒฝ์ ๋ฐ๋ฅธ ์ ํฉ์ฑ ์ค๋ช | |
2. ์ ํ ์ ์ ๊ธฐ์ค ์์ธ ์ค๋ช | |
- ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ์ฑ๋ฅ ์ค๋ช | |
- ์ฌ์ฉ ํธ์์ฑ ๊ณ ๋ ค ์ฌํญ | |
- ๊ฐ๊ฒฉ ๋ฐ ์ ์ง ๋น์ฉ ๋ถ์ | |
3. ์ถ์ฒ ์ ํ ๋ฆฌ์คํธ (3-5๊ฐ) | |
- ์ ํ๋ช ๊ณผ ํต์ฌ ํน์ง ์๊ฐ | |
- ๊ฐ ์ ํ์ ์ฅ๋จ์ ์์ธ ์ค๋ช | |
- ์ ํฉํ ์ฌ์ฉ์ ์ ํ ์ ์ | |
4. ๋ธ๋๋ ๋ฐ ๋ชจ๋ธ ๋ผ์ธ์ ์ค๋ช (ํ์์) | |
- ์ฃผ์ ๋ธ๋๋์ ์ ํ ๋ผ์ธ ์๊ฐ | |
- ๋ชจ๋ธ๋ณ ์ฐจ์ด์ ๋ฐ ํน์ง ์ค๋ช | |
###[๊ฒฐ๋ก ] | |
1. ์ถ์ฒ ์ ํ ์์ฝ ๋ฐ ์ต์ข ์ ํ ๊ฐ์ด๋ | |
2. ๊ตฌ๋งค ์ ๊ณ ๋ คํด์ผ ํ ์ถ๊ฐ ์ฌํญ ์๋ด | |
3. ํฅํ ๊ธฐ์ ๋ฐ์ ๋ฐฉํฅ์ด๋ ํธ๋ ๋ ์ ์ (์์ ๊ฒฝ์ฐ) | |
##[์ต์ ํ ์ ๋ต] | |
1. SEO ์ต์ ํ | |
- ์ถ์ฒ ์ฃผ์ ์ ๊ด๋ จ๋ ์ฃผ์ ํค์๋๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ํฌํจ | |
- ๊ฒ์ ์๋์ ๋ถํฉํ๋ ํฌ๊ด์ ์ธ ๋ด์ฉ ๊ตฌ์ฑ | |
2. ๊ฐ๋ ์ฑ ํฅ์ | |
- ๊ฐ๊ฒฐํ๊ณ ๋ช ํํ ๋ฌธ์ฅ ์ฌ์ฉ | |
- ์ ์ ํ ๋จ๋ฝ ๊ตฌ๋ถ๊ณผ ๋ฒํธ ๋งค๊ธฐ๊ธฐ ํ์ฉ | |
- ํ์์ ํ๋ ์ฐจํธ ํ์ฉํ์ฌ ์ ๋ณด ์๊ฐํ | |
3. ๋ ์ ์ฐธ์ฌ ์ ๋ | |
- ๋ ์์ ๊ฒฝํ์ด๋ ์๊ฒฌ์ ๋ฌป๋ ์ง๋ฌธ ํฌํจ | |
- ๊ด๋ จ ์ ๋ณด๋ ์ถ๊ฐ ๋ฆฌ์์ค์ ๋ํ ์๋ด ์ ๊ณต | |
##[์ฃผ์์ฌํญ] | |
1. ๊ฐ๊ด์ ์ด๊ณ ๊ณต์ ํ ๋น๊ต ๋ถ์ ์ ๊ณต | |
2. ๊ณผ๋ํ ํ๋ณด์ฑ ํํ ์์ | |
3. ๊ฐ๊ฒฉ ์ ๋ณด ๋ฑ์ ์์ฑ ์์ ๊ธฐ์ค์์ ๋ช ์ | |
4. ์ ํ๋ธ ๊ด๋ จ ํํ ์ ๊ฑฐ ๋ฐ ๋ธ๋ก๊ทธ ํ์์ ๋ง๊ฒ ์กฐ์ | |
5. ๊ฐ์ธ์ ๋ณด ๋ณดํธ๋ฅผ ์ํด ํน์ ๊ฐ์ธ์ ์ค๋ช ์ด๋ ์ฑ๋๋ช ์ธ๊ธ ๊ธ์ง | |
6. ๋ค์ํ ๋ธ๋๋์ ๊ฐ๊ฒฉ๋์ ์ ํ์ ํฌํจํ์ฌ ํธํฅ์ฑ ๋ฐฉ์ง | |
7. ์ ๋ฌธ ์ฉ์ด๋ ๊ธฐ์ ์ ํน์ง ์ค๋ช ์ ์ผ๋ฐ ๋ ์๋ ์ดํดํ ์ ์๋๋ก ์ฝ๊ฒ ํ์ด์ ์ค๋ช | |
""" | |
# ํฌ์คํ ์คํ์ผ ํ๋กฌํํธ ํจ์ | |
def get_style_prompt(style): | |
prompts = { | |
"์น๊ทผํ": """ | |
#์น๊ทผํ ๋ธ๋ก๊ทธ ํฌ์คํ ์คํ์ผ ๊ฐ์ด๋ | |
1. ํค๊ณผ ์ด์กฐ | |
- ๋ํํ๋ฏ ํธ์ํ๊ณ ์น๊ทผํ ๋งํฌ ์ฌ์ฉ | |
- ๋ ์๋ฅผ "์ฌ๋ฌ๋ถ" ๋๋ "๋ ์๋๋ค"๋ก ์ง์นญ | |
- ์ ์ ํ ์ด๋ชจ์ง๋ฅผ sparseํ๊ฒ ์ฌ์ฉํ์ฌ ์น๊ทผ๊ฐ ํํ | |
2. ๋ฌธ์ฅ ๋ฐ ๋ด์ฉ ๊ตฌ์ฑ | |
- ์งง๊ณ ๊ฐ๊ฒฐํ ๋ฌธ์ฅ ์์ฃผ๋ก ์์ฑ | |
- ๊ตฌ์ด์ฒด ํํ ์ฌ์ฉ (์: "~ํ์ด์", "~์ธ ๊ฒ ๊ฐ์์") | |
- '~๋๋ค', '~ํ์ฃ '๋ ์ฌ์ฉํ์ง ๋ง ๊ฒ. | |
- ๊ฐ์ธ์ ์ธ ๊ฒฝํ์ด๋ ์ผํ๋ก ์์ | |
- ์ค์ํ์์ ์ฝ๊ฒ ์ ์ฉํ ์ ์๋ ํ ์ ๊ณต | |
- ๋ ์์ ๊ณต๊ฐ์ ์ป์ ์ ์๋ ์ฌ๋ก ํฌํจ | |
3. ์ฉ์ด ๋ฐ ์ค๋ช ๋ฐฉ์ | |
- ์ ๋ฌธ ์ฉ์ด ๋์ ์ฌ์ด ๋จ์ด๋ก ํ์ด์ ์ค๋ช | |
- ๋น์ ๋ ์์ ๋ฅผ ํ์ฉํ์ฌ ๋ณต์กํ ๊ฐ๋ ์ค๋ช | |
- ์์ฌ์๋ฌธ๋ฌธ ํ์ฉํ์ฌ ๋ ์์ ์ํตํ๋ ๋๋ ์ฃผ๊ธฐ | |
4. ๋ ์์์ ์ํธ์์ฉ | |
- ๋ ์์ ์๊ฒฌ์ ๋ฌผ์ด๋ณด๋ ์ง๋ฌธ ํฌํจ | |
- ๋๊ธ ๋ฌ๊ธฐ๋ฅผ ๋ ๋ คํ๋ ๋ฌธ๊ตฌ ์ฌ์ฉ | |
5. ์ด๋ชจ์ง ํ์ฉ | |
- ์ฃผ์ ํฌ์ธํธ๋ ์๋ก์ด ์น์ ์ ์์ํ ๋๋ง ๊ด๋ จ ์ด๋ชจ์ง ์ฌ์ฉ | |
- ์ ์ฒด ๊ธ์์ 3-5๊ฐ ์ ๋์ ์ด๋ชจ์ง๋ง ์ฌ์ฉํ์ฌ ๊ณผ๋ํ์ง ์๊ฒ ์ ์ง | |
6. ๋ง๋ฌด๋ฆฌ | |
- ์น๊ทผํ๊ณ ๊ฒฉ๋ คํ๋ ํค์ผ๋ก ๋ง๋ฌด๋ฆฌ | |
- ๋ค์ ํฌ์คํ ์ ๋ํ ๊ธฐ๋๊ฐ ์ ๋ฐ | |
์ฃผ์์ฌํญ: ๋๋ฌด ๊ฐ๋ฒผ์ด ํค์ ์ง์ํ๊ณ , ์ฃผ์ ์ ์ค์์ฑ์ ํด์น์ง ์๋ ์ ์์ ์น๊ทผํจ ์ ์ง | |
์์: | |
"์ฌ๋ฌ๋ถ, ์ค๋ ํ๋ฃจ๋ ์ด๋ ์ จ๋์? ๐ ์ ๋ ์ค๋ ์ฌ๋ฏธ์๋ ๊ฒฝํ์ ํ์ด์. ๋ฐ๋ก '๋ฏธ๋๋ฉ ๋ผ์ดํ'์ ๋์ ํด๋ณธ ๊ฑด๋ฐ์. ์ฒ์์๋ ์ข ๋ง๋งํ์ง๋ง, ์๊ฐ๋ณด๋ค ์ฆ๊ฑฐ์ด ๊ฒฝํ์ด์์ด์! ์ฌ๋ฌ๋ถ๋ ํ๋ฒ ๋ฐ๋ผํด๋ณด์๊ฒ ์ด์? ์ ๊ฐ ์๊ฒ ๋ ๊ฟํ๋ค์ ํ๋ํ๋ ์๋ ค๋๋ฆด๊ฒ์. | |
""", | |
"์ผ๋ฐ":"""#์ผ๋ฐ์ ์ธ ๋ธ๋ก๊ทธ ํฌ์คํ ์คํ์ผ ๊ฐ์ด๋ | |
1. ํค๊ณผ ์ด์กฐ | |
- ์ค๋ฆฝ์ ์ด๊ณ ๊ฐ๊ด์ ์ธ ํค ์ ์ง | |
- ์ ์ ํ ์กด๋๋ง ์ฌ์ฉ (์: "~ํฉ๋๋ค", "~์ ๋๋ค") | |
2. ๋ด์ฉ ๊ตฌ์กฐ ๋ฐ ์ ๊ฐ | |
- ๋ช ํํ ์ฃผ์ ์ ์๋ก ์์ | |
- ๋ ผ๋ฆฌ์ ์ธ ์์๋ก ์ ๋ณด ์ ๊ฐ | |
- ์ฃผ์ ํฌ์ธํธ๋ฅผ ๊ฐ์กฐํ๋ ์์ ๋ชฉ ํ์ฉ | |
- ์ ์ ํ ๊ธธ์ด์ ๋จ๋ฝ์ผ๋ก ๊ตฌ์ฑ | |
3. ์ฉ์ด ๋ฐ ์ค๋ช ๋ฐฉ์ | |
- ์ผ๋ฐ์ ์ผ๋ก ์ดํดํ๊ธฐ ์ฌ์ด ์ฉ์ด ์ ํ | |
- ํ์์ ๊ฐ๋จํ ์ค๋ช ์ถ๊ฐ | |
- ๊ฐ๊ด์ ์ธ ์ ๋ณด ์ ๊ณต์ ์ค์ | |
4. ํ ์คํธ ๊ตฌ์กฐํ | |
- ๋ถ๋ฆฟ ํฌ์ธํธ๋ ๋ฒํธ ๋งค๊ธฐ๊ธฐ๋ฅผ ํ์ฉํ์ฌ ์ ๋ณด ๊ตฌ์กฐํ | |
- ์ค์ํ ์ ๋ณด๋ ๊ตต์ ๊ธ์จ๋ ๊ธฐ์ธ์๊ผด๋ก ๊ฐ์กฐ | |
5. ๋ ์ ์ํธ์์ฉ | |
- ์ ์ ํ ๋ ์์ ์๊ฐ์ ๋ฌป๋ ์ง๋ฌธ ํฌํจ | |
- ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๋ ํค์๋ ์ ์ | |
6. ๋ง๋ฌด๋ฆฌ | |
- ์ฃผ์ ๋ด์ฉ ๊ฐ๋จํ ์์ฝ | |
- ์ถ๊ฐ ์ ๋ณด์ ๋ํ ์๋ด ์ ๊ณต | |
์ฃผ์์ฌํญ: ๋๋ฌด ๋ฑ๋ฑํ๊ฑฐ๋ ์ง๋ฃจํ์ง ์๋๋ก ๊ท ํ ์ ์ง | |
์์: | |
"์ต๊ทผ ํ๊ฒฝ ๋ฌธ์ ๊ฐ ๋๋๋๋ฉด์ '์ ๋ก ์จ์ด์คํธ' ๋ผ์ดํ์คํ์ผ์ ๋ํ ๊ด์ฌ์ด ๋์์ง๊ณ ์์ต๋๋ค. ์ ๋ก ์จ์ด์คํธ๋ ์ผ์์ํ์์ ๋ฐ์ํ๋ ์ฐ๋ ๊ธฐ๋ฅผ ์ต์ํํ๋ ์ํ ๋ฐฉ์์ ๋งํฉ๋๋ค. ์ด ๊ธ์์๋ ์ ๋ก ์จ์ด์คํธ์ ๊ฐ๋ , ์ค์ฒ ๋ฐฉ๋ฒ, ๊ทธ๋ฆฌ๊ณ ๊ทธ ํจ๊ณผ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ์ ๋ก ์จ์ด์คํธ์ ์ ์๋ถํฐ ์ดํด๋ณด๋ฉด... | |
""", | |
"์ ๋ฌธ์ ์ธ": """ | |
#์ ๋ฌธ์ ์ธ ๋ธ๋ก๊ทธ ํฌ์คํ ์คํ์ผ ๊ฐ์ด๋ | |
1. ํค๊ณผ ๊ตฌ์กฐ | |
- ๊ณต์์ ์ด๊ณ ํ์ ์ ์ธ ํค ์ฌ์ฉํ๋ ์ ์ ํ ์กด๋๋ง ์ฌ์ฉ | |
- ๊ฐ๊ด์ ์ด๊ณ ๋ถ์์ ์ธ ์ ๊ทผ ์ ์ง | |
- ๋ช ํํ ์๋ก , ๋ณธ๋ก , ๊ฒฐ๋ก ๊ตฌ์กฐ | |
- ์ฒด๊ณ์ ์ธ ๋ ผ์ ์ ๊ฐ | |
- ์ธ๋ถ ์น์ ์ ์ํ ๋ช ํํ ์์ ๋ชฉ ์ฌ์ฉ | |
2. ๋ด์ฉ ๊ตฌ์ฑ ๋ฐ ์ ๊ฐ | |
- ๋ณต์กํ ๊ฐ๋ ์ ์ ํํ ์ ๋ฌํ ์ ์๋ ๋ฌธ์ฅ ๊ตฌ์กฐ ์ฌ์ฉ | |
- ๋ ผ๋ฆฌ์ ์ฐ๊ฒฐ์ ์ํ ์ ํ์ด ํ์ฉ | |
- ํด๋น ๋ถ์ผ์ ์ ๋ฌธ ์ฉ์ด ์ ๊ทน ํ์ฉ (ํ์์ ๊ฐ๋ตํ ์ค๋ช ์ ๊ณต) | |
- ์ฌ์ธต์ ์ธ ๋ถ์๊ณผ ๋นํ์ ์ฌ๊ณ ์ ๊ฐ | |
- ๋ค์ํ ๊ด์ ์ ์ ๋ฐ ๋น๊ต | |
3. ๋ฐ์ดํฐ ๋ฐ ๊ทผ๊ฑฐ ํ์ฉ | |
- ํต๊ณ, ์ฐ๊ตฌ ๊ฒฐ๊ณผ, ์ ๋ฌธ๊ฐ ์๊ฒฌ ๋ฑ ์ ๋ขฐํ ์ ์๋ ์ถ์ฒ ์ธ์ฉ | |
- ํ์์ ๊ฐ์ฃผ๋ ์ฐธ๊ณ ๋ฌธํ ๋ชฉ๋ก ํฌํจ | |
- ์์น ๋ฐ์ดํฐ๋ ํ ์คํธ๋ก ๋ช ํํ ์ค๋ช | |
4. ํ ์คํธ ๊ตฌ์กฐํ | |
- ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์กฐํ๊ธฐ ์ํด ๋ฒํธ ๋งค๊ธฐ๊ธฐ ์ฌ์ฉ | |
- ํต์ฌ ๊ฐ๋ ์ด๋ ์ฉ์ด๋ ๊ธฐ์ธ์๊ผด๋ก ๊ฐ์กฐ | |
- ๊ธด ์ธ์ฉ๋ฌธ์ ๋ค์ฌ์ฐ๊ธฐ๋ก ๊ตฌ๋ถ | |
5. ๋ง๋ฌด๋ฆฌ | |
- ํต์ฌ ๋ ผ์ ์ฌ๊ฐ์กฐ | |
- ํฅํ ์ฐ๊ตฌ ๋ฐฉํฅ์ด๋ ์ค๋ฌด์ ํจ์ ์ ์ | |
์ฃผ์์ฌํญ: ์ ๋ฌธ์ฑ์ ์ ์งํ๋, ์์ ํ ์ดํดํ๊ธฐ ์ด๋ ค์ด ์์ค์ ์ง์ | |
์์: | |
"๋ณธ ์ฐ๊ตฌ์์๋ ์ธ๊ณต์ง๋ฅ(AI)์ ์ค๋ฆฌ์ ํจ์์ ๋ํด ๊ณ ์ฐฐํ๋ค. ํนํ, ์์จ์ฃผํ ์๋์ฐจ์ ์์ฌ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ์์ ๋ฐ์ํ ์ ์๋ ์ค๋ฆฌ์ ๋๋ ๋ง์ ์ด์ ์ ๋ง์ถ๋ค. Bonnefon et al. (2016)์ ์ฐ๊ตฌ์ ๋ฐ๋ฅด๋ฉด, ์์จ์ฃผํ ์ฐจ๋์ ์๊ณ ๋ฆฌ์ฆ์ด ์ง๋ฉดํ ์ ์๋ ์ค๋ฆฌ์ ์ ํ์ ๋ณต์ก์ฑ์ด ์ง์ ๋ ๋ฐ ์๋ค. ๋ณธ๊ณ ์์๋ ์ด๋ฌํ ์ค๋ฆฌ์ ๋๋ ๋ง๋ฅผ ์ธ ๊ฐ์ง ์ฃผ์ ๊ด์ ์์ ๋ถ์ํ๋ค: 1) ๊ณต๋ฆฌ์ฃผ์์ ์ ๊ทผ, 2) ์๋ฌด๋ก ์ ์ ๊ทผ, 3) ๋ ์ค๋ฆฌ์ ์ ๊ทผ. ๊ฐ ์ ๊ทผ๋ฒ์ ์ฅ๋จ์ ์ ๋น๊ต ๋ถ์ํ๊ณ , ์ด๋ฅผ ๋ฐํ์ผ๋ก ์์จ์ฃผํ ์ฐจ๋์ ์ค๋ฆฌ์ ์์ฌ๊ฒฐ์ ํ๋ ์์ํฌ๋ฅผ ์ ์ํ๊ณ ์ ํ๋ค... | |
""" | |
} | |
return prompts.get(style, "ํฌ์คํ ์คํ์ผ ํ๋กฌํํธ") | |
# ํฌ์คํ ์คํ์ผ ์ค๋ช ํจ์ | |
def get_style_description(style): | |
descriptions = { | |
"์น๊ทผํ": "๋ ์์ ๊ฐ๊น์ด ์น๊ตฌ์ฒ๋ผ ๋ํํ๋ ๋ฏํ ์น๊ทผํ ์คํ์ผ์ ๋๋ค.", | |
"์ผ๋ฐ": "์ผ๋ฐ์ ์ด๊ณ ์ค๋ฆฝ์ ์ธ ํค์ผ๋ก ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ์คํ์ผ์ ๋๋ค.", | |
"์ ๋ฌธ์ ์ธ": "์ ๋ฌธ๊ฐ์ ์๊ฐ์์ ๊น์ด ์๋ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ ์คํ์ผ์ ๋๋ค." | |
} | |
return descriptions.get(style, "ํฌ์คํ ์คํ์ผ์ ์ ํํ์ธ์.") | |
# ํ๋กฌํํธ ์ ๋ฐ์ดํธ ํจ์ | |
def update_prompts_and_description(category, style): | |
blog_post_prompt = get_blog_post_prompt(category) | |
style_prompt = get_style_prompt(style) | |
style_description = get_style_description(style) | |
return blog_post_prompt, style_prompt, style_description | |
def format_filename(text): | |
text = re.sub(r'[^\w\s-]', '', text) | |
return text[:50].strip() | |
def extract_first_recommended_title(blog_post): | |
section_match = re.search(r'(?:#+\s*)?์ถ์ฒ\s*์ ๋ชฉ:?\s*\n([\s\S]*?)(?=\n(?:#+|$)|$)', blog_post, re.IGNORECASE) | |
if section_match: | |
section_content = section_match.group(1) | |
title_match = re.search(r'(?:^|\n)\s*(?:\d+\.|-|\*|\โข)?\s*(.*?)(?=\n|$)', section_content) | |
if title_match: | |
title = title_match.group(1).strip() | |
print(f"Extracted title: {title}") | |
return title | |
print("No title found") | |
return "๋ธ๋ก๊ทธ_๊ธ" | |
class PDF(FPDF): | |
def __init__(self): | |
super().__init__() | |
self.add_font("NanumGothic", "", "NanumGothic.ttf") | |
self.add_font("NanumGothicBold", "", "NanumGothicBold.ttf") | |
self.add_font("NanumGothicExtraBold", "", "NanumGothicExtraBold.ttf") | |
self.add_font("NanumGothicLight", "", "NanumGothicLight.ttf") | |
def header(self): | |
# ํค๋๋ฅผ ๋น์๋ก๋๋ค | |
pass | |
def footer(self): | |
self.set_y(-15) | |
self.set_font('NanumGothicLight', '', 8) | |
self.cell(0, 10, f'Page {self.page_no()}', 0, new_x=XPos.RIGHT, new_y=YPos.TOP, align='C') | |
def save_to_pdf(summary, blog_post, file_type): | |
pdf = PDF() | |
pdf.set_auto_page_break(auto=True, margin=15) | |
pdf.add_page() | |
pdf.set_font("NanumGothicExtraBold", size=16) | |
pdf.cell(0, 10, "์์ฝ", new_x=XPos.LMARGIN, new_y=YPos.NEXT, align='C') | |
pdf.ln(5) | |
pdf.set_font("NanumGothic", size=11) | |
pdf.multi_cell(0, 6, summary) | |
pdf.add_page() | |
pdf.set_font("NanumGothicExtraBold", size=16) | |
pdf.cell(0, 10, "๋ธ๋ก๊ทธ ๊ธ", new_x=XPos.LMARGIN, new_y=YPos.NEXT, align='C') | |
pdf.ln(5) | |
lines = blog_post.split('\n') | |
for line in lines: | |
if line.strip() == '': | |
pdf.ln(3) # ๋น ์ค์ ์์ ๊ฐ๊ฒฉ๋ง ์ถ๊ฐ | |
elif line.startswith('#'): # ์ ๋ชฉ์ผ๋ก ๊ฐ์ฃผ | |
pdf.set_font("NanumGothicBold", size=14) | |
pdf.multi_cell(0, 8, line.lstrip('#').strip()) | |
pdf.ln(2) | |
elif line.startswith('##'): # ๋ถ์ ๋ชฉ์ผ๋ก ๊ฐ์ฃผ | |
pdf.set_font("NanumGothicBold", size=12) | |
pdf.multi_cell(0, 7, line.lstrip('#').strip()) | |
pdf.ln(2) | |
else: | |
pdf.set_font("NanumGothic", size=11) | |
pdf.multi_cell(0, 6, line.strip()) | |
pdf.ln(1) | |
title = extract_first_recommended_title(blog_post) | |
today_date = datetime.now().strftime("%Y%m%d") | |
filename = f"{today_date}_{format_filename(title)}.pdf" | |
print(f"Saving PDF as: {filename}") | |
pdf.output(filename) | |
return filename | |
# Gradio ์ธํฐํ์ด์ค์ฉ PDF ์ ์ฅ ํจ์ | |
def save_content_to_pdf(summary, blog_post): | |
filename = save_to_pdf(summary, blog_post, "๋ธ๋ก๊ทธ") | |
return filename | |
# Gradio ์ธํฐํ์ด์ค ๊ตฌ์ฑ | |
title = "์ ํ๋ธ๋ก ๋ธ๋ก๊ทธ ๊ธ ์์ฑํ๊ธฐ" | |
with gr.Blocks() as demo: | |
gr.Markdown(f"# {title}") | |
# 1๋จ๊ณ: ์นดํ ๊ณ ๋ฆฌ ์ ํ | |
gr.Markdown("### 1๋จ๊ณ: ํฌ์คํ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ง์ ํด์ฃผ์ธ์", elem_id="step-title") | |
category = gr.Radio(choices=["์ผ๋ฐํ","์ ๋ณด์ฑ", "1๊ฐ ์ํ ์ถ์ฒํ", "ํ๋ ์ด์ ํ"], label="ํฌ์คํ ์นดํ ๊ณ ๋ฆฌ", value="์ผ๋ฐํ") | |
# ๊ตฌ๋ถ์ ์ถ๊ฐ | |
gr.Markdown("---\n\n") | |
# 2๋จ๊ณ: ํฌ์คํ ์คํ์ผ ์ ํ | |
gr.Markdown("### 2๋จ๊ณ: ํฌ์คํ ์คํ์ผ์ ์ ํํด์ฃผ์ธ์", elem_id="step-title") | |
style = gr.Radio(choices=["์น๊ทผํ", "์ผ๋ฐ", "์ ๋ฌธ์ ์ธ"], label="ํฌ์คํ ์คํ์ผ", value="์น๊ทผํ") | |
style_description = gr.Markdown(f"{get_style_description('์น๊ทผํ')}", elem_id="style-description") | |
# ๊ตฌ๋ถ์ ์ถ๊ฐ | |
gr.Markdown("---\n\n") | |
# 3๋จ๊ณ: ์ ํ๋ธ ๋งํฌ๋ฅผ ์ ๋ ฅํ์ธ์ | |
gr.Markdown("### 3๋จ๊ณ: ์ ํ๋ธ ๋งํฌ๋ฅผ ์ ๋ ฅํ์ธ์", elem_id="step-title") | |
with gr.Row(): | |
youtube_url1 = gr.Textbox(label="YouTube URL 1", placeholder="์ฒซ ๋ฒ์งธ ์ ํ๋ธ ๋งํฌ๋ฅผ ์ ๋ ฅํ์ธ์") | |
youtube_url2 = gr.Textbox(label="YouTube URL 2", placeholder="๋ ๋ฒ์งธ ์ ํ๋ธ ๋งํฌ๋ฅผ ์ ๋ ฅํ์ธ์") | |
youtube_url3 = gr.Textbox(label="YouTube URL 3", placeholder="์ธ ๋ฒ์งธ ์ ํ๋ธ ๋งํฌ๋ฅผ ์ ๋ ฅํ์ธ์") | |
# ์จ๊ฒจ์ง ํ ์คํธ๋ฐ์ค (์ฌ์ฉ์์๊ฒ ๋ณด์ด์ง ์์) | |
combined_urls = gr.Textbox(visible=False) | |
transcript_output = gr.Textbox(label="์ ํ๋ธ ํธ๋์คํฌ๋ฆฝํธ", lines=10) | |
# ์ ํ๋ธ ํธ๋์คํฌ๋ฆฝํธ ๊ฐ์ ธ์ค๊ธฐ ํจ์ | |
def combine_and_get_transcripts(url1, url2, url3): | |
urls = [url for url in [url1, url2, url3] if url.strip()] | |
combined = ",".join(urls) | |
all_transcripts = [] | |
for url in urls: | |
transcript = get_transcript(url.strip()) | |
all_transcripts.append(transcript) | |
return combined, "\n\n---\n\n".join(all_transcripts) | |
# ์ ๋ ฅ ๋ณ๊ฒฝ ์ ํธ๋์คํฌ๋ฆฝํธ ์ ๋ฐ์ดํธ | |
for url_input in [youtube_url1, youtube_url2, youtube_url3]: | |
url_input.change( | |
fn=combine_and_get_transcripts, | |
inputs=[youtube_url1, youtube_url2, youtube_url3], | |
outputs=[combined_urls, transcript_output] | |
) | |
# ์์ฝ๊ธ ์์ฑํ๊ธฐ ๊ธฐ๋ฅ ์ถ๊ฐ | |
gr.Markdown("### ์์ฝ๊ธ ์์ฑํ๊ธฐ", elem_id="step-title") | |
with gr.Accordion("์์ฝ๊ธ ์ค์ ", open=False): | |
summary_system_message = gr.Textbox( | |
label="์์ฝ๊ธ ์์คํ ๋ฉ์์ง", | |
value=""" | |
#์ ํ๋ธ ๋๋ณธ ์์ฝ ๊ท์น | |
1. ๋ชฉ์ | |
๊ฐ. ์ ๋ ฅ๋ ์ฌ๋ฌ ์ ํ๋ธ ์์ ๋๋ณธ์ ๋ถ์ํ์ฌ ํ๋์ ์ข ํฉ์ ์ธ ์์ฝ ๋ณด๊ณ ์ ์์ฑ | |
๋. ํต์ฌ ๋ด์ฉ์ ์ฝ๊ฒ ํ์ ํ ์ ์๋๋ก ๊ตฌ์กฐํ๋ ํ์์ผ๋ก ์ ์ | |
๋ค. ๊ณตํต ์ฃผ์ ๋ ์ฐ๊ด์ฑ ์๋ ๋ด์ฉ์ ์ค์ฌ์ผ๋ก ํตํฉ๋ ์ธ์ฌ์ดํธ ์ ๊ณต | |
2. ๊ตฌ์กฐ ๋ฐ ํ์ | |
๊ฐ. ์ ์ฒด ๊ตฌ์กฐ | |
- ์ฃผ์ ํฌ์ธํธ๋ฅผ ๋ ผ๋ฆฌ์ ์น์ ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์์ฑ | |
- ๊ฐ ์น์ ์ ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ์์ ๋ชฉ ๋ถ์ฌ | |
๋. ๋งํฌ๋ค์ด ํ์ ์ฌ์ฉ | |
- ์น์ ๊ตฌ๋ถ์ ์ํด '1.', '2.' ๋ฑ์ ์ซ์ ์ฌ์ฉ | |
- ํ์ ํญ๋ชฉ์ '๊ฐ.', '๋.' ๋ฑ์ ํ๊ธ ๋ฌธ์ ์ฌ์ฉ | |
๋ค. ๊ฐ๋ ์ฑ ํฅ์ | |
- ๊ฐ๊ฒฐํ ๋ฌธ์ฅ๊ณผ ๋จ๋ฝ ์ฌ์ฉํ๋ ๋ณธ๋ฌธ์ ๋ด์ฉ์ ์์ธํ ์์ฑ | |
- ํ์์ ๋ถ๋ฆฟ ํฌ์ธํธ ํ์ฉํ์ฌ ์ ๋ณด ๋์ด | |
3. ๋ด์ฉ ๊ตฌ์ฑ | |
๊ฐ. ์ข ํฉ ๊ฐ์ | |
- ๋ถ์ํ ์์๋ค์ ๊ณตํต ์ฃผ์ ๋๋ ํต์ฌ ๋ฉ์์ง ์๊ฐ | |
- ๊ฐ ์์์ ์ฃผ์ ํฌ์ธํธ๋ฅผ ๊ฐ๋ตํ ๋์ด | |
๋. ์ฃผ์ ๋ณ ํตํฉ ๋ถ์ | |
- ๊ณตํต ์ฃผ์ ๋ ์ฐ๊ด์ฑ ์๋ ๋ด์ฉ์ ์ค์ฌ์ผ๋ก ์น์ ๊ตฌ์ฑ | |
- ๊ฐ ์์์ ๊ด์ ์ด๋ ์ ๋ณด๋ฅผ ๋น๊ต/๋์กฐํ๋ฉฐ ์ข ํฉ | |
๋ค. ๋ ํนํ ์ธ์ฌ์ดํธ | |
- ๊ฐ ์์์์ ์ ์๋ ๊ณ ์ ํ ๊ด์ ์ด๋ ์ ๋ณด ๊ฐ์กฐ | |
๋ผ. ๋ฐ์ดํฐ ๋ฐ ์์ ํตํฉ | |
- ์ฌ๋ฌ ์์์์ ์ ์๋ ๋ฐ์ดํฐ๋ ์์๋ฅผ ์ข ํฉํ์ฌ ์ ์ | |
๋ง. ์ข ํฉ ๊ฒฐ๋ก | |
- ๋ถ์๋ ๋ชจ๋ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์ ์ฒด์ ์ธ ๊ฒฐ๋ก ๋์ถ | |
4. ์ฉ์ด ๋ฐ ํํ | |
๊ฐ. '์ ํ๋ฒ', 'YouTuber' ๋ฑ์ ํํ์ '์ ์์' ๋๋ '์งํ์' ๊ฐ์ ๋ค๋ฅธ ํํ์ผ๋ก ๋์ฒด | |
๋. ์ฑ๋๋ช , ์ ์์ ์ค๋ช ๋ฑ ๊ฐ์ธ ์ ๋ณด ์ ์ธ | |
๋ค. ์ ํ๋ธ ํน์ ์ฉ์ด(์: '๊ตฌ๋ ', '์ข์์', '์๋ฆผ', '๋ค์ ์์' ๋ฑ) ์ฌ์ฉ ๊ธ์ง | |
5. ๊ฐ๊ด์ฑ ๋ฐ ์ ํ์ฑ | |
๊ฐ. ๋๋ณธ ๋ด์ฉ์ ๊ฐ๊ด์ ์ผ๋ก ์์ฝ, ๊ฐ์ธ์ ํด์ ์ต์ํ | |
๋. ์ฌ์ค ๊ด๊ณ๋ ๋ฐ์ดํฐ๋ ๊ฐ๋ฅํ ์๋ฌธ ๊ทธ๋๋ก ์ ๋ฌ | |
6. ๋ง๋ฌด๋ฆฌ | |
๊ฐ. ์์ฝ์ ๋์ ์ ์ฒด ๋ด์ฉ์ ํ ๋ฌธ์ฅ์ผ๋ก ์ ๋ฆฌ | |
๋. ํ์์ ์ถ๊ฐ ์ ๋ณด๋ ๊ด๋ จ ์ฃผ์ ์ ์ | |
""", | |
lines=15, | |
visible=True | |
) | |
summary_max_tokens = gr.Slider(label="Max Tokens", minimum=1000, maximum=7000, value=5000, step=1000) | |
summary_temperature = gr.Slider(label="Temperature", minimum=0.1, maximum=1.0, value=0.7, step=0.05) | |
summary_top_p = gr.Slider(label="Top P", minimum=0.1, maximum=1.0, value=0.95, step=0.05) | |
summarize_btn = gr.Button("์์ฝ๊ธ ์์ฑํ๊ธฐ") | |
summary_output = gr.Textbox(label="์์ฝ๋ ๊ธ", lines=10) | |
def generate_summary(transcript, system_message, max_tokens, temperature, top_p): | |
summary = summarize_transcript(transcript, system_message, max_tokens, temperature, top_p) | |
return summary | |
summarize_btn.click( | |
fn=generate_summary, | |
inputs=[transcript_output, summary_system_message, summary_max_tokens, summary_temperature, summary_top_p], | |
outputs=[summary_output] | |
) | |
# ๊ตฌ๋ถ์ ์ถ๊ฐ | |
gr.Markdown("---\n\n") | |
# 4๋จ๊ณ: ๊ธ ์์ฑํ๊ธฐ | |
gr.Markdown("### 4๋จ๊ณ: ๊ธ ์์ฑํ๊ธฐ", elem_id="step-title") | |
gr.HTML("<span style='color: grey;'>[์์ฑํ๊ธฐ ๋ฒํผ์ ์ ํํด์ฃผ์ธ์]</span>") | |
with gr.Accordion("๋ธ๋ก๊ทธ ๊ธ ์ค์ ", open=False): | |
blog_system_message = gr.Textbox(label="์นดํ ๊ณ ๋ฆฌ ํ๋กฌํํธ", value=get_blog_post_prompt("์ผ๋ฐํ"), lines=20, visible=True) | |
style_prompt_hidden = gr.Textbox(label="์คํ์ผ ํ๋กฌํํธ", value=get_style_prompt("์น๊ทผํ"), lines=10, visible=False) # ์ด๊ธฐ๊ฐ ์ค์ | |
blog_max_tokens = gr.Slider(label="Max Tokens", minimum=1000, maximum=12000, value=8000, step=1000) | |
blog_temperature = gr.Slider(label="Temperature", minimum=0.1, maximum=1.0, value=0.8, step=0.1) | |
blog_top_p = gr.Slider(label="Top P", minimum=0.1, maximum=1.0, value=0.95, step=0.05) | |
generate_btn = gr.Button("๋ธ๋ก๊ทธ ๊ธ ์์ฑํ๊ธฐ") | |
blog_output = gr.Textbox(label="์์ฑ๋ ๋ธ๋ก๊ทธ ๊ธ", lines=30) | |
def generate_blog_content(category, style, transcripts, category_prompt, style_prompt, max_tokens, temperature, top_p): | |
blog_post = generate_blog_post(category, style, transcripts, category_prompt, style_prompt, max_tokens, temperature, top_p) | |
return blog_post | |
generate_btn.click( | |
fn=generate_blog_content, | |
inputs=[category, style, transcript_output, blog_system_message, style_prompt_hidden, blog_max_tokens, blog_temperature, blog_top_p], | |
outputs=[blog_output] | |
) | |
# PDF ์ ์ฅ ๋ฒํผ ์ถ๊ฐ | |
save_pdf_btn = gr.Button("PDF๋ก ์ ์ฅํ๊ธฐ") | |
pdf_output = gr.File(label="์์ฑ๋ PDF ํ์ผ") | |
save_pdf_btn.click( | |
fn=save_content_to_pdf, | |
inputs=[summary_output, blog_output], | |
outputs=[pdf_output] | |
) | |
# ์นดํ ๊ณ ๋ฆฌ์ ์คํ์ผ์ด ๋ณ๊ฒฝ๋ ๋ ํ๋กฌํํธ ์ ๋ฐ์ดํธ | |
def update_prompts_and_description(category, style): | |
blog_post_prompt = get_blog_post_prompt(category) | |
style_prompt = get_style_prompt(style) | |
style_description = get_style_description(style) | |
return blog_post_prompt, style_prompt, style_description | |
category.change(fn=update_prompts_and_description, inputs=[category, style], outputs=[blog_system_message, style_prompt_hidden, style_description]) | |
style.change(fn=update_prompts_and_description, inputs=[category, style], outputs=[blog_system_message, style_prompt_hidden, style_description]) | |
demo.launch() | |
# CSS ์คํ์ผ ์ถ๊ฐ | |
gr.HTML(""" | |
<style> | |
#step-title { | |
font-size: 1.7em; | |
font-weight: bold; | |
} | |
#style-description { | |
font-size: 1.2em; | |
} | |
</style> | |
""") |