Spaces:
Build error
Build error
Update app.py
Browse files
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=
|
| 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 |
-
#
|
| 70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
|
| 72 |
# ๊ธ์ ๋ฆฌ๋ทฐ ๋ถ์
|
| 73 |
positive_analysis = call_api(
|
| 74 |
content=positive_reviews,
|
| 75 |
-
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=
|
| 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=
|
| 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=
|
| 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,
|