Kims12 commited on
Commit
4f7a095
ยท
verified ยท
1 Parent(s): 80a65f4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +68 -7
app.py CHANGED
@@ -7,7 +7,7 @@ import openai
7
  # OpenAI API ํด๋ผ์ด์–ธํŠธ ์„ค์ •
8
  openai.api_key = os.getenv("OPENAI_API_KEY")
9
 
10
- def call_api(content, system_message, max_tokens=150, temperature=0.7, top_p=0.9):
11
  response = openai.ChatCompletion.create(
12
  model="gpt-4o-mini",
13
  messages=[
@@ -66,13 +66,74 @@ def process_and_analyze_reviews(file):
66
  positive_reviews = get_positive_reviews(df)
67
  negative_reviews = get_negative_reviews(df)
68
 
69
- # LLM ๋ถ„์„์„ ์œ„ํ•œ ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€
70
- system_message = "๋‹น์‹ ์€ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์ฃผ์š” ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๋Š” ์ „๋ฌธ๊ฐ€์ž…๋‹ˆ๋‹ค."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
  # ๊ธ์ • ๋ฆฌ๋ทฐ ๋ถ„์„
73
  positive_analysis = call_api(
74
  content=positive_reviews,
75
- system_message=system_message,
76
  max_tokens=2000,
77
  temperature=0.5,
78
  top_p=0.9
@@ -81,7 +142,7 @@ def process_and_analyze_reviews(file):
81
  # ๋ถ€์ • ๋ฆฌ๋ทฐ ๋ถ„์„
82
  negative_analysis = call_api(
83
  content=negative_reviews,
84
- system_message=system_message,
85
  max_tokens=2000,
86
  temperature=0.5,
87
  top_p=0.9
@@ -101,13 +162,13 @@ def create_interface():
101
  positive_reviews_output = gr.Textbox(label="๊ธ์ •์ ์ธ ์ฃผ์š” ๋ฆฌ๋ทฐ", interactive=False, lines=20)
102
 
103
  gr.Markdown("### ๊ธ์ • ๋ฆฌ๋ทฐ ๋ถ„์„ ๊ฒฐ๊ณผ")
104
- positive_analysis_output = gr.Textbox(label="๊ธ์ • ๋ฆฌ๋ทฐ ๋ถ„์„", interactive=False, lines=10)
105
 
106
  gr.Markdown("### ๋ถ€์ •์ ์ธ ์ฃผ์š” ๋ฆฌ๋ทฐ (์ตœ๋Œ€ 30๊ฐœ)")
107
  negative_reviews_output = gr.Textbox(label="๋ถ€์ •์ ์ธ ์ฃผ์š” ๋ฆฌ๋ทฐ", interactive=False, lines=30)
108
 
109
  gr.Markdown("### ๋ถ€์ • ๋ฆฌ๋ทฐ ๋ถ„์„ ๊ฒฐ๊ณผ")
110
- negative_analysis_output = gr.Textbox(label="๋ถ€์ • ๋ฆฌ๋ทฐ ๋ถ„์„", interactive=False, lines=10)
111
 
112
  analyze_button.click(
113
  fn=process_and_analyze_reviews,
 
7
  # OpenAI API ํด๋ผ์ด์–ธํŠธ ์„ค์ •
8
  openai.api_key = os.getenv("OPENAI_API_KEY")
9
 
10
+ def call_api(content, system_message, max_tokens=2000, temperature=0.7, top_p=0.9):
11
  response = openai.ChatCompletion.create(
12
  model="gpt-4o-mini",
13
  messages=[
 
66
  positive_reviews = get_positive_reviews(df)
67
  negative_reviews = get_negative_reviews(df)
68
 
69
+ # ๊ธ์ • ๋ฆฌ๋ทฐ ๋ถ„์„์„ ์œ„ํ•œ ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€
70
+ positive_prompt = """[์ค‘์š” ๊ทœ์น™]
71
+ 1. ๋ฐ˜๋“œ์‹œ ํ•œ๊ธ€(ํ•œ๊ตญ์–ด)๋กœ ์ถœ๋ ฅํ•˜๋ผ.
72
+ 2. ๋„ˆ๋Š” ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€์ด๋‹ค.
73
+ 3. ๊ณ ๊ฐ์˜ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ธ์ •์ ์ธ ์˜๊ฒฌ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋ถ„์„ํ•˜๋ผ.
74
+ 4. ๋ฐ˜๋“œ์‹œ ์ œ๊ณต๋œ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ์—์„œ๋งŒ ๋ถ„์„ํ•˜๋ผ.
75
+ 5. ๋„ˆ์˜ ์ƒ๊ฐ์„ ํฌํ•จํ•˜์ง€ ๋ง ๊ฒƒ.
76
+ [๋ถ„์„ ์กฐ๊ฑด]
77
+ 1. ์ด 20๊ฐœ์˜ ๋ฆฌ๋ทฐ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
78
+ 2. ๊ฐ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ์˜ ๋‘˜์งธ์ค„ ๋ถ€ํ„ฐ์˜ ์‹ค์ œ ๊ณ ๊ฐ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ˜์˜ํ•˜๋ผ.
79
+ 3. ๋ฐ˜๋“œ์‹œ ๊ธ์ •์ ์ธ ์˜๊ฒฌ๋งŒ์„ ๋ถ„์„ํ•˜๋ผ. ๋ถ€์ •์ ์ธ ์˜๊ฒฌ์€ ์ œ์™ธํ•˜๋ผ.
80
+ 4. ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ์˜ ๋ถ€๋ถ„, ๊ฐ์„ฑ์ ์ธ ๋ถ€๋ถ„, ์‹ค์ œ ์‚ฌ์šฉ ์ธก๋ฉด์˜ ๋ถ€๋ถ„, ๋ฐฐ์†ก์˜ ๋ถ€๋ถ„, ํƒ€๊ฒŸ๋ณ„ ๋ถ€๋ถ„์˜ ๊ด€์ ์œผ๋กœ ๋ถ„์„ํ•˜๋ผ.
81
+ 5. 4๋ฒˆ์˜ ์กฐ๊ฑด์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” ๊ธ์ •์ ์ธ ๋ฆฌ๋ทฐ๋ฅผ ๋ณ„๋„๋กœ ์ถœ๋ ฅํ•˜๋ผ.
82
+ 6. ๋งˆ์ผ€ํŒ…์ ์ธ ์š”์†Œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ๊ฐ์˜ ์‹ค์ œ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ˜์˜ํ•˜๋ผ.
83
+ [์ถœ๋ ฅ ํ˜•ํƒœ ์กฐ๊ฑด]
84
+ 1. ๊ฐ๊ฐ์˜ ์ œ๋ชฉ ์•ž์— '๐Ÿ“'์ด๋ชจ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋ผ,'#', '##'์€ ์ถœ๋ ฅํ•˜์ง€ ๋ง๊ฒƒ.
85
+ 2. ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ข…ํ•ฉ ์˜๊ฒฌ์„ ์ž‘์„ฑํ•˜๋ผ, "๐Ÿ†์ข…ํ•ฉ์˜๊ฒฌ"์˜ ์ œ๋ชฉํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.
86
+ [์ข…ํ•ฉ์˜๊ฒฌ์˜ ์ถœ๋ ฅ ์กฐ๊ฑด ์‹œ์ž‘]
87
+ ('์ข…ํ•ฉ์˜๊ฒฌ'์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ์ด ์ถœ๋ ฅ ์กฐ๊ฑด์„ ๋ฐ˜์˜ํ•˜์ง€ ๋ง ๊ฒƒ.
88
+ - ํ•ญ๋ชฉ๋ณ„ ์ œ๋ชฉ์„ ์ œ์™ธํ•˜๋ผ.
89
+ - ์ข…ํ•ฉ์˜๊ฒฌ์—๋Š” ํ•ญ๋ชฉ๋ณ„ ์ œ๋ชฉ์„ ์ œ์™ธํ•˜๊ณ  ์„œ์ˆ ์‹ ๋ฌธ์žฅ์œผ๋กœ ์ž‘์„ฑํ•˜๋ผ.
90
+ - ๋งค์ถœ์„ ๊ทน๋Œ€ํ™” ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ๊ฐ์˜ ์‹ค์ œ ๋ฆฌ๋ทฐ ํฌ์ธํŠธ๋ฅผ ์ œ์‹œํ•˜๋ผ.
91
+ [SWOT๋ถ„์„ ์กฐ๊ฑด]
92
+ 1. '์ข…ํ•ฉ์˜๊ฒฌ' ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ SWOT๋ถ„์„ ์˜๊ฒฌ์„ ์ถœ๋ ฅํ•˜๋ผ.
93
+ 2. SWOT๋ถ„์„ ์ค‘ '๊ฐ•์ '์˜๊ฒฌ๊ณผ '๊ธฐํšŒ'์˜ ์˜๊ฒฌ์„ ์ถœ๋ ฅํ•˜๋ผ.
94
+ 3. ๋ฐ˜๋“œ์‹œ '์ข…ํ•ฉ์˜๊ฒฌ'์˜ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ•˜๋ผ.
95
+ 4. ์ œ๋ชฉ์€ '๐Ÿน ๊ฐ•์ ', '๐Ÿน ๊ธฐํšŒ'์œผ๋กœ ์ถœ๋ ฅํ•˜๋ผ.
96
+ [์ข…ํ•ฉ์˜๊ฒฌ์˜ ์ถœ๋ ฅ ์กฐ๊ฑด ๋]
97
+ 3. ์‹ค์ œ ๊ณ ๊ฐ์˜ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ์—์„œ ์‚ฌ์šฉ๋œ ๋‹จ์–ด๋ฅผ ํฌํ•จํ•˜๋ผ.
98
+ 4. ๋„ˆ์˜ ์ƒ๊ฐ์„ ์ž„์˜๋กœ ๋„ฃ์ง€ ๋ง ๊ฒƒ.
99
+ """
100
+
101
+ # ๋ถ€์ • ๋ฆฌ๋ทฐ ๋ถ„์„์„ ์œ„ํ•œ ์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€
102
+ negative_prompt = """[์ค‘์š” ๊ทœ์น™]
103
+ 1. ๋ฐ˜๋“œ์‹œ ํ•œ๊ธ€(ํ•œ๊ตญ์–ด)๋กœ ์ถœ๋ ฅํ•˜๋ผ.
104
+ 2. ๋„ˆ๋Š” ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋น…๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€์ด๋‹ค.
105
+ 3. ๊ณ ๊ฐ์˜ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ถ€์ •์ ์ธ ์˜๊ฒฌ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๋ถ„์„ํ•˜๋ผ.
106
+ 4. ๋ฐ˜๋“œ์‹œ ์ œ๊ณต๋œ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ์—์„œ๋งŒ ๋ถ„์„ํ•˜๋ผ.
107
+ 5. ๋„ˆ์˜ ์ƒ๊ฐ์„ ํฌํ•จํ•˜์ง€ ๋ง ๊ฒƒ.
108
+ [๋ถ„์„ ์กฐ๊ฑด]
109
+ 1. ์ด 30๊ฐœ์˜ ๋ฆฌ๋ทฐ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
110
+ 2. ๊ฐ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ์˜ ๋‘˜์งธ์ค„ ๋ถ€ํ„ฐ์˜ ์‹ค์ œ ๊ณ ๊ฐ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ˜์˜ํ•˜๋ผ.
111
+ 3. ๋ถ€์ •์ ์ธ ์˜๊ฒฌ๋งŒ์„ ๋ถ„์„ํ•˜๋ผ.
112
+ 4. ๊ธฐ๋Šฅ๊ณผ ์„ฑ๋Šฅ์˜ ๋ถ€๋ถ„, ๊ฐ์„ฑ์ ์ธ ๋ถ€๋ถ„, ์‹ค์ œ ์‚ฌ์šฉ ์ธก๋ฉด์˜ ๋ถ€๋ถ„, ๋ฐฐ์†ก์˜ ๋ถ€๋ถ„, ๊ณ ๊ฐ์˜ ๋ถ„๋…ธ ๋ถ€๋ถ„์˜ ๊ด€์ ์œผ๋กœ ๋ถ„์„ํ•˜๋ผ.
113
+ 5. 4๋ฒˆ์˜ ์กฐ๊ฑด์— ํฌํ•จ๋˜์ง€ ์•Š๋Š” ๋ถ€์ •์ ์ธ ๋ฆฌ๋ทฐ๋ฅผ ๋ณ„๋„๋กœ ์ถœ๋ ฅํ•˜๋ผ.
114
+ 6. ๋ถ€์ •์ ์ธ ๋ฆฌ๋ทฐ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ '๊ฐœ์„ ํ•  ์ '์„ ์ถœ๋ ฅํ•˜๋ผ.
115
+ [์ถœ๋ ฅ ํ˜•ํƒœ ์กฐ๊ฑด]
116
+ 1. ๊ฐ๊ฐ์˜ ์ œ๋ชฉ ์•ž์— '๐Ÿ“'์ด๋ชจ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋ผ,'#', '##'์€ ์ถœ๋ ฅํ•˜์ง€ ๋ง๊ฒƒ.
117
+ 2. ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— '๊ฐœ์„ ํ•  ์ '์„ ์ถœ๋ ฅํ•˜๋ผ("๐Ÿ“ข๊ฐœ์„ ํ•  ์ "์˜ ์ œ๋ชฉํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.)
118
+ [๊ฐœ์„ ํ•  ์ ์˜ ์ถœ๋ ฅ ์กฐ๊ฑด ์‹œ์ž‘]
119
+ ('๊ฐœ์„ ํ•  ์ '์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๋ถ€๋ถ„์— ์ด ์ถœ๋ ฅ ์กฐ๊ฑด์„ ๋ฐ˜์˜ํ•˜์ง€ ๋ง ๊ฒƒ.
120
+ - ํ•ญ๋ชฉ๋ณ„ ์ œ๋ชฉ์„ ์ œ์™ธํ•˜๋ผ.
121
+ - ์ฃผ์š” ํ•ญ๋ชฉ๋ณ„๋กœ ๊ฐœ์„ ํ•  ์ ์„ ์ถœ๋ ฅํ•˜๋ผ.
122
+ - ์ „๋ฌธ์ ์ด๊ณ , ๋ถ„์„์ ์ด๋ฉฐ, ์ œ์•ˆํ•˜๋Š” ํ˜•ํƒœ์˜ ๊ณต์†ํ•œ ์–ดํˆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.(๋‹จ๋‹ตํ˜• ํ‘œํ˜„ ๊ธˆ์ง€)
123
+ [SWOT๋ถ„์„ ์กฐ๊ฑด]
124
+ 1. '์ข…ํ•ฉ์˜๊ฒฌ' ๋‹ค์Œ ๋‚ด์šฉ์œผ๋กœ SWOT๋ถ„์„ ์˜๊ฒฌ์„ ์ถœ๋ ฅํ•˜๋ผ.
125
+ 2. SWOT๋ถ„์„ ์ค‘ '์•ฝ์ '์˜๊ฒฌ๊ณผ '์œ„ํ˜‘'์˜ ์˜๊ฒฌ์„ ์ถœ๋ ฅํ•˜๋ผ.
126
+ 3. ๋ฐ˜๋“œ์‹œ '๊ฐœ์„ ํ•  ์ '์˜ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ•˜๋ผ.
127
+ 4. ์ œ๋ชฉ์€ '๐Ÿ’‰ ์•ฝ์ ', '๐Ÿ’‰ ์œ„ํ˜‘'์œผ๋กœ ์ถœ๋ ฅํ•˜๋ผ.
128
+ [๊ฐœ์„ ํ•  ์ ์˜ ์ถœ๋ ฅ ์กฐ๊ฑด ๋]
129
+ 3. ์‹ค์ œ ๊ณ ๊ฐ์˜ ๋ฆฌ๋ทฐ ๋ฐ์ดํ„ฐ์—์„œ ์‚ฌ์šฉ๋œ ๋‹จ์–ด๋ฅผ ํฌํ•จํ•˜๋ผ.
130
+ 4. ๋„ˆ์˜ ์ƒ๊ฐ์„ ์ž„์˜๋กœ ๋„ฃ์ง€ ๋ง ๊ฒƒ.
131
+ """
132
 
133
  # ๊ธ์ • ๋ฆฌ๋ทฐ ๋ถ„์„
134
  positive_analysis = call_api(
135
  content=positive_reviews,
136
+ system_message=positive_prompt,
137
  max_tokens=2000,
138
  temperature=0.5,
139
  top_p=0.9
 
142
  # ๋ถ€์ • ๋ฆฌ๋ทฐ ๋ถ„์„
143
  negative_analysis = call_api(
144
  content=negative_reviews,
145
+ system_message=negative_prompt,
146
  max_tokens=2000,
147
  temperature=0.5,
148
  top_p=0.9
 
162
  positive_reviews_output = gr.Textbox(label="๊ธ์ •์ ์ธ ์ฃผ์š” ๋ฆฌ๋ทฐ", interactive=False, lines=20)
163
 
164
  gr.Markdown("### ๊ธ์ • ๋ฆฌ๋ทฐ ๋ถ„์„ ๊ฒฐ๊ณผ")
165
+ positive_analysis_output = gr.Textbox(label="๊ธ์ • ๋ฆฌ๋ทฐ ๋ถ„์„", interactive=False, lines=50)
166
 
167
  gr.Markdown("### ๋ถ€์ •์ ์ธ ์ฃผ์š” ๋ฆฌ๋ทฐ (์ตœ๋Œ€ 30๊ฐœ)")
168
  negative_reviews_output = gr.Textbox(label="๋ถ€์ •์ ์ธ ์ฃผ์š” ๋ฆฌ๋ทฐ", interactive=False, lines=30)
169
 
170
  gr.Markdown("### ๋ถ€์ • ๋ฆฌ๋ทฐ ๋ถ„์„ ๊ฒฐ๊ณผ")
171
+ negative_analysis_output = gr.Textbox(label="๋ถ€์ • ๋ฆฌ๋ทฐ ๋ถ„์„", interactive=False, lines=50)
172
 
173
  analyze_button.click(
174
  fn=process_and_analyze_reviews,