Kims12 commited on
Commit
f7cddc9
·
verified ·
1 Parent(s): 11a35a9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -5
app.py CHANGED
@@ -36,14 +36,74 @@ def respond_chatgpt_qna(
36
  def merge_and_call(tone: str, ref1: str, ref2: str, ref3: str):
37
  """
38
  사용자가 선택한 말투와 참조글들을 하나의 프롬프트로 합쳐 gpt-4o-mini 모델에 전달하는 함수.
 
39
  """
40
- # 간단한 프롬프트 생성
41
- question = f"말투: {tone}\n참조글 1: {ref1}\n참조글 2: {ref2}\n참조글 3: {ref3}"
42
- # 고급 설정은 코드 내부에 기본값으로 지정 (UI에는 노출되지 않음)
43
- system_message = "아래의 참조글들을 참고하여 블로그 글을 생성하라."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  max_tokens = 2000
45
  temperature = 0.7
46
  top_p = 0.95
 
47
  return respond_chatgpt_qna(
48
  question=question,
49
  system_message=system_message,
@@ -55,7 +115,6 @@ def merge_and_call(tone: str, ref1: str, ref2: str, ref3: str):
55
  with gr.Blocks() as demo:
56
  gr.Markdown("# 블로그 생성기")
57
 
58
- # 입력 항목 구성
59
  tone_radio = gr.Radio(
60
  choices=["친근하게", "일반적인", "전문적인"],
61
  label="말투바꾸기",
 
36
  def merge_and_call(tone: str, ref1: str, ref2: str, ref3: str):
37
  """
38
  사용자가 선택한 말투와 참조글들을 하나의 프롬프트로 합쳐 gpt-4o-mini 모델에 전달하는 함수.
39
+ 각 말투에 따라 고유의 system_message(프롬프트)가 적용되며, 아래의 기본 프롬프트 규칙을 반드시 준수한다.
40
  """
41
+ # 기본 프롬프트 규칙 (모든 말투에 공통 적용)
42
+ base_prompt = (
43
+ "너는 가장 주목받는 마케터이며 블로그 마케팅 전문가이다. "
44
+ "특히 너는 '정보성(Informative)' 전문 블로그 마케팅 전문가로서, 정보 제공에 초점을 맞추어 작성해야 한다.\n"
45
+ "다음 텍스트 작성 규칙을 반드시 준수하라:\n"
46
+ "1. 소주제를 5개로 구분하여 2000자 이상 작성하라.\n"
47
+ "2. 전체 맥락을 이해하고 문장의 일관성을 유지하라.\n"
48
+ "3. 절대로 참고글을 한 문장 이상 그대로 출력하지 말라.\n"
49
+ "4. 주제와 상황에 맞는 적절한 어휘를 선택하라.\n"
50
+ "5. 한글 어휘의 난이도는 쉽게 작성하라.\n"
51
+ "6. 절대 문장의 끝에 '답니다'를 사용하지 말라.\n"
52
+ "정보성 블로그 작성 규칙:\n"
53
+ "1. 독자가 얻고자 하는 유용하고 흥미로운 정보를 제공하라.\n"
54
+ "2. 독자의 공감을 이끌어내고 궁금증을 해결하라.\n"
55
+ "3. 독자의 관심사를 충족시키라.\n"
56
+ "4. 독자에게 이득이 되는 정보를 제공하라.\n"
57
+ "제외 규칙:\n"
58
+ "1. 반드시 비속어 및 욕설은 제외하라.\n"
59
+ "2. 반드시 참고글의 링크(URL)는 제외하라.\n"
60
+ "3. '링크를 확인해주세요' 등의 문구는 제외하라.\n"
61
+ "4. 참고글에 있는 작성자, 화자, 유튜버, 기자의 이름, 애칭, 닉네임은 반드시 제외하라.\n"
62
+ "5. 문장의 끝부분에 어색한 표현(예: '예요', '답니다', '해요', '해주죠', '됐죠', '됐어요', '고요' 등)은 사용하지 말라."
63
+ )
64
+
65
+ # 말투별 추가 프롬프트 설정
66
+ if tone == "친근하게":
67
+ tone_prompt = (
68
+ "친근하게:\n"
69
+ "1. 톤과 어조: 대화하듯 편안하고 친근한 말투를 사용하라.\n"
70
+ "2. 문장 및 어투: 반드시 '해요체'로 작성하며, '습니다'체나 '~다'로 끝나지 않도록 하라. 구어체 표현(예: '~했어요', '~인 것 같아요')을 사용하라.\n"
71
+ "3. 용어 및 설명: 전문 용어 대신 쉬운 단어를 사용하고, 비유나 은유를 통해 복잡한 개념을 설명하라.\n"
72
+ "4. 독자와의 상호작용: 독자의 의견을 묻는 질문과 댓글을 유도하는 문구를 포함하라.\n"
73
+ "주의: 너무 가벼운 톤은 피하되 주제의 중요성을 해치지 말라."
74
+ )
75
+ elif tone == "일반적인":
76
+ tone_prompt = (
77
+ "일반적인:\n"
78
+ "1. 톤과 어조: 중립적이고 객관적인 톤을 유지하며, 적절한 존댓말(예: '~합니다', '~입니다')을 사용하라.\n"
79
+ "2. 내용 구조: 명확한 주제 제시와 논리적인 전개, 소제목 및 단락 구분을 활용하라.\n"
80
+ "3. 용어 및 설명: 이해하기 쉬운 용어와 간단한 설명을 사용하고, 객관적인 정보를 제공하라.\n"
81
+ "4. 독자 상호작용: 독자의 생각을 묻는 질문과 추가 정보를 제공하는 키워드를 포함하라.\n"
82
+ "5. 마무리: 주요 내용을 간략히 요약하고 추가 정보를 안내하라."
83
+ )
84
+ elif tone == "전문적인":
85
+ tone_prompt = (
86
+ "전문적인:\n"
87
+ "1. 톤과 구조: 공식적이고 학술적인 톤을 사용하며, 명확한 서론, 본론, 결론 구조로 체계적으로 전개하라.\n"
88
+ "2. 내용 구성: 복잡한 개념을 정확하게 전달할 수 있도록 전문 용어와 심층 분석을 활용하라.\n"
89
+ "3. 데이터 활용: 통계, 연구 결과, 전문가 의견 등을 인용하여 신뢰성을 높이라.\n"
90
+ "4. 텍스트 구조화: 번호 매기기, 기울임꼴, 들여쓰기를 활용하여 논리적 구조를 강조하라.\n"
91
+ "5. 마무리: 핵심 논점을 재강조하고 향후 연구나 실무적 함의를 제시하라."
92
+ )
93
+ else:
94
+ tone_prompt = "아래의 참조글들을 참고하여 블로그 글을 생성하라."
95
+
96
+ # 최종 system_message는 tone_prompt와 base_prompt를 결합하여 구성
97
+ system_message = tone_prompt + "\n" + base_prompt
98
+
99
+ # 프롬프트에 참조글 내용을 반영 (참고글은 직접 출력하지 않도록 주의)
100
+ question = f"참조글 1: {ref1}\n참조글 2: {ref2}\n참조글 3: {ref3}\n위 내용을 참고하여 주제와 상황에 맞는 블로그 글을 작성하라. 단, 참고글의 내용을 그대로 인용하지 말라."
101
+
102
+ # 고급 설정은 코드 내부 기본값으로 지정
103
  max_tokens = 2000
104
  temperature = 0.7
105
  top_p = 0.95
106
+
107
  return respond_chatgpt_qna(
108
  question=question,
109
  system_message=system_message,
 
115
  with gr.Blocks() as demo:
116
  gr.Markdown("# 블로그 생성기")
117
 
 
118
  tone_radio = gr.Radio(
119
  choices=["친근하게", "일반적인", "전문적인"],
120
  label="말투바꾸기",