주식 증권 api 연동 및 window pc AI 연동 기능 구현 시작
This commit is contained in:
52
stock-lab/app/analysis.py
Normal file
52
stock-lab/app/analysis.py
Normal file
@@ -0,0 +1,52 @@
|
||||
import os
|
||||
import requests
|
||||
import json
|
||||
|
||||
class AIAnalyst:
|
||||
"""Ollama API를 통한 주식 뉴스 분석"""
|
||||
|
||||
def __init__(self):
|
||||
# NAS 외부의 Windows PC IP 주소
|
||||
self.base_url = os.getenv("OLLAMA_URL", "http://host.docker.internal:11434")
|
||||
self.model = os.getenv("OLLAMA_MODEL", "llama3")
|
||||
|
||||
def _call_ollama(self, prompt: str) -> str:
|
||||
url = f"{self.base_url}/api/generate"
|
||||
payload = {
|
||||
"model": self.model,
|
||||
"prompt": prompt,
|
||||
"stream": False,
|
||||
"options": {
|
||||
"temperature": 0.2, # 분석용이므로 창의성 낮춤
|
||||
"num_ctx": 4096
|
||||
}
|
||||
}
|
||||
try:
|
||||
# 타임아웃 3분 (PC 사양 좋으므로 금방 될 것)
|
||||
resp = requests.post(url, json=payload, timeout=180)
|
||||
resp.raise_for_status()
|
||||
data = resp.json()
|
||||
return data.get("response", "").strip()
|
||||
except Exception as e:
|
||||
return f"Error analyzing: {str(e)}"
|
||||
|
||||
def analyze_market_summary(self, articles: list) -> str:
|
||||
"""뉴스 헤드라인들을 모아 시장 분위기 요약"""
|
||||
if not articles:
|
||||
return "분석할 뉴스가 없습니다."
|
||||
|
||||
# 최신 10개만 추려서 전달
|
||||
targets = articles[:10]
|
||||
titles = "\n".join([f"- {a.get('title')}" for a in targets])
|
||||
|
||||
prompt = f"""
|
||||
다음은 최근 한국 증시 주요 뉴스 헤드라인입니다:
|
||||
|
||||
{titles}
|
||||
|
||||
위 뉴스들을 바탕으로 현재 시장의 주요 이슈와 분위기를 3줄로 요약해주고,
|
||||
전반적인 투자 심리가 '긍정/부정/중립' 중 어디에 가까운지 판단해주세요.
|
||||
한국어로 답변해주세요.
|
||||
"""
|
||||
|
||||
return self._call_ollama(prompt)
|
||||
Reference in New Issue
Block a user