惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
雷峰网
雷峰网
B
Blog
月光博客
月光博客
博客园 - 【当耐特】
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
博客园 - Franky
MyScale Blog
MyScale Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Last Week in AI
Last Week in AI
B
Blog RSS Feed
H
Help Net Security

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
# Criei um assistente que me manda os papers do dia tradu...
Lincoln Romais · 2026-05-28 · via DEV Community

Lincoln Romais

Se você acompanha pesquisa em IA, sabe que o HuggingFace Papers solta novos papers todo dia. O problema? São dezenas de abstracts em inglês, e ler tudo manualmente é inviável no dia a dia.

Resolvi automatizar isso: um script Python que busca os papers do dia, joga cada abstract pro meu LLM local via Ollama, traduz pra português e manda tudo pro Telegram. Sem pagar por API, sem nada na nuvem.

Neste artigo vou te mostrar como funciona e como você pode replicar em menos de 10 minutos.


O que o projeto faz

  1. Consulta a API do HuggingFace e pega os papers em alta do dia
  2. Para cada paper, manda o abstract pro Ollama (LLM rodando localmente) pedir uma tradução e resumo em português
  3. Formata a mensagem com título, autores, upvotes e o resumo traduzido
  4. Envia cada paper como mensagem separada no Telegram

O resultado no Telegram fica assim:

🤖 HuggingFace Papers — 27/05/2026
Top 8 papers do dia, traduzidos com llama3
──────────────────────────────

1. *Scaling Laws for Reward Model Overoptimization*
👥 Leo Gao, John Schulman, Jacob Hilton
💬 142 upvotes

📝 Investigamos como o desempenho de modelos de linguagem muda quando otimizamos 
excessivamente contra um modelo de recompensa (reward model). Descobrimos que o 
desempenho no proxy aumenta mas o desempenho verdadeiro diminui — um fenômeno 
conhecido como overoptimization. Nossos experimentos mostram leis de escala 
previsíveis para esse comportamento...

🔗 HuggingFace | arXiv


Pré-requisitos

  • Python 3.10+
  • Ollama instalado com llama3 (ou qualquer modelo que você tiver)
  • Um bot no Telegram (leva 2 minutos criar)

Estrutura do projeto

hf-digest/
├── hf_digest.py      # script principal
├── config.py         # suas configurações
└── get_chat_id.py    # helper para descobrir o chat_id


O código

config.py

Começa pela configuração. Tudo em um lugar só, fácil de ajustar:

TELEGRAM_BOT_TOKEN = "SEU_TOKEN_AQUI"
TELEGRAM_CHAT_ID   = "SEU_CHAT_ID_AQUI"
OLLAMA_URL         = "http://localhost:11434"
OLLAMA_MODEL       = "llama3"
MAX_PAPERS         = 8

Buscando os papers

A API do HuggingFace retorna os papers do dia em JSON. Simples assim:

def fetch_papers() -> list[dict]:
    today = datetime.now().strftime("%Y-%m-%d")
    url = f"https://huggingface.co/api/daily_papers?date={today}"

    headers = {"User-Agent": "Mozilla/5.0 (compatible; HFDigestBot/1.0)"}
    response = requests.get(url, headers=headers, timeout=20)
    response.raise_for_status()

    papers = response.json()
    return papers[:MAX_PAPERS]

Traduzindo com Ollama

Aqui mora a mágica. O Ollama expõe uma API REST local no localhost:11434. A gente manda um prompt e ele retorna a resposta do modelo:

def translate_with_ollama(text: str) -> str:
    prompt = f"""Você é um assistente especializado em IA e ML. 
Traduza e resuma o seguinte abstract para o português brasileiro.
Mantenha termos técnicos em inglês entre parênteses quando necessário.
Responda APENAS com o resumo, sem frases introdutórias.

Abstract:
{text}"""

    payload = {
        "model": OLLAMA_MODEL,
        "prompt": prompt,
        "stream": False,
    }

    response = requests.post(
        f"{OLLAMA_URL}/api/generate",
        json=payload,
        timeout=120,
    )
    return response.json()["response"].strip()

O stream: False faz o Ollama esperar processar tudo antes de responder — mais fácil de lidar do que streaming para esse caso de uso.

Enviando pro Telegram

O bot do Telegram aceita Markdown, então dá pra formatar bem as mensagens:

def send_telegram(text: str) -> bool:
    url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
    payload = {
        "chat_id": TELEGRAM_CHAT_ID,
        "text": text,
        "parse_mode": "Markdown",
        "disable_web_page_preview": True,
    }
    response = requests.post(url, json=payload, timeout=15)
    return response.ok

Juntando tudo no main()

def main():
    papers = fetch_papers()

    # Cabeçalho
    send_telegram(f"🤖 *HuggingFace Papers — {datetime.now().strftime('%d/%m/%Y')}*")

    for i, paper in enumerate(papers, start=1):
        abstract = paper["paper"].get("summary", "")

        translated = translate_with_ollama(abstract)
        message = format_paper(paper, i, translated)
        send_telegram(message)

    send_telegram(f"{len(papers)} papers enviados!")


Setup em 5 minutos

1. Instale a dependência

pip install requests

2. Crie o bot no Telegram

  • Abra o Telegram e procure @botfather
  • Envie /newbot, siga as instruções
  • Copie o token e cole em config.py

3. Descubra seu Chat ID

Envie qualquer mensagem pro seu novo bot e rode:

# get_chat_id.py
import requests
from config import TELEGRAM_BOT_TOKEN

r = requests.get(f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates")
updates = r.json()["result"]
chat_id = updates[-1]["message"]["chat"]["id"]
print(f"Seu chat_id: {chat_id}")

4. Suba o Ollama e rode

ollama serve
python3 hf_digest.py


Por que rodar o LLM localmente?

Poderia ter usado a API da OpenAI ou do Gemini para traduzir. Mas há algumas vantagens em rodar local:

  • Custo zero — sem pagar por token
  • Privacidade — os abstracts não saem da sua máquina
  • Sem rate limit — processa quantos papers quiser
  • Funciona offline — depois de baixar o modelo, não precisa de internet pra traduzir

O llama3 faz um trabalho muito bom em traduções técnicas. Se quiser mais velocidade, o phi4 ou gemma3 também funcionam bem e são mais leves.


Automatizando com cron

Para receber o digest todo dia de manhã sem precisar rodar manualmente, adicione ao crontab:

crontab -e

0 9 * * * cd /caminho/para/hf-digest && python3 hf_digest.py >> digest.log 2>&1


Possíveis melhorias

Algumas ideias para evoluir o projeto:

  • Filtrar por área: só receber papers de NLP, ou de RL, por exemplo
  • Score de relevância: pedir pro LLM avaliar o quão relevante é pra você com base no seu perfil
  • Salvar em banco: guardar um histórico local dos papers lidos
  • Interface web: um painel simples para ler os papers traduzidos no navegador
  • Suporte a outros feeds: conectar com arXiv diretamente ou com Papers With Code

Código completo

O projeto completo está disponível no GitHub: [https://github.com/lromais/ai_newsletters]


Se você testar e fizer alguma melhoria, compartilha nos comentários! E se tiver dúvida em algum passo do setup, é só perguntar.


Tags: python, ai, ollama, telegram, machinelearning