Skip to content

๐Ÿค– ์ด์ง€-์Šคํ†ก์˜ ์ฃผ์‹ ๋„์šฐ๋ฏธ AI ์ฑ—๋ด‡ '์Šคํ† ๊ธฐ'์˜ Flask ์„œ๋ฒ„ ๐Ÿค–

Notifications You must be signed in to change notification settings

Tech-Ping/EASY_STOCK-RAG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

15 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ“ฐ TechPing-RAG

๐Ÿ“Œ ๊ฐœ์š”

์ด ํ”„๋กœ์ ํŠธ๋Š” ์ดํ™”์บก์Šคํ†คํ”„๋กœ์ ํŠธ '์ด์ง€-์Šคํ†ก'์˜ ์ธ์•ฑ ์„œ๋น„์Šคํ˜• ์ฑ—๋ด‡ ์„œ๋ฒ„๋กœ,
Flask ๊ธฐ๋ฐ˜์˜ ๐Ÿ’ธ ์ฃผ์‹ ๋‰ด์Šค ํฌ๋กค๋ง ๋ฐ AI ๊ธฐ๋ฐ˜ ๊ธˆ์œต ์ฑ—๋ด‡ ๐Ÿ’ธ์ž…๋‹ˆ๋‹ค.

  • Yahoo Finance API๋กœ tickers๋“ค์˜ 2๋…„๊ฐ„ ์ฃผ์‹ ์ •๋ณด ์ ‘๊ทผ
  • OpenAI GPT-4 Turbo๋ฅผ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ๊ธˆ์œต ์งˆ๋ฌธ์— ์นœ๊ทผํ•˜๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๋‹ต๋ณ€ ์ œ๊ณต
  • Selenium๊ณผ BeautifulSoup์„ ์ด์šฉํ•œ ๋„ค์ด๋ฒ„ ๊ธˆ์œต ๋‰ด์Šค ํฌ๋กค๋ง
  • Langchain ์›Œํฌํ”Œ๋กœ์šฐ๋กœ ๊ธˆ์œต ๋‰ด์Šค ์š”์•ฝ ๊ธฐ๋Šฅ ์ œ๊ณต
  • Pinecone์„ ํ™œ์šฉํ•œ ๋ฒกํ„ฐ DB ๊ตฌ์ถ•

๐Ÿ“Œ ๊ธฐ์ˆ  ์Šคํƒ

๊ตฌ๋ถ„ ๊ธฐ์ˆ  ์Šคํƒ
Backend Flask
AI Model OpenAI GPT-4 Turbo
Database Pinecone (Vector DB)
Web Scraping Selenium + BeautifulSoup
Summarization Langchain
Stock Data Yahoo Finance API

๐Ÿ“‚ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

๐Ÿ“ TechPing-AI-Server/
โ”‚โ”€โ”€ app.py                      # Flask API ์„œ๋ฒ„
โ”‚โ”€โ”€ news_crawler.py             # ๋„ค์ด๋ฒ„ ๊ธˆ์œต ๋‰ด์Šค ํฌ๋กค๋Ÿฌ (Selenium + BeautifulSoup)
โ”‚โ”€โ”€ openai_service.py           # OpenAI GPT-4 Turbo ์ฑ—๋ด‡ API
โ”‚โ”€โ”€ essential_package.txt       # ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ ํŒจํ‚ค์ง€ ๋ชฉ๋ก
โ”‚โ”€โ”€ .env                        # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ (API ํ‚ค ํฌํ•จ)

๐Ÿš€ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ“ˆ 1. ์ฃผ์‹ ์ •๋ณด ์กฐํšŒ API (/stock-info)

์š”์ฒญ ๋ฐฉ์‹: POST

{
  "company_name": "์‚ผ์„ฑ์ „์ž",
  "stock_field": "์ข…๊ฐ€",
  "date": "2024-02-01"
}

์‘๋‹ต ์˜ˆ์‹œ:

{
  "message": "2024๋…„ 2์›” 1์ผ, ์‚ผ์„ฑ์ „์ž์˜ ์ข…๊ฐ€๋Š” 70,000์›์ž…๋‹ˆ๋‹ค."
}

๐Ÿ’ฌ 2. AI ๊ธฐ๋ฐ˜ ๊ธˆ์œต ์งˆ๋ฌธ ์‘๋‹ต API (/ask)

์š”์ฒญ ๋ฐฉ์‹: POST

{
  "prompt": "PBR์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?"
}

์‘๋‹ต ์˜ˆ์‹œ:

{
  "response": "PBR์€ Price-to-Book Ratio์˜ ์•ฝ์ž๋กœ, ์ฃผ๊ฐ€๋ฅผ ์ฃผ๋‹น ์žฅ๋ถ€๊ฐ€์น˜๋กœ ๋‚˜๋ˆˆ ๊ฐ’์ž…๋‹ˆ๋‹ค."
}

๐Ÿ“ฐ 3. ์ฃผ์‹ ๋‰ด์Šค ํฌ๋กค๋ง API (/crawl-news)

์š”์ฒญ ๋ฐฉ์‹: GET

  • ticker๋ฅผ Query Parameter๋กœ ์ „๋‹ฌํ•˜๋ฉด ํ•ด๋‹น ์ข…๋ชฉ ๋‰ด์Šค๋งŒ ํฌ๋กค๋ง ๊ฐ€๋Šฅ
GET /crawl-news?ticker=์‚ผ์„ฑ์ „์ž

์‘๋‹ต ์˜ˆ์‹œ:

{
  "message": "๋‰ด์Šค ํฌ๋กค๋ง ์™„๋ฃŒ",
  "news": [
    {
      "title": "์‚ผ์„ฑ์ „์ž, ๋ฐ˜๋„์ฒด ์‹œ์žฅ์—์„œ์˜ ๋„์ „",
      "link": "https://n.news.naver.com/mnews/article/015/0005088180",
      "summary": "์‚ผ์„ฑ์ „์ž๋Š” AI ๋ฐ˜๋„์ฒด ๊ธฐ์ˆ  ๊ฒฝ์Ÿ์—์„œ ์ƒˆ๋กœ์šด ๋„์ „์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.",
      "date": "2024-02-01",
      "ticker": "์‚ผ์„ฑ์ „์ž"
    }
  ]
}

๐Ÿ”ง ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • (.env ํŒŒ์ผ)

OPENAI_API_KEY=sk-xxxxx
PINECONE_API_KEY=xxxxxx
PINECONE_ENV=us-east-1

๐Ÿ› ๏ธ ์‹คํ–‰ ๋ฐฉ๋ฒ•

1๏ธโƒฃ ํ•„์ˆ˜ ํŒจํ‚ค์ง€ ์„ค์น˜

pip install -r essential_package.txt

2๏ธโƒฃ Flask ์„œ๋ฒ„ ์‹คํ–‰

python app.py

3๏ธโƒฃ Swagger UI ์ ‘์† (API ๋ฌธ์„œํ™”)

์„œ๋ฒ„ ์‹คํ–‰ ํ›„, ๋ธŒ๋ผ์šฐ์ €์—์„œ http://127.0.0.1:5000/apidocs/์— ์ ‘์†


โœจ TODO (์ถ”๊ฐ€ ๊ฐœ๋ฐœ ๊ณ„ํš)

  • ์›”๋ณ„ ์‚ฌ์šฉ์ž ๋งˆ์ด ํˆฌ์ž ๋ฆฌํฌํŠธ ๋ถ„์„ ๊ธฐ๋Šฅ ์ œ๊ณต

๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

About

๐Ÿค– ์ด์ง€-์Šคํ†ก์˜ ์ฃผ์‹ ๋„์šฐ๋ฏธ AI ์ฑ—๋ด‡ '์Šคํ† ๊ธฐ'์˜ Flask ์„œ๋ฒ„ ๐Ÿค–

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •