feat(ai_news): include summary + pub_date in LLM prompt
This commit is contained in:
@@ -27,6 +27,25 @@ def _clamp(x: float, lo: float = -10.0, hi: float = 10.0) -> float:
|
||||
return max(lo, min(hi, x))
|
||||
|
||||
|
||||
def _format_news_block(news: List[Dict[str, Any]]) -> str:
|
||||
"""news dict 리스트 → prompt 에 들어가는 텍스트 블록.
|
||||
|
||||
summary 가 있으면 title 다음 줄에 indent 해서 포함 (최대 200자).
|
||||
pub_date 가 있으면 title 앞에 표시.
|
||||
"""
|
||||
lines: List[str] = []
|
||||
for n in news:
|
||||
date = (n.get("pub_date") or "").strip()
|
||||
title = (n.get("title") or "").strip()
|
||||
summary = (n.get("summary") or "").strip()
|
||||
prefix = f"[{date}] " if date else ""
|
||||
if summary:
|
||||
lines.append(f"- {prefix}{title}\n {summary[:200]}")
|
||||
else:
|
||||
lines.append(f"- {prefix}{title}")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
async def score_sentiment(
|
||||
llm,
|
||||
ticker: str,
|
||||
@@ -36,7 +55,7 @@ async def score_sentiment(
|
||||
model: str = DEFAULT_MODEL,
|
||||
) -> Dict[str, Any]:
|
||||
"""Returns {ticker, score_raw, reason, news_count, tokens_input, tokens_output, model}."""
|
||||
news_block = "\n".join(f"- {n['title']}" for n in news)
|
||||
news_block = _format_news_block(news)
|
||||
prompt = PROMPT_TEMPLATE.format(
|
||||
name=name or ticker, ticker=ticker,
|
||||
n=len(news), news_block=news_block,
|
||||
|
||||
Reference in New Issue
Block a user