Commit
c17ae48
Β·
verified Β·
1 Parent(s): 467f517

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -12
app.py CHANGED
@@ -64,39 +64,37 @@ plt.legend(prop=font_prop)
64
  # 이후 μ½”λ“œ μ‹€ν–‰
65
  import requests
66
  import gradio as gr
67
- import yfinance as yf
68
- import matplotlib.pyplot as plt
69
  import io
70
  from PIL import Image
71
  from datetime import datetime, timedelta
72
  from openai import OpenAI
73
 
74
  # Perplexity AI API μ„€μ •
75
- API_KEY = "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" # 여기에 Perplexity AI API ν‚€λ₯Ό μž…λ ₯ν•˜μ„Έμš”.
76
 
77
  # λ‰΄μŠ€ μš”μ•½μ„ κ°€μ Έμ˜€λŠ” ν•¨μˆ˜
78
  def get_real_news_summary(company, date):
79
  # OpenAI ν΄λΌμ΄μ–ΈνŠΈ μ΄ˆκΈ°ν™”
80
  client = OpenAI(api_key=API_KEY, base_url="https://api.perplexity.ai")
81
-
82
  # API μš”μ²­μ„ μœ„ν•œ λ©”μ‹œμ§€ ꡬ성 - ν•œκ΅­μ–΄λ‘œλ§Œ 응닡을 받도둝 μ§€μ‹œ
83
  messages = [
84
  {"role": "system", "content": "You are a helpful assistant that summarizes stock news strictly in Korean."},
85
  {"role": "user", "content": f"Summarize the latest stock news for {company} on {date} in Korean. If there's no specific news for that date, provide the most recent relevant information in Korean."}
86
  ]
87
-
88
  try:
89
  # API μš”μ²­
90
  response = client.chat.completions.create(
91
  model="llama-3.1-sonar-large-128k-online",
92
  messages=messages
93
  )
94
-
95
  # μ‘λ‹΅μ—μ„œ μš”μ•½ μΆ”μΆœ
96
  summary = response.choices[0].message.content
97
 
98
  # ν•œκΈ€, 숫자, 곡백, 특수 기호만 λ‚¨κΈ°λŠ” μ •κ·œ ν‘œν˜„μ‹
99
- korean_only_summary = re.sub(r'[^\w\s#.,!%()-]', '', summary)
100
 
101
  # ##둜 μ‹œμž‘ν•˜λŠ” 뢀뢄을 **으둜 κ°μ‹Έμ„œ Bold 처리
102
  formatted_summary = re.sub(r'##\s*(.+)', r'**\1**', korean_only_summary)
@@ -109,6 +107,13 @@ def get_real_news_summary(company, date):
109
  def handle_click(input_value, date_clicked):
110
  return get_real_news_summary(input_value, date_clicked)
111
 
 
 
 
 
 
 
 
112
  # μ’…λͺ©λͺ…κ³Ό 티컀λ₯Ό λ§€ν•‘ν•˜λŠ” λ”•μ…”λ„ˆλ¦¬ ν™•μž₯
113
  name_to_ticker = {
114
  "μ‚Όμ„±μ „μž": "005930.KS",
@@ -188,11 +193,11 @@ with gr.Blocks() as demo:
188
  submit_btn = gr.Button("Submit")
189
 
190
  # 예제 (이전 λ ˆμ΄μ•„μ›ƒμœΌλ‘œ 볡원)
191
- examples = [["SKλ°”μ΄μ˜€νŒœ"],
192
- ["λ‚˜μŠ€λ‹₯ μ‹œμ΄ 1μœ„"],
193
- ["λ‚˜μŠ€λ‹₯ μ œμ•½μ£Ό μ‹œμ΄ 1μœ„"],
194
- ["λ‚˜μŠ€λ‹₯ λ°”μ΄μ˜€ν… μ‹œμ΄ 1μœ„"],
195
- ["μ½”μŠ€ν”Ό μ‹œμ΄ 1μœ„"],
196
  ["μ½”μŠ€λ‹₯ μ‹œμ΄ 1μœ„"]]
197
  gr.Examples(examples=examples, inputs=[input_value])
198
 
 
64
  # 이후 μ½”λ“œ μ‹€ν–‰
65
  import requests
66
  import gradio as gr
 
 
67
  import io
68
  from PIL import Image
69
  from datetime import datetime, timedelta
70
  from openai import OpenAI
71
 
72
  # Perplexity AI API μ„€μ •
73
+ API_KEY = "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" # 여기에 Perplexity AI API ν‚€λ₯Ό μž…λ ₯ν•˜μ„Έμš”.
74
 
75
  # λ‰΄μŠ€ μš”μ•½μ„ κ°€μ Έμ˜€λŠ” ν•¨μˆ˜
76
  def get_real_news_summary(company, date):
77
  # OpenAI ν΄λΌμ΄μ–ΈνŠΈ μ΄ˆκΈ°ν™”
78
  client = OpenAI(api_key=API_KEY, base_url="https://api.perplexity.ai")
79
+
80
  # API μš”μ²­μ„ μœ„ν•œ λ©”μ‹œμ§€ ꡬ성 - ν•œκ΅­μ–΄λ‘œλ§Œ 응닡을 받도둝 μ§€μ‹œ
81
  messages = [
82
  {"role": "system", "content": "You are a helpful assistant that summarizes stock news strictly in Korean."},
83
  {"role": "user", "content": f"Summarize the latest stock news for {company} on {date} in Korean. If there's no specific news for that date, provide the most recent relevant information in Korean."}
84
  ]
85
+
86
  try:
87
  # API μš”μ²­
88
  response = client.chat.completions.create(
89
  model="llama-3.1-sonar-large-128k-online",
90
  messages=messages
91
  )
92
+
93
  # μ‘λ‹΅μ—μ„œ μš”μ•½ μΆ”μΆœ
94
  summary = response.choices[0].message.content
95
 
96
  # ν•œκΈ€, 숫자, 곡백, 특수 기호만 λ‚¨κΈ°λŠ” μ •κ·œ ν‘œν˜„μ‹
97
+ korean_only_summary = re.sub(r'[^\w\s#.,!%()\-\[\]]', '', summary)
98
 
99
  # ##둜 μ‹œμž‘ν•˜λŠ” 뢀뢄을 **으둜 κ°μ‹Έμ„œ Bold 처리
100
  formatted_summary = re.sub(r'##\s*(.+)', r'**\1**', korean_only_summary)
 
107
  def handle_click(input_value, date_clicked):
108
  return get_real_news_summary(input_value, date_clicked)
109
 
110
+ # Gradioμ—μ„œ μ‚¬μš©ν•  ν•¨μˆ˜ (λ‰΄μŠ€ μš”μ•½ 포함)
111
+ def update_news(input_value, selected_date):
112
+ if selected_date == "" or selected_date is None:
113
+ return "λ‚ μ§œλ₯Ό μ„ νƒν•΄μ£Όμ„Έμš”."
114
+ else:
115
+ return handle_click(input_value, selected_date)
116
+
117
  # μ’…λͺ©λͺ…κ³Ό 티컀λ₯Ό λ§€ν•‘ν•˜λŠ” λ”•μ…”λ„ˆλ¦¬ ν™•μž₯
118
  name_to_ticker = {
119
  "μ‚Όμ„±μ „μž": "005930.KS",
 
193
  submit_btn = gr.Button("Submit")
194
 
195
  # 예제 (이전 λ ˆμ΄μ•„μ›ƒμœΌλ‘œ 볡원)
196
+ examples = [["SKλ°”μ΄μ˜€νŒœ"],
197
+ ["λ‚˜μŠ€λ‹₯ μ‹œμ΄ 1μœ„"],
198
+ ["λ‚˜μŠ€λ‹₯ μ œμ•½μ£Ό μ‹œμ΄ 1μœ„"],
199
+ ["λ‚˜μŠ€λ‹₯ λ°”μ΄μ˜€ν… μ‹œμ΄ 1μœ„"],
200
+ ["μ½”μŠ€ν”Ό μ‹œμ΄ 1μœ„"],
201
  ["μ½”μŠ€λ‹₯ μ‹œμ΄ 1μœ„"]]
202
  gr.Examples(examples=examples, inputs=[input_value])
203