|
from nuse_modules.google_search import search_google_news |
|
from models_initialization.mistral_registry import mistral_generate |
|
|
|
def summarize_headlines_with_mistral(headlines: list[dict]) -> str: |
|
prompt = ( |
|
"Summarize the following news headlines into a short 3-sentence digest. " |
|
"Be factual and neutral. Mention the sources.\n\n" |
|
) |
|
for item in headlines: |
|
prompt += f"- {item['title']} – {item.get('link', '')}\n" |
|
|
|
return mistral_generate(prompt, max_new_tokens=200, temperature=0.5) |
|
|
|
|
|
def generate_headline_digest(keywords: list[str], num_results: int = 5): |
|
articles = search_google_news(keywords, num_results=num_results) |
|
|
|
if isinstance(articles, dict) and "error" in articles: |
|
return {"error": articles["error"]} |
|
|
|
summary = summarize_headlines_with_mistral(articles) |
|
return { |
|
"summary": summary, |
|
"sources": list({article["link"] for article in articles}), |
|
"headlines": [article["title"] for article in articles] |
|
} |
|
|