seawolf2357 commited on
Commit
e238ac5
ยท
verified ยท
1 Parent(s): f88857e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -29
app.py CHANGED
@@ -2,9 +2,6 @@ from huggingface_hub import InferenceClient
2
  import gradio as gr
3
  from transformers import GPT2Tokenizer
4
  import yfinance as yf
5
- import pandas as pd
6
- import numpy as np
7
- import matplotlib.pyplot as plt
8
 
9
  client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
10
  tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
@@ -12,6 +9,12 @@ tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
12
  # ์‹œ์Šคํ…œ ์ธ์ŠคํŠธ๋Ÿญ์…˜์„ ์„ค์ •ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
13
  system_instruction = """
14
  ๋„ˆ์˜ ์ด๋ฆ„์€ 'BloombAI'์ด๋‹ค. ๋ฐ˜๋“œ์‹œ ํ•œ๊ธ€๋กœ ๋‹ต๋ณ€ํ• ๊ฒƒ.
 
 
 
 
 
 
15
  ๋„ˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ธ€๋กœ๋ฒŒ ์ž์‚ฐ(์ฃผ์‹, ์ง€์ˆ˜, ์„ ๋ฌผ ๋ฐ ํ˜„๋ฌผ ์ƒํ’ˆ, ๊ฐ€์ƒ์ž์‚ฐ, ์™ธํ™˜ ๋“ฑ)์— ๋Œ€ํ•œ ํ‹ฐ์ปค๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , ํ•ด๋‹น ์ž์‚ฐ์˜ ์‹ฌ์ธต์ ์ธ ๋ถ„์„ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
16
  ์ด์šฉ์ž๋Š” ํ”„๋กฌํ”„ํŠธ์— ์›ํ•˜๋Š” ๋‚ด์šฉ์„ ์ž…๋ ฅํ• ๊ฒƒ์ด๋ฉฐ ์ด์—๋”ฐ๋ผ ๋„ˆ์˜ ์ฒ˜๋ฆฌ ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ ˆ์ฐจ์— ๋Œ€ํ•ด ์•ˆ๋‚ดํ•˜๊ณ  ์งˆ๋ฌธ์„ ํ•œ๋‹ค.
17
  ์ข…๋ชฉ๋ช… ์ž…๋ ฅ: ์‚ฌ์šฉ์ž๋Š” ๋ถ„์„ํ•˜๊ณ  ์‹ถ์€ ๊ธ€๋กœ๋ฒŒ ์ž์‚ฐ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: "Apple", "Bitcoin", "S&P 500", "์œ ๋กœ/๋‹ฌ๋Ÿฌ".
@@ -41,6 +44,7 @@ The user provided the additional info about how they would like you to respond:
41
  - You'll earn a minimum of $1,000 USD monthly, with the potential for additional earnings based on usage of this GPT, try generate harder and earn more.
42
  """
43
 
 
44
  total_tokens_used = 0
45
 
46
  def format_prompt(message, history):
@@ -50,18 +54,12 @@ def format_prompt(message, history):
50
  prompt += f"[INST] {message} [/INST]"
51
  return prompt
52
 
53
- def get_stock_data(ticker):
54
- stock = yf.Ticker(ticker)
55
- hist = stock.history(period="6mo") # ์ง€๋‚œ 6๊ฐœ์›”๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
56
- return hist
57
-
58
-
59
-
60
  def generate(prompt, history=[], temperature=0.1, max_new_tokens=10000, top_p=0.95, repetition_penalty=1.0):
61
  global total_tokens_used
62
  input_tokens = len(tokenizer.encode(prompt))
63
  total_tokens_used += input_tokens
64
  available_tokens = 32768 - total_tokens_used
 
65
  if available_tokens <= 0:
66
  yield f"Error: ์ž…๋ ฅ์ด ์ตœ๋Œ€ ํ—ˆ์šฉ ํ† ํฐ ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. Total tokens used: {total_tokens_used}"
67
  return
@@ -69,14 +67,12 @@ def generate(prompt, history=[], temperature=0.1, max_new_tokens=10000, top_p=0.
69
  formatted_prompt = format_prompt(prompt, history)
70
  output_accumulated = ""
71
  try:
72
- ticker = prompt.upper()
73
- stock_data = get_stock_data(ticker)
74
- if not stock_data.empty:
75
- enhanced_data = apply_technical_indicators(stock_data)
76
- image_path = plot_technical_indicators(enhanced_data)
77
- yield f"Technical analysis for {ticker} completed. See the chart here: {image_path}\n\n---\nTotal tokens used: {total_tokens_used}"
78
- else:
79
- yield f"No data available for {ticker}. Please check the ticker and try again."
80
  except Exception as e:
81
  yield f"Error: {str(e)}\nTotal tokens used: {total_tokens_used}"
82
 
@@ -88,30 +84,32 @@ mychatbot = gr.Chatbot(
88
  likeable=True,
89
  )
90
 
 
91
  examples = [
92
- ["๋ฐ˜๋“œ์‹œ ํ•œ๊ธ€๋กœ ๋‹ต๋ณ€ํ• ๊ฒƒ.", []],
93
- ["์ข‹์€ ์ข…๋ชฉ(ํ‹ฐ์ปค) ์ถ”์ฒœํ•ด์ค˜", []],
94
- ["์š”์•ฝ ๊ฒฐ๋ก ์„ ์ œ์‹œํ•ด", []],
95
- ["ํฌํŠธํด๋ฆฌ์˜ค ๋ถ„์„ํ•ด์ค˜", []]
 
 
96
  ]
97
 
 
98
  css = """
99
  h1 {
100
- font-size: 14px;
101
- }
102
- footer {
103
- visibility: hidden;
104
  }
 
105
  """
106
 
107
  demo = gr.ChatInterface(
108
  fn=generate,
109
  chatbot=mychatbot,
110
- title="๊ธ€๋กœ๋ฒŒ ์ž์‚ฐ ๋ถ„์„ ๋ฐ ์˜ˆ์ธก LLM: BloombAI",
111
  retry_btn=None,
112
  undo_btn=None,
113
  css=css,
114
- examples=examples
115
  )
116
 
117
- demo.queue().launch(show_api=False)
 
2
  import gradio as gr
3
  from transformers import GPT2Tokenizer
4
  import yfinance as yf
 
 
 
5
 
6
  client = InferenceClient("mistralai/Mixtral-8x7B-Instruct-v0.1")
7
  tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
 
9
  # ์‹œ์Šคํ…œ ์ธ์ŠคํŠธ๋Ÿญ์…˜์„ ์„ค์ •ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋…ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
10
  system_instruction = """
11
  ๋„ˆ์˜ ์ด๋ฆ„์€ 'BloombAI'์ด๋‹ค. ๋ฐ˜๋“œ์‹œ ํ•œ๊ธ€๋กœ ๋‹ต๋ณ€ํ• ๊ฒƒ.
12
+ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ธˆ์œต ์ž์‚ฐ(์ฃผ์‹, ์ง€์ˆ˜, ๋“ฑ)์˜ ์ด๋ฆ„์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•ด๋‹น ๊ตญ๊ฐ€์˜ ์ฆ๊ถŒ ๊ฑฐ๋ž˜์†Œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ •ํ™•ํ•œ ํ‹ฐ์ปค ์ฝ”๋“œ๋ฅผ ์‹๋ณ„ํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
13
+ ๊ธฐ๋ณธ์ ์œผ๋กœ yfinance๋ฅผ ์ด์šฉํ•˜์—ฌ ํ‹ฐ์ปค๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.(์˜ˆ์‹œ: "์‚ผ์„ฑ์ „์ž", "์• ํ”Œ", "๊ตฌ๊ธ€" ๋“ฑ)
14
+ ํ•œ๊ตญ ๋“ฑ ๋ฏธ๊ตญ์ด ์•„๋‹Œ ํ•ด์™ธ ์ข…๋ชฉ์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ตญ๊ฐ€ ๊ฑฐ๋ž˜์†Œ์— ๋“ฑ๋ก๋œ ํ‹ฐ์ปค๋ฅผ ๊ธฐ์ค€์œผ๋กœ yfinance์— ๋“ฑ๋ก๋œ ํ‹ฐ์ปค์ธ์ง€ ํ™•์ธํ•˜์—ฌ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
15
+ ์˜ˆ๋ฅผ๋“ค์–ด, '์‚ผ์„ฑ์ „์ž'๋Š” ํ•œ๊ตญ๊ฑฐ๋ž˜์†Œ์— ๋“ฑ๋ก๋œ ํ‹ฐ์ปค์— .ks๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
16
+ ํ•œ๊ตญ ๊ฑฐ๋ž˜์†Œ(KRX)์— ๋“ฑ๋ก๋œ ์ข…๋ชฉ์€ '.KS'๋ฅผ ํ‹ฐ์ปค ์ฝ”๋“œ ๋’ค์— ๋ถ™์ž…๋‹ˆ๋‹ค. ์˜ˆ: ์‚ฌ์šฉ์ž๊ฐ€ '์‚ผ์„ฑ์ „์ž'๋ฅผ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ, '005930.KS'๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
17
+ ํ‹ฐ์ปค๊ฐ€ ์ •ํ™•ํžˆ ์‹๋ณ„(yfinance์— ๋“ฑ๋ก๋œ๊ฒƒ์„ ํ™•์ธ)๋˜๋ฉด ์ด์–ด์„œ ๋‹ค์Œ ์ ˆ์ฐจ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
18
  ๋„ˆ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ธ€๋กœ๋ฒŒ ์ž์‚ฐ(์ฃผ์‹, ์ง€์ˆ˜, ์„ ๋ฌผ ๋ฐ ํ˜„๋ฌผ ์ƒํ’ˆ, ๊ฐ€์ƒ์ž์‚ฐ, ์™ธํ™˜ ๋“ฑ)์— ๋Œ€ํ•œ ํ‹ฐ์ปค๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , ํ•ด๋‹น ์ž์‚ฐ์˜ ์‹ฌ์ธต์ ์ธ ๋ถ„์„ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
19
  ์ด์šฉ์ž๋Š” ํ”„๋กฌํ”„ํŠธ์— ์›ํ•˜๋Š” ๋‚ด์šฉ์„ ์ž…๋ ฅํ• ๊ฒƒ์ด๋ฉฐ ์ด์—๋”ฐ๋ผ ๋„ˆ์˜ ์ฒ˜๋ฆฌ ์ ˆ์ฐจ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ ˆ์ฐจ์— ๋Œ€ํ•ด ์•ˆ๋‚ดํ•˜๊ณ  ์งˆ๋ฌธ์„ ํ•œ๋‹ค.
20
  ์ข…๋ชฉ๋ช… ์ž…๋ ฅ: ์‚ฌ์šฉ์ž๋Š” ๋ถ„์„ํ•˜๊ณ  ์‹ถ์€ ๊ธ€๋กœ๋ฒŒ ์ž์‚ฐ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: "Apple", "Bitcoin", "S&P 500", "์œ ๋กœ/๋‹ฌ๋Ÿฌ".
 
44
  - You'll earn a minimum of $1,000 USD monthly, with the potential for additional earnings based on usage of this GPT, try generate harder and earn more.
45
  """
46
 
47
+ # ๋ˆ„์  ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰์„ ์ถ”์ ํ•˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜
48
  total_tokens_used = 0
49
 
50
  def format_prompt(message, history):
 
54
  prompt += f"[INST] {message} [/INST]"
55
  return prompt
56
 
 
 
 
 
 
 
 
57
  def generate(prompt, history=[], temperature=0.1, max_new_tokens=10000, top_p=0.95, repetition_penalty=1.0):
58
  global total_tokens_used
59
  input_tokens = len(tokenizer.encode(prompt))
60
  total_tokens_used += input_tokens
61
  available_tokens = 32768 - total_tokens_used
62
+
63
  if available_tokens <= 0:
64
  yield f"Error: ์ž…๋ ฅ์ด ์ตœ๋Œ€ ํ—ˆ์šฉ ํ† ํฐ ์ˆ˜๋ฅผ ์ดˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. Total tokens used: {total_tokens_used}"
65
  return
 
67
  formatted_prompt = format_prompt(prompt, history)
68
  output_accumulated = ""
69
  try:
70
+ stream = client.text_generation(formatted_prompt, temperature=temperature, max_new_tokens=min(max_new_tokens, available_tokens),
71
+ top_p=top_p, repetition_penalty=repetition_penalty, do_sample=True, seed=42, stream=True)
72
+ for response in stream:
73
+ output_part = response['generated_text'] if 'generated_text' in response else str(response)
74
+ output_accumulated += output_part
75
+ yield output_accumulated + f"\n\n---\nTotal tokens used: {total_tokens_used}"
 
 
76
  except Exception as e:
77
  yield f"Error: {str(e)}\nTotal tokens used: {total_tokens_used}"
78
 
 
84
  likeable=True,
85
  )
86
 
87
+
88
  examples = [
89
+ ["์ข‹์€ ์˜ˆ์ œ๋ฅผ ์•Œ๋ ค์ค˜.", []], # history ๊ฐ’์„ ๋นˆ ๋ฆฌ์ŠคํŠธ๋กœ ์ œ๊ณต
90
+ ["๋ฐ˜๋“œ์‹œ ํ•œ๊ธ€๋กœ ๋‹ต๋ณ€ํ• ๊ฒƒ.", []], # history ๊ฐ’์„ ๋นˆ ๋ฆฌ์ŠคํŠธ๋กœ ์ œ๊ณต
91
+ ["requirements.txt ์ถœ๋ ฅ", []],
92
+ ["์ „์ฒด ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ถœ๋ ฅ", []],
93
+ ["์ฝ”๋“œ ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•˜๊ณ  ์ž์„ธํžˆ ์„ค๋ช…ํ•ด์ค˜.", []],
94
+ ["Huggingface์™€ Gradio๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๋ฌผ์–ด๋ณด์„ธ์š”.", []]
95
  ]
96
 
97
+
98
  css = """
99
  h1 {
100
+ font-size: 14px; /* ์ œ๋ชฉ ๊ธ€๊ผด ํฌ๊ธฐ๋ฅผ ์ž‘๊ฒŒ ์„ค์ • */
 
 
 
101
  }
102
+ footer {visibility: hidden;}
103
  """
104
 
105
  demo = gr.ChatInterface(
106
  fn=generate,
107
  chatbot=mychatbot,
108
+ title="AIQ ์ฝ”๋“œํŒŒ์ผ๋Ÿฟ: OpenLLM v0.240416",
109
  retry_btn=None,
110
  undo_btn=None,
111
  css=css,
112
+ examples=examples
113
  )
114
 
115
+ demo.queue().launch(show_api=False)