Automatizando Changelogs con IA: Traducciones a Español para Discord usando Gemini
En el proyecto Reimpact/platform, siempre buscamos maneras de mejorar la comunicación y la experiencia del usuario. Una de las áreas clave es mantener a nuestra comunidad de Discord informada sobre las últimas actualizaciones y cambios. Tradicionalmente, esto implicaría transcribir manualmente los mensajes de commit, que a menudo son técnicos y difíciles de entender para un público no desarrollador, a un formato más amigable.
Para solucionar esto y optimizar el proceso, hemos integrado la Inteligencia Artificial de Gemini 2.0 Flash para generar resúmenes amigables y localizados en español a partir de nuestros mensajes de commit. Esta nueva funcionalidad asegura que nuestros changelogs en Discord sean claros, concisos y, lo más importante, comprensibles para todos.
Flujo de Trabajo
El proceso es sencillo pero potente:
- Captura de Commits: Cuando se realizan nuevos commits, el sistema los detecta.
- Traducción con IA: Antes de publicar, el mensaje de commit original se envía a la API de Gemini 2.0 Flash.
- Generación de Resumen: Gemini procesa el mensaje y devuelve un resumen en español, diseñado para ser accesible y fácil de leer.
- Publicación en Discord: El resumen generado por la IA se publica automáticamente en el canal de changelog de Discord.
Manejo de Errores y Robustez
Sabemos que las integraciones externas deben ser robustas. Por ello, si la clave de API de Gemini no está configurada o si la llamada a la API falla por alguna razón (por ejemplo, problemas de red o cuota excedida), el sistema tiene un mecanismo de fallback. En estos casos, se publicará una lista de los commits originales sin traducir, asegurando que la información siempre llegue a la comunidad, aunque no sea el formato ideal.
Ejemplo conceptual de integración (PHP/Laravel)
Si bien la implementación real implica más capas, la interacción con una API de IA podría lucir de forma conceptual así:
namespace App\Services;
use GuzzleHttp\Client;
class GeminiAIService
{
protected $client;
protected $apiKey;
protected $apiUrl;
public function __construct()
{
$this->apiKey = env('GEMINI_API_KEY');
$this->apiUrl = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent';
$this->client = new Client();
}
public function translateCommitToSpanish(string $commitMessage): ?string
{
if (empty($this->apiKey)) {
// Log error, return null or throw exception
return null; // Fallback to raw commit
}
try {
$response = $this->client->post($this->apiUrl . '?key=' . $this->apiKey, [
'json' => [
'contents' => [
[
'parts' => [
['text' => 'Traduce el siguiente mensaje de commit a un resumen amigable en español para un changelog: "' . $commitMessage . '"']
]
]
]
]
]);
$data = json_decode($response->getBody()->getContents(), true);
return $data['candidates'][0]['content']['parts'][0]['text'] ?? null;
} catch (\Exception $e) {
// Log exception for debugging
return null; // Fallback to raw commit
}
}
}
Esta integración mejora significativamente la experiencia de nuestros usuarios en Discord al proporcionarles información clara y localizada sobre las novedades del proyecto, demostrando cómo la IA puede ser una herramienta invaluable en la automatización de procesos de comunicación técnica.