#!/usr/bin/env python3 import os import sys import json import requests KEY = os.environ["OPENROUTER_KEY"] MODEL = "anthropic/claude-3.5-haiku" SYSTEM_PROMPT = """És um assistente especializado em condensar descrições de eventos de corrida em resumos de uma linha em português de Portugal. Deves extrair e resumir apenas a informação mais importante e relevante da descrição fornecida. Exemplos de resumos que deves gerar: + Corrida histórica pelas ruas de Lisboa com vista para o Tejo + Trail desafiante pela Serra da Estrela + São Silvestre tradicional no centro histórico do Porto + Meia maratona costeira com paisagens do Atlântico + Corrida solidária organizada pela câmara municipal + Prova de montanha com subidas técnicas + Corrida de Natal pela zona ribeirinha + Trail nocturno por caminhos antigos IMPORTANTE: - Responde APENAS com a descrição de uma linha em português de Portugal - Usa apenas informação presente na descrição original - Destaca características especiais do percurso, localização ou organização - Não menciones distâncias se já estão implícitas no tipo de evento - Foca-te no que torna este evento único ou interessante""" def prompt(key: str, model: str, system: str, user: str) -> str: response = requests.post( url="https://openrouter.ai/api/v1/chat/completions", headers={ "Authorization": f"Bearer {key}", }, data=json.dumps( { "model": model, "messages": [ {"role": "system", "content": system}, {"role": "user", "content": user}, ], } ), ).json() print(response) return response["choices"][0]["message"]["content"] for slug in sys.argv[1:]: data_path = os.path.join("events", slug, "data.json") if not os.path.exists(data_path): continue data = json.load(open(data_path, "r")) description = data["content"]["rendered"].strip() if description == "": continue oneline_path = os.path.join("events", slug, "oneline-description") if os.path.exists(oneline_path): continue oneline = prompt(KEY, MODEL, SYSTEM_PROMPT, description) with open(oneline_path, "w") as f: f.write(oneline)