Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"Google Gemini": "Google Gemini",
|
||||
"Use the new Gemini models from Google": "Use the new Gemini models from Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n",
|
||||
"Generate Content": "Generate Content",
|
||||
"Generate Content from Image": "Generate Content from Image",
|
||||
"Chat Gemini": "Chat Gemini",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Generate content using Google Gemini using the \"gemini-pro\" model",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Generate content using Google Gemini using the \"gemini-pro-vision\" model",
|
||||
"Chat with Google Gemini": "Chat with Google Gemini",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Prompt": "Prompt",
|
||||
"Model": "Model",
|
||||
"Image": "Image",
|
||||
"Memory Key": "Memory Key",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"The prompt to generate content from.": "The prompt to generate content from.",
|
||||
"The model which will generate the completion": "The model which will generate the completion",
|
||||
"The image to generate content from.": "The image to generate content from.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD"
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"Use the new Gemini models from Google": "Verwende die neuen Gemini-Modelle von Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nFolgen Sie diesen Anweisungen, um Ihren API-Schlüssel zu erhalten:\n1. Besuchen Sie die folgende Website: https://makersuite.google.com/app/apikey\n2. Sobald Sie auf der Website sind, suchen und klicken Sie auf die Option, um Ihren API-Schlüssel zu erhalten.\nBitte beachten Sie, dass dieser Teil eine API in der Beta-Phase verwendet, die sich jederzeit ändern kann.\n",
|
||||
"Generate Content": "Inhalt generieren",
|
||||
"Generate Content from Image": "Inhalte aus Bild generieren",
|
||||
"Chat Gemini": "Chat-Gemini",
|
||||
"Text to Speech": "Text-zu-Sprache",
|
||||
"Custom API Call": "Eigener API-Aufruf",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Erstellen Sie Inhalte mithilfe von Google Gemini mit dem \"gemini-pro\"-Modell",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Erstellen Sie Inhalte mithilfe von Google Gemini mit dem \"gemini-pro-vision\"-Modell",
|
||||
"Chat with Google Gemini": "Mit Google Gemini chatten",
|
||||
"Converts text to audio file.": "Konvertiert Text in Audiodatei.",
|
||||
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
|
||||
"Prompt": "Prompt",
|
||||
"Model": "Modell",
|
||||
"Image": "Bild",
|
||||
"Memory Key": "Speicherschlüssel",
|
||||
"Input Text": "Input Text",
|
||||
"Voice": "Stimme",
|
||||
"Method": "Methode",
|
||||
"Headers": "Kopfzeilen",
|
||||
"Query Parameters": "Abfrageparameter",
|
||||
"Body": "Körper",
|
||||
"Response is Binary ?": "Antwort ist binär?",
|
||||
"No Error on Failure": "Kein Fehler bei Fehler",
|
||||
"Timeout (in seconds)": "Timeout (in Sekunden)",
|
||||
"The prompt to generate content from.": "Die Eingabeaufforderung, aus der Inhalte generiert werden sollen.",
|
||||
"The model which will generate the completion": "Das Modell, das die Fertigstellung generiert",
|
||||
"The image to generate content from.": "Das Bild, aus dem Inhalte generiert werden sollen.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "Ein Memory-Schlüssel, der die Chat-Geschichte beibehält. Lassen Sie ihn leer, um Gemini ohne Speicher früherer Nachrichten zu verlassen.",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
|
||||
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
|
||||
"Gemini 2.5 Pro Preview TTS ": "Gemini 2.5 Pro Preview TTS ",
|
||||
"Gemini 2.5 Flash Preview TTS": "Gemini 2.5 Flash Vorschau TTS",
|
||||
"Zephyr (Bright)": "Zephyr (recht)",
|
||||
"Puck (Upbeat)": "Puck (Upbeat)",
|
||||
"Charon (Informative)": "Charon (informativ)",
|
||||
"Kore (Firm)": "Kore (Firme)",
|
||||
"Fenrir (Excitable)": "Fenrir (Zitat)",
|
||||
"Leda (Youthful)": "Leda (jugendlich)",
|
||||
"Orus (Firm)": "Orus (Firme)",
|
||||
"Aoede (Breezy)": "Aoede (Breezy)",
|
||||
"Callirrhoe (Easy-going)": "Kallirrhoe (leicht)",
|
||||
"Autonoe (Bright)": "Autonoe (recht)",
|
||||
"Enceladus (Breathy)": "Enceladus (Atmung)",
|
||||
"Iapetus (Clear)": "Iapetus (Lernen)",
|
||||
"Umbriel (Easy-going)": "Umbriel (leicht)",
|
||||
"Algieba (Smooth)": "Algieba (Smooth)",
|
||||
"Despina (Smooth)": "Despina (Smooth)",
|
||||
"Erinome (Clear)": "Erinom (Lernen)",
|
||||
"Algenib (Gravelly)": "Algenib (Schwer)",
|
||||
"Rasalgethi (Informative)": "Rasalgethi (informativ)",
|
||||
"Laomedeia (Upbeat)": "Laomedeia (Upbeat)",
|
||||
"Achernar (Soft)": "Achernar (weich)",
|
||||
"Alnilam (Firm)": "Alnilam (Firme)",
|
||||
"Schedar (Even)": "Schedar (Even)",
|
||||
"Gacrux (Mature)": "Gacrux (Reife)",
|
||||
"Pulcherrima (Forward)": "Pulcherrima (Vorwärts)",
|
||||
"Achird (Friendly)": "Achird (Freundlich)",
|
||||
"Zubenelgenubi (Casual)": "Zubenelgenubi (Casual)",
|
||||
"Vindemiatrix (Gentle)": "Vindemiatrix (Gentle)",
|
||||
"Sadachbia (Lively)": "Sadachbia (Lively)",
|
||||
"Sadaltager (Knowledgeable)": "Sadaltager (anerkennbar)",
|
||||
"Sulafat (Warm)": "Sulafat (Warm)",
|
||||
"GET": "ERHALTEN",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "LÖSCHEN",
|
||||
"HEAD": "HEAD"
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"Use the new Gemini models from Google": "Usar los nuevos modelos de Gemini de Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nSigue estas instrucciones para obtener tu clave API:\n1. Visita el siguiente sitio web: https://makersuite.google.com/app/apikey\n2. Una vez en el sitio web, localice y haga clic en la opción para obtener su clave API.\nTenga en cuenta que esta pieza utiliza una API en la fase beta que puede cambiar en cualquier momento.\n",
|
||||
"Generate Content": "Generar contenido",
|
||||
"Generate Content from Image": "Generar contenido de la imagen",
|
||||
"Chat Gemini": "Chat Gemini",
|
||||
"Text to Speech": "Texto a voz",
|
||||
"Custom API Call": "Llamada API personalizada",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Generar contenido usando Google Gemini utilizando el modelo \"gemini-pro\"",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Generar contenido utilizando Google Gemini utilizando el modelo \"gemini-pro-vision\"",
|
||||
"Chat with Google Gemini": "Chatear con Google Gemini",
|
||||
"Converts text to audio file.": "Convierte texto a archivo de audio.",
|
||||
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
|
||||
"Prompt": "Petición",
|
||||
"Model": "Modelo",
|
||||
"Image": "Imagen",
|
||||
"Memory Key": "Clave de memoria",
|
||||
"Input Text": "Input Text",
|
||||
"Voice": "Voz",
|
||||
"Method": "Método",
|
||||
"Headers": "Encabezados",
|
||||
"Query Parameters": "Parámetros de consulta",
|
||||
"Body": "Cuerpo",
|
||||
"Response is Binary ?": "¿Respuesta es binaria?",
|
||||
"No Error on Failure": "No hay ningún error en fallo",
|
||||
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
|
||||
"The prompt to generate content from.": "El prompt desde el que generar contenido.",
|
||||
"The model which will generate the completion": "El modelo que generará la finalización",
|
||||
"The image to generate content from.": "La imagen a la que generar contenido.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "Una clave de memoria que mantendrá el historial de chat. Manténgalo vacío para dejar Gemini sin memoria de mensajes anteriores.",
|
||||
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
|
||||
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
|
||||
"Gemini 2.5 Pro Preview TTS ": "Gemini 2.5 Pro Preview TTS ",
|
||||
"Gemini 2.5 Flash Preview TTS": "Vista previa de Gemini 2.5 TTS",
|
||||
"Zephyr (Bright)": "Zephyr (Brillante)",
|
||||
"Puck (Upbeat)": "Puck (Upbeat)",
|
||||
"Charon (Informative)": "Charon (informativo)",
|
||||
"Kore (Firm)": "Kore (Firm)",
|
||||
"Fenrir (Excitable)": "Fenrir (Excitable)",
|
||||
"Leda (Youthful)": "Leda (joven)",
|
||||
"Orus (Firm)": "Orus (Firm)",
|
||||
"Aoede (Breezy)": "Aoede (Breezy)",
|
||||
"Callirrhoe (Easy-going)": "Callirrhoe (Fácil)",
|
||||
"Autonoe (Bright)": "Auto-tonoe (Brillo)",
|
||||
"Enceladus (Breathy)": "Encélado (respiración)",
|
||||
"Iapetus (Clear)": "Iapetus (Clear)",
|
||||
"Umbriel (Easy-going)": "Umbriel (fácil)",
|
||||
"Algieba (Smooth)": "Algieba (Suave)",
|
||||
"Despina (Smooth)": "Despina (suave)",
|
||||
"Erinome (Clear)": "Erinoma (Clear)",
|
||||
"Algenib (Gravelly)": "Algenib (Gravelly)",
|
||||
"Rasalgethi (Informative)": "Rasalgethi (informativo)",
|
||||
"Laomedeia (Upbeat)": "Laomedeia (Upbeat)",
|
||||
"Achernar (Soft)": "Aquilernar (Soft)",
|
||||
"Alnilam (Firm)": "Alnilam (Firm)",
|
||||
"Schedar (Even)": "Schedar (fecha)",
|
||||
"Gacrux (Mature)": "Gacrux (Mature)",
|
||||
"Pulcherrima (Forward)": "Pulcherrima (Adelante)",
|
||||
"Achird (Friendly)": "Achird (frecuentemente)",
|
||||
"Zubenelgenubi (Casual)": "Zubenelgenubi (Casual)",
|
||||
"Vindemiatrix (Gentle)": "Diabetes (Izquierda)",
|
||||
"Sadachbia (Lively)": "Sadachbia (Livamente)",
|
||||
"Sadaltager (Knowledgeable)": "Sadaltager (Conocible)",
|
||||
"Sulafat (Warm)": "Sulafat (Warm)",
|
||||
"GET": "RECOGER",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "BORRAR",
|
||||
"HEAD": "LIMPIO"
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"Use the new Gemini models from Google": "Utiliser les nouveaux modèles Gemini de Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n",
|
||||
"Generate Content": "Générer du contenu",
|
||||
"Generate Content from Image": "Générer du contenu à partir de l'image",
|
||||
"Chat Gemini": "Gemini du chat",
|
||||
"Text to Speech": "Discours vocaux",
|
||||
"Custom API Call": "Appel API personnalisé",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Générer du contenu à l'aide de Google Gemini en utilisant le modèle \"gemini-pro\"",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Générer du contenu à l'aide de Google Gemini en utilisant le modèle \"gemini-pro-vision\"",
|
||||
"Chat with Google Gemini": "Discuter avec Google Gemini",
|
||||
"Converts text to audio file.": "Convertit du texte en fichier audio.",
|
||||
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un point de terminaison spécifique",
|
||||
"Prompt": "Prompt",
|
||||
"Model": "Modélisation",
|
||||
"Image": "Image",
|
||||
"Memory Key": "Clé de mémoire",
|
||||
"Input Text": "Input Text",
|
||||
"Voice": "Voix",
|
||||
"Method": "Méthode",
|
||||
"Headers": "En-têtes",
|
||||
"Query Parameters": "Paramètres de requête",
|
||||
"Body": "Corps",
|
||||
"Response is Binary ?": "La réponse est Binaire ?",
|
||||
"No Error on Failure": "Aucune erreur en cas d'échec",
|
||||
"Timeout (in seconds)": "Délai d'attente (en secondes)",
|
||||
"The prompt to generate content from.": "L'invite à générer du contenu.",
|
||||
"The model which will generate the completion": "Le modèle qui va générer la complétion",
|
||||
"The image to generate content from.": "L'image à partir de laquelle générer du contenu.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "Une clé de mémoire qui conservera l'historique du tchat. Gardez-la vide pour laisser Gemini sans mémoire pour les messages précédents.",
|
||||
"Authorization headers are injected automatically from your connection.": "Les en-têtes d'autorisation sont injectés automatiquement à partir de votre connexion.",
|
||||
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
|
||||
"Gemini 2.5 Pro Preview TTS ": "Gemini 2.5 Pro Preview TTS ",
|
||||
"Gemini 2.5 Flash Preview TTS": "Aperçu Flash de Gemini 2.5",
|
||||
"Zephyr (Bright)": "Zéphyr (gauche)",
|
||||
"Puck (Upbeat)": "Puck (Upbeat)",
|
||||
"Charon (Informative)": "Charon (informatif)",
|
||||
"Kore (Firm)": "Kore (Ferme)",
|
||||
"Fenrir (Excitable)": "Fenrir (Excitable)",
|
||||
"Leda (Youthful)": "Leda (jeune)",
|
||||
"Orus (Firm)": "Orus (Ferme)",
|
||||
"Aoede (Breezy)": "Aoede (Breezy)",
|
||||
"Callirrhoe (Easy-going)": "Callirrhoe (facile à utiliser)",
|
||||
"Autonoe (Bright)": "Autonoe (gauche)",
|
||||
"Enceladus (Breathy)": "Encelade (respiration)",
|
||||
"Iapetus (Clear)": "Iapetus (Clear)",
|
||||
"Umbriel (Easy-going)": "Ombriel (facile à faire)",
|
||||
"Algieba (Smooth)": "Algieba (Smooth)",
|
||||
"Despina (Smooth)": "désespoir (Smooth)",
|
||||
"Erinome (Clear)": "Erinome (Clear)",
|
||||
"Algenib (Gravelly)": "Algenib (Gravelly)",
|
||||
"Rasalgethi (Informative)": "Rasalgethi (informatif)",
|
||||
"Laomedeia (Upbeat)": "Laomedeia (Upbeat)",
|
||||
"Achernar (Soft)": "Acheté (Soft)",
|
||||
"Alnilam (Firm)": "Alnilam (Firm)",
|
||||
"Schedar (Even)": "Schedar (ven)",
|
||||
"Gacrux (Mature)": "Gacrux (Mature)",
|
||||
"Pulcherrima (Forward)": "Pulcherrima (avant)",
|
||||
"Achird (Friendly)": "Achird (riendly)",
|
||||
"Zubenelgenubi (Casual)": "Zubenelgenubi (Casual)",
|
||||
"Vindemiatrix (Gentle)": "Vindemiatrix (Gentle)",
|
||||
"Sadachbia (Lively)": "Sadachbie (Vivement)",
|
||||
"Sadaltager (Knowledgeable)": "Sadaltager (K<unk> dgeable)",
|
||||
"Sulafat (Warm)": "Sulafat (Warm)",
|
||||
"GET": "OBTENIR",
|
||||
"POST": "POSTER",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "EFFACER",
|
||||
"DELETE": "SUPPRIMER",
|
||||
"HEAD": "TÊTE"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"Google Gemini": "Google Gemini",
|
||||
"Use the new Gemini models from Google": "Use the new Gemini models from Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n",
|
||||
"Generate Content": "Generate Content",
|
||||
"Generate Content from Image": "Generate Content from Image",
|
||||
"Chat Gemini": "Chat Gemini",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Generate content using Google Gemini using the \"gemini-pro\" model",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Generate content using Google Gemini using the \"gemini-pro-vision\" model",
|
||||
"Chat with Google Gemini": "Chat with Google Gemini",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Prompt": "Prompt",
|
||||
"Model": "Model",
|
||||
"Image": "Image",
|
||||
"Memory Key": "Memory Key",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"The prompt to generate content from.": "The prompt to generate content from.",
|
||||
"The model which will generate the completion": "The model which will generate the completion",
|
||||
"The image to generate content from.": "The image to generate content from.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"Google Gemini": "Google Gemini",
|
||||
"Use the new Gemini models from Google": "Use the new Gemini models from Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n",
|
||||
"Generate Content": "Generate Content",
|
||||
"Generate Content from Image": "Generate Content from Image",
|
||||
"Chat Gemini": "Chat Gemini",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Generate content using Google Gemini using the \"gemini-pro\" model",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Generate content using Google Gemini using the \"gemini-pro-vision\" model",
|
||||
"Chat with Google Gemini": "Chat with Google Gemini",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Prompt": "Prompt",
|
||||
"Model": "Model",
|
||||
"Image": "Image",
|
||||
"Memory Key": "Memory Key",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"The prompt to generate content from.": "The prompt to generate content from.",
|
||||
"The model which will generate the completion": "The model which will generate the completion",
|
||||
"The image to generate content from.": "The image to generate content from.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD"
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"Use the new Gemini models from Google": "Googleの新しいGeminiモデルを使用する",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n",
|
||||
"Generate Content": "コンテンツを生成",
|
||||
"Generate Content from Image": "画像からコンテンツを生成",
|
||||
"Chat Gemini": "チャットジェミニー",
|
||||
"Text to Speech": "テキスト読み上げ",
|
||||
"Custom API Call": "カスタムAPI通話",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "\"gemini-pro\"モデルを使用してGoogle Geminiを使用してコンテンツを生成します",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "\"gemini-pro-vision\" モデルを使用して Google Gemini を生成する",
|
||||
"Chat with Google Gemini": "Google Geminiとチャット",
|
||||
"Converts text to audio file.": "テキストをオーディオファイルに変換します。",
|
||||
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
|
||||
"Prompt": "Prompt",
|
||||
"Model": "モデル",
|
||||
"Image": "画像",
|
||||
"Memory Key": "メモリーキー",
|
||||
"Input Text": "Input Text",
|
||||
"Voice": "音声",
|
||||
"Method": "方法",
|
||||
"Headers": "ヘッダー",
|
||||
"Query Parameters": "クエリパラメータ",
|
||||
"Body": "本文",
|
||||
"Response is Binary ?": "応答はバイナリですか?",
|
||||
"No Error on Failure": "失敗時にエラーはありません",
|
||||
"Timeout (in seconds)": "タイムアウト(秒)",
|
||||
"The prompt to generate content from.": "コンテンツを生成するためのプロンプト。",
|
||||
"The model which will generate the completion": "完了を生成するモデル",
|
||||
"The image to generate content from.": "コンテンツを生成する画像。",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "チャット履歴を保持するメモリーキー。ジェミニを空にすると、以前のメッセージのメモリを保持しないようにします。",
|
||||
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
|
||||
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
|
||||
"Gemini 2.5 Pro Preview TTS ": "Gemini 2.5 Pro Preview TTS ",
|
||||
"Gemini 2.5 Flash Preview TTS": "ジェミニ2.5フラッシュプレビューTTS",
|
||||
"Zephyr (Bright)": "ゼファー(明るい)",
|
||||
"Puck (Upbeat)": "Puck (Upbeat)",
|
||||
"Charon (Informative)": "Charon (Informative)",
|
||||
"Kore (Firm)": "Kore (Firm)",
|
||||
"Fenrir (Excitable)": "Fenrir (Excitable)",
|
||||
"Leda (Youthful)": "Leda (Youthful)",
|
||||
"Orus (Firm)": "Orus (Firm)",
|
||||
"Aoede (Breezy)": "Aoede (Breezy)",
|
||||
"Callirrhoe (Easy-going)": "Callirrhoe (Easy-going)",
|
||||
"Autonoe (Bright)": "Autonoe (Bright)",
|
||||
"Enceladus (Breathy)": "エンケラドス(リーシー)",
|
||||
"Iapetus (Clear)": "Iapetus (Clear)",
|
||||
"Umbriel (Easy-going)": "ウンブリ (Easy-going)",
|
||||
"Algieba (Smooth)": "アルギーバ (スムース)",
|
||||
"Despina (Smooth)": "Despina (Smooth)",
|
||||
"Erinome (Clear)": "Erinome (Clear)",
|
||||
"Algenib (Gravelly)": "Algenib (Gravelly)",
|
||||
"Rasalgethi (Informative)": "Rasalgethi (Informative)",
|
||||
"Laomedeia (Upbeat)": "Laomedeia (Upbeat)",
|
||||
"Achernar (Soft)": "Achernar (ソフト)",
|
||||
"Alnilam (Firm)": "Alnilam (Firm)",
|
||||
"Schedar (Even)": "スケジュール(夕方)",
|
||||
"Gacrux (Mature)": "Gacrux(満期)",
|
||||
"Pulcherrima (Forward)": "プルチェリマ(前方)",
|
||||
"Achird (Friendly)": "Achird(フレンドリー)",
|
||||
"Zubenelgenubi (Casual)": "Zubenelgenubi (Casual)",
|
||||
"Vindemiatrix (Gentle)": "Vindemiatrix (Gentle)",
|
||||
"Sadachbia (Lively)": "サダクビア",
|
||||
"Sadaltager (Knowledgeable)": "Sadaltager(Knowledgeable)",
|
||||
"Sulafat (Warm)": "Sulafat (Warm)",
|
||||
"GET": "取得",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "削除",
|
||||
"HEAD": "頭"
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"Use the new Gemini models from Google": "Gebruik de nieuwe Gemini-modellen van Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nVolg deze instructies om uw API Key te bemachtigen:\n1. Bezoek de volgende website: https://makersuite.google.com/app/apikey\n2. Eenmaal op de website, zoek en klik op de optie om uw API-sleutel te verkrijgen.\nHoud er rekening mee dat dit stuk een API in de bètafase gebruikt die op elk moment kan veranderen.\n",
|
||||
"Generate Content": "Inhoud genereren",
|
||||
"Generate Content from Image": "Genereer inhoud van afbeelding",
|
||||
"Chat Gemini": "Chat Tweini",
|
||||
"Text to Speech": "Tekst naar spraak",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Genereer inhoud met behulp van Google Gemini met behulp van het \"gemini-pro\" model",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Genereer inhoud met behulp van Google Gemini met behulp van het \"gemini-pro-vision\" model",
|
||||
"Chat with Google Gemini": "Chat met Google Gemini",
|
||||
"Converts text to audio file.": "Zet tekst om naar audiobestand.",
|
||||
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
|
||||
"Prompt": "Prompt",
|
||||
"Model": "Model",
|
||||
"Image": "Afbeelding",
|
||||
"Memory Key": "Geheugen Sleutel",
|
||||
"Input Text": "Input Text",
|
||||
"Voice": "Stem",
|
||||
"Method": "Methode",
|
||||
"Headers": "Kopteksten",
|
||||
"Query Parameters": "Query parameters",
|
||||
"Body": "Lichaam",
|
||||
"Response is Binary ?": "Antwoord is binair?",
|
||||
"No Error on Failure": "Geen fout bij fout",
|
||||
"Timeout (in seconds)": "Time-out (in seconden)",
|
||||
"The prompt to generate content from.": "De prompt to genereren van inhoud van.",
|
||||
"The model which will generate the completion": "Het model dat de voltooiing zal genereren",
|
||||
"The image to generate content from.": "De afbeelding om inhoud vanuit te genereren.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "Een geheugensleutel waarmee de chat geschiedenis wordt bewaard. Houd Gemini leeg om geen geheugen meer te hebben van vorige berichten.",
|
||||
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
|
||||
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
|
||||
"Gemini 2.5 Pro Preview TTS ": "Gemini 2.5 Pro Preview TTS ",
|
||||
"Gemini 2.5 Flash Preview TTS": "Gemini 2.5 Flash Preview TTS",
|
||||
"Zephyr (Bright)": "Zephyr (rechts)",
|
||||
"Puck (Upbeat)": "Puck (Upbeat)",
|
||||
"Charon (Informative)": "Charon (Informatief)",
|
||||
"Kore (Firm)": "Kore (Firm)",
|
||||
"Fenrir (Excitable)": "Fenrir (Excitable)",
|
||||
"Leda (Youthful)": "Leda (Jongeren)",
|
||||
"Orus (Firm)": "Orus (Firm)",
|
||||
"Aoede (Breezy)": "Aoede (Breezy)",
|
||||
"Callirrhoe (Easy-going)": "Kallirrhoe (Easy-gaande)",
|
||||
"Autonoe (Bright)": "Autonoe (rechts)",
|
||||
"Enceladus (Breathy)": "Enceladus (Breathy)",
|
||||
"Iapetus (Clear)": "Iapetus (Verleen)",
|
||||
"Umbriel (Easy-going)": "Umbriel (weg)",
|
||||
"Algieba (Smooth)": "Algieba (mooi)",
|
||||
"Despina (Smooth)": "$\\\\dfracina (mooi)",
|
||||
"Erinome (Clear)": "Ernstig (leren)",
|
||||
"Algenib (Gravelly)": "Algenib (graag)",
|
||||
"Rasalgethi (Informative)": "Rasalgethi (Informative)",
|
||||
"Laomedeia (Upbeat)": "Laomedeia (Upbeat)",
|
||||
"Achernar (Soft)": "Achernar (Soft)",
|
||||
"Alnilam (Firm)": "Alnilam (Firm)",
|
||||
"Schedar (Even)": "Schedar (Even)",
|
||||
"Gacrux (Mature)": "Gacrux (Mature)",
|
||||
"Pulcherrima (Forward)": "Pulcherrima (vooruit)",
|
||||
"Achird (Friendly)": "Bereik (Friendly)",
|
||||
"Zubenelgenubi (Casual)": "Zubenelgenubi (Casual)",
|
||||
"Vindemiatrix (Gentle)": "Vindemiatrix (Gentel)",
|
||||
"Sadachbia (Lively)": "Sadachbia (Lively)",
|
||||
"Sadaltager (Knowledgeable)": "Sadaltager (Bekend)",
|
||||
"Sulafat (Warm)": "Sulafat (Warm)",
|
||||
"GET": "KRIJG",
|
||||
"POST": "POSTE",
|
||||
"PATCH": "BEKIJK",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "VERWIJDEREN",
|
||||
"HEAD": "HOOFD"
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"Use the new Gemini models from Google": "Use os novos modelos Gemini do Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nSiga estas instruções para obter a sua Chave de API:\n1. Visite o seguinte site: https://makersuite.google.com/app/apikey\n2. Uma vez no site, localize e clique na opção para obter a sua chave de API.\nPor favor note que esta peça usa uma API na fase beta que pode mudar a qualquer momento.\n",
|
||||
"Generate Content": "Gerar Conteúdo",
|
||||
"Generate Content from Image": "Gerar Conteúdo a partir da Imagem",
|
||||
"Chat Gemini": "Chat Gemini",
|
||||
"Text to Speech": "Texto para fala",
|
||||
"Custom API Call": "Chamada de API personalizada",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Gere conteúdo usando Google Gemini usando o modelo \"gemini-pro\"",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Gere conteúdo usando o Google Gemini usando o modelo \"gemini-pro-vision\"",
|
||||
"Chat with Google Gemini": "Converse com Google Gemini",
|
||||
"Converts text to audio file.": "Converte texto em arquivo de áudio.",
|
||||
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
|
||||
"Prompt": "Aviso",
|
||||
"Model": "Modelo",
|
||||
"Image": "Imagem:",
|
||||
"Memory Key": "Chave de memória",
|
||||
"Input Text": "Input Text",
|
||||
"Voice": "Voz",
|
||||
"Method": "Método",
|
||||
"Headers": "Cabeçalhos",
|
||||
"Query Parameters": "Parâmetros da consulta",
|
||||
"Body": "Conteúdo",
|
||||
"Response is Binary ?": "A resposta é binária ?",
|
||||
"No Error on Failure": "Nenhum erro no Failure",
|
||||
"Timeout (in seconds)": "Tempo limite (em segundos)",
|
||||
"The prompt to generate content from.": "O prompt para gerar o conteúdo.",
|
||||
"The model which will generate the completion": "O modelo que gerará a conclusão",
|
||||
"The image to generate content from.": "A imagem a ser gerada com o conteúdo.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "Chave de memória que manterá o histórico de conversas. Deixe em branco para deixar o Gemini sem memória das mensagens anteriores.",
|
||||
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
|
||||
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
|
||||
"Gemini 2.5 Pro Preview TTS ": "Gemini 2.5 Pro Preview TTS ",
|
||||
"Gemini 2.5 Flash Preview TTS": "TTS de Pré-visualização de Flash Gemini 2.5",
|
||||
"Zephyr (Bright)": "Zéfiro (Certo)",
|
||||
"Puck (Upbeat)": "Puck (Upbeat)",
|
||||
"Charon (Informative)": "Charon (informativo)",
|
||||
"Kore (Firm)": "Kore (Firm)",
|
||||
"Fenrir (Excitable)": "Fenrir (Excitável)",
|
||||
"Leda (Youthful)": "Leda (Youthful)",
|
||||
"Orus (Firm)": "Orus (Firm)",
|
||||
"Aoede (Breezy)": "Aoede (breeza)",
|
||||
"Callirrhoe (Easy-going)": "Callirhoe (Fácil)",
|
||||
"Autonoe (Bright)": "Autonoe (Certo)",
|
||||
"Enceladus (Breathy)": "Enceladus (Respiração)",
|
||||
"Iapetus (Clear)": "Iapetus (Aprender)",
|
||||
"Umbriel (Easy-going)": "Úmbriel (Fácil)",
|
||||
"Algieba (Smooth)": "Argeba (Sujeito)",
|
||||
"Despina (Smooth)": "Despina (Suave)",
|
||||
"Erinome (Clear)": "Erinoma (Aprender)",
|
||||
"Algenib (Gravelly)": "Algenib (gravemente)",
|
||||
"Rasalgethi (Informative)": "Rasalgethi (Informativo)",
|
||||
"Laomedeia (Upbeat)": "Laomedeia (Upbeat)",
|
||||
"Achernar (Soft)": "Achernar (Soft)",
|
||||
"Alnilam (Firm)": "Alnilam (Firme)",
|
||||
"Schedar (Even)": "Schedar (for)",
|
||||
"Gacrux (Mature)": "Gacrux (Mature)",
|
||||
"Pulcherrima (Forward)": "Pulcherrima (avançado)",
|
||||
"Achird (Friendly)": "Achird (Fendentemente)",
|
||||
"Zubenelgenubi (Casual)": "Zubenelgenubi (Casual)",
|
||||
"Vindemiatrix (Gentle)": "Vindemiatrix (Gentle)",
|
||||
"Sadachbia (Lively)": "Sadachbia (vivo)",
|
||||
"Sadaltager (Knowledgeable)": "Sadaltager (Conhecimento)",
|
||||
"Sulafat (Warm)": "Sulafat (Warm)",
|
||||
"GET": "OBTER",
|
||||
"POST": "POSTAR",
|
||||
"PATCH": "COMPRAR",
|
||||
"PUT": "COLOCAR",
|
||||
"DELETE": "EXCLUIR",
|
||||
"HEAD": "CABEÇA"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"Google Gemini": "Google Gemini",
|
||||
"Use the new Gemini models from Google": "Использовать новые модели Gemini из Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n",
|
||||
"Generate Content": "Генерировать содержимое",
|
||||
"Generate Content from Image": "Сгенерировать содержимое из изображения",
|
||||
"Chat Gemini": "Чат Gemini",
|
||||
"Custom API Call": "Пользовательский вызов API",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Генерировать контент с помощью Google Gemini с использованием модели \"gemini-pro\"",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Генерировать контент, используя Google Gemini с использованием модели \"gemini-pro-vision\"",
|
||||
"Chat with Google Gemini": "Чат с Google Gemini",
|
||||
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
|
||||
"Prompt": "Prompt",
|
||||
"Model": "Модель",
|
||||
"Image": "Изображение",
|
||||
"Memory Key": "Ключ памяти",
|
||||
"Method": "Метод",
|
||||
"Headers": "Заголовки",
|
||||
"Query Parameters": "Параметры запроса",
|
||||
"Body": "Тело",
|
||||
"No Error on Failure": "Нет ошибок при ошибке",
|
||||
"Timeout (in seconds)": "Таймаут (в секундах)",
|
||||
"The prompt to generate content from.": "Запрос на создание содержимого.",
|
||||
"The model which will generate the completion": "Модель, которая будет генерировать завершение",
|
||||
"The image to generate content from.": "Изображение для создания содержимого.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "Ключ памяти, который сохранит историю чата. Оставьте пустым, чтобы оставить Gemini без памяти о предыдущих сообщениях.",
|
||||
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
|
||||
"GET": "ПОЛУЧИТЬ",
|
||||
"POST": "ПОСТ",
|
||||
"PATCH": "ПАТЧ",
|
||||
"PUT": "ПОКУПИТЬ",
|
||||
"DELETE": "УДАЛИТЬ",
|
||||
"HEAD": "HEAD"
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"Use the new Gemini models from Google": "Use the new Gemini models from Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n",
|
||||
"Generate Content": "Generate Content",
|
||||
"Generate Content with File Search": "Generate Content with File Search",
|
||||
"Generate Content from Image": "Generate Content from Image",
|
||||
"Chat Gemini": "Chat Gemini",
|
||||
"Text to Speech": "Text to Speech",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Generate content using Google Gemini using the \"gemini-pro\" model",
|
||||
"Generate content with file search functionality.": "Generate content with file search functionality.",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Generate content using Google Gemini using the \"gemini-pro-vision\" model",
|
||||
"Chat with Google Gemini": "Chat with Google Gemini",
|
||||
"Converts text to audio file.": "Converts text to audio file.",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Prompt": "Prompt",
|
||||
"Model": "Model",
|
||||
"File Store Name": "File Store Name",
|
||||
"File": "File",
|
||||
"Image": "Image",
|
||||
"Memory Key": "Memory Key",
|
||||
"Input Text": "Input Text",
|
||||
"Voice": "Voice",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"The prompt to generate content from.": "The prompt to generate content from.",
|
||||
"The model which will generate the completion": "The model which will generate the completion",
|
||||
"The image to generate content from.": "The image to generate content from.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"Gemini 2.5 Pro Preview TTS ": "Gemini 2.5 Pro Preview TTS ",
|
||||
"Gemini 2.5 Flash Preview TTS": "Gemini 2.5 Flash Preview TTS",
|
||||
"Zephyr (Bright)": "Zephyr (Bright)",
|
||||
"Puck (Upbeat)": "Puck (Upbeat)",
|
||||
"Charon (Informative)": "Charon (Informative)",
|
||||
"Kore (Firm)": "Kore (Firm)",
|
||||
"Fenrir (Excitable)": "Fenrir (Excitable)",
|
||||
"Leda (Youthful)": "Leda (Youthful)",
|
||||
"Orus (Firm)": "Orus (Firm)",
|
||||
"Aoede (Breezy)": "Aoede (Breezy)",
|
||||
"Callirrhoe (Easy-going)": "Callirrhoe (Easy-going)",
|
||||
"Autonoe (Bright)": "Autonoe (Bright)",
|
||||
"Enceladus (Breathy)": "Enceladus (Breathy)",
|
||||
"Iapetus (Clear)": "Iapetus (Clear)",
|
||||
"Umbriel (Easy-going)": "Umbriel (Easy-going)",
|
||||
"Algieba (Smooth)": "Algieba (Smooth)",
|
||||
"Despina (Smooth)": "Despina (Smooth)",
|
||||
"Erinome (Clear)": "Erinome (Clear)",
|
||||
"Algenib (Gravelly)": "Algenib (Gravelly)",
|
||||
"Rasalgethi (Informative)": "Rasalgethi (Informative)",
|
||||
"Laomedeia (Upbeat)": "Laomedeia (Upbeat)",
|
||||
"Achernar (Soft)": "Achernar (Soft)",
|
||||
"Alnilam (Firm)": "Alnilam (Firm)",
|
||||
"Schedar (Even)": "Schedar (Even)",
|
||||
"Gacrux (Mature)": "Gacrux (Mature)",
|
||||
"Pulcherrima (Forward)": "Pulcherrima (Forward)",
|
||||
"Achird (Friendly)": "Achird (Friendly)",
|
||||
"Zubenelgenubi (Casual)": "Zubenelgenubi (Casual)",
|
||||
"Vindemiatrix (Gentle)": "Vindemiatrix (Gentle)",
|
||||
"Sadachbia (Lively)": "Sadachbia (Lively)",
|
||||
"Sadaltager (Knowledgeable)": "Sadaltager (Knowledgeable)",
|
||||
"Sulafat (Warm)": "Sulafat (Warm)",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"Google Gemini": "Google Gemini",
|
||||
"Use the new Gemini models from Google": "Use the new Gemini models from Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n",
|
||||
"Generate Content": "Generate Content",
|
||||
"Generate Content from Image": "Generate Content from Image",
|
||||
"Chat Gemini": "Chat Gemini",
|
||||
"Custom API Call": "Custom API Call",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Generate content using Google Gemini using the \"gemini-pro\" model",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Generate content using Google Gemini using the \"gemini-pro-vision\" model",
|
||||
"Chat with Google Gemini": "Chat with Google Gemini",
|
||||
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
|
||||
"Prompt": "Prompt",
|
||||
"Model": "Model",
|
||||
"Image": "Image",
|
||||
"Memory Key": "Memory Key",
|
||||
"Method": "Method",
|
||||
"Headers": "Headers",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Body": "Body",
|
||||
"No Error on Failure": "No Error on Failure",
|
||||
"Timeout (in seconds)": "Timeout (in seconds)",
|
||||
"The prompt to generate content from.": "The prompt to generate content from.",
|
||||
"The model which will generate the completion": "The model which will generate the completion",
|
||||
"The image to generate content from.": "The image to generate content from.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.",
|
||||
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "PUT",
|
||||
"DELETE": "DELETE",
|
||||
"HEAD": "HEAD"
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
"Use the new Gemini models from Google": "Use the new Gemini models from Google",
|
||||
"\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n": "\nFollow these instructions to get your API Key:\n1. Visit the following website: https://makersuite.google.com/app/apikey\n2. Once on the website, locate and click on the option to obtain your API Key.\nPlease note this piece uses a API in the beta phase that may change at any time.\n",
|
||||
"Generate Content": "Generate Content",
|
||||
"Generate Content from Image": "Generate Content from Image",
|
||||
"Chat Gemini": "Chat Gemini",
|
||||
"Text to Speech": "Text to Speech",
|
||||
"Custom API Call": "自定义 API 呼叫",
|
||||
"Generate content using Google Gemini using the \"gemini-pro\" model": "Generate content using Google Gemini using the \"gemini-pro\" model",
|
||||
"Generate content using Google Gemini using the \"gemini-pro-vision\" model": "Generate content using Google Gemini using the \"gemini-pro-vision\" model",
|
||||
"Chat with Google Gemini": "Chat with Google Gemini",
|
||||
"Converts text to audio file.": "Converts text to audio file.",
|
||||
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
|
||||
"Prompt": "Prompt",
|
||||
"Model": "Model",
|
||||
"Image": "Image",
|
||||
"Memory Key": "内存键",
|
||||
"Input Text": "Input Text",
|
||||
"Voice": "Voice",
|
||||
"Method": "方法",
|
||||
"Headers": "信头",
|
||||
"Query Parameters": "查询参数",
|
||||
"Body": "正文内容",
|
||||
"Response is Binary ?": "Response is Binary ?",
|
||||
"No Error on Failure": "失败时没有错误",
|
||||
"Timeout (in seconds)": "超时(秒)",
|
||||
"The prompt to generate content from.": "The prompt to generate content from.",
|
||||
"The model which will generate the completion": "The model which will generate the completion",
|
||||
"The image to generate content from.": "The image to generate content from.",
|
||||
"A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.": "A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.",
|
||||
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
|
||||
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
|
||||
"Gemini 2.5 Pro Preview TTS ": "Gemini 2.5 Pro Preview TTS ",
|
||||
"Gemini 2.5 Flash Preview TTS": "Gemini 2.5 Flash Preview TTS",
|
||||
"Zephyr (Bright)": "Zephyr (Bright)",
|
||||
"Puck (Upbeat)": "Puck (Upbeat)",
|
||||
"Charon (Informative)": "Charon (Informative)",
|
||||
"Kore (Firm)": "Kore (Firm)",
|
||||
"Fenrir (Excitable)": "Fenrir (Excitable)",
|
||||
"Leda (Youthful)": "Leda (Youthful)",
|
||||
"Orus (Firm)": "Orus (Firm)",
|
||||
"Aoede (Breezy)": "Aoede (Breezy)",
|
||||
"Callirrhoe (Easy-going)": "Callirrhoe (Easy-going)",
|
||||
"Autonoe (Bright)": "Autonoe (Bright)",
|
||||
"Enceladus (Breathy)": "Enceladus (Breathy)",
|
||||
"Iapetus (Clear)": "Iapetus (Clear)",
|
||||
"Umbriel (Easy-going)": "Umbriel (Easy-going)",
|
||||
"Algieba (Smooth)": "Algieba (Smooth)",
|
||||
"Despina (Smooth)": "Despina (Smooth)",
|
||||
"Erinome (Clear)": "Erinome (Clear)",
|
||||
"Algenib (Gravelly)": "Algenib (Gravelly)",
|
||||
"Rasalgethi (Informative)": "Rasalgethi (Informative)",
|
||||
"Laomedeia (Upbeat)": "Laomedeia (Upbeat)",
|
||||
"Achernar (Soft)": "Achernar (Soft)",
|
||||
"Alnilam (Firm)": "Alnilam (Firm)",
|
||||
"Schedar (Even)": "Schedar (Even)",
|
||||
"Gacrux (Mature)": "Gacrux (Mature)",
|
||||
"Pulcherrima (Forward)": "Pulcherrima (Forward)",
|
||||
"Achird (Friendly)": "Achird (Friendly)",
|
||||
"Zubenelgenubi (Casual)": "Zubenelgenubi (Casual)",
|
||||
"Vindemiatrix (Gentle)": "Vindemiatrix (Gentle)",
|
||||
"Sadachbia (Lively)": "Sadachbia (Lively)",
|
||||
"Sadaltager (Knowledgeable)": "Sadaltager (Knowledgeable)",
|
||||
"Sulafat (Warm)": "Sulafat (Warm)",
|
||||
"GET": "获取",
|
||||
"POST": "帖子",
|
||||
"PATCH": "PATCH",
|
||||
"PUT": "弹出",
|
||||
"DELETE": "删除",
|
||||
"HEAD": "黑色"
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
import {
|
||||
createCustomApiCallAction,
|
||||
httpClient,
|
||||
HttpMethod,
|
||||
} from '@activepieces/pieces-common';
|
||||
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
import { chatGemini } from './lib/actions/chat-gemini.action';
|
||||
import { generateContentFromImageAction } from './lib/actions/generate-content-from-image.action';
|
||||
import { generateContentAction } from './lib/actions/generate-content.action';
|
||||
import { textToSpeechAction } from './lib/actions/text-to-speech.action';
|
||||
import { generateContentWithFileSearchAction } from './lib/actions/generate-content-with-file-search';
|
||||
|
||||
const markdownDescription = `
|
||||
Follow these instructions to get your API Key:
|
||||
1. Visit the following website: https://makersuite.google.com/app/apikey
|
||||
2. Once on the website, locate and click on the option to obtain your API Key.
|
||||
Please note this piece uses a API in the beta phase that may change at any time.
|
||||
`;
|
||||
|
||||
export const googleGeminiAuth = PieceAuth.SecretText({
|
||||
description: markdownDescription,
|
||||
displayName: 'API Key',
|
||||
required: true,
|
||||
validate: async (auth) => {
|
||||
try {
|
||||
await httpClient.sendRequest<{
|
||||
data: { id: string }[];
|
||||
}>({
|
||||
url:
|
||||
'https://generativelanguage.googleapis.com/v1beta/models?key=' +
|
||||
auth.auth,
|
||||
method: HttpMethod.GET,
|
||||
});
|
||||
return {
|
||||
valid: true,
|
||||
};
|
||||
} catch (e: any) {
|
||||
const extraErrorInfo = e.response?.body?.error?.message
|
||||
? `${e.response?.body?.error?.message} status:${e.response?.body?.error?.code}`
|
||||
: e;
|
||||
return {
|
||||
valid: false,
|
||||
error: `${extraErrorInfo}`,
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export const googleGemini = createPiece({
|
||||
displayName: 'Google Gemini',
|
||||
auth: googleGeminiAuth,
|
||||
description: 'Use the new Gemini models from Google',
|
||||
minimumSupportedRelease: '0.30.0',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/google-gemini.png',
|
||||
categories: [PieceCategory.ARTIFICIAL_INTELLIGENCE],
|
||||
authors: ["pfernandez98","kishanprmr","MoShizzle","AbdulTheActivePiecer","abuaboud"],
|
||||
actions: [
|
||||
generateContentAction,
|
||||
generateContentWithFileSearchAction,
|
||||
generateContentFromImageAction,
|
||||
chatGemini,
|
||||
textToSpeechAction,
|
||||
createCustomApiCallAction({
|
||||
baseUrl: () => {
|
||||
return 'https://generativelanguage.googleapis.com/v1beta';
|
||||
},
|
||||
auth: googleGeminiAuth,
|
||||
authMapping: async (auth) => {
|
||||
return {
|
||||
Authorization: `Bearer ${auth.secret_text}`,
|
||||
};
|
||||
},
|
||||
}),
|
||||
],
|
||||
triggers: [],
|
||||
});
|
||||
@@ -0,0 +1,74 @@
|
||||
import { Content, GoogleGenerativeAI } from '@google/generative-ai';
|
||||
import {
|
||||
Property,
|
||||
StoreScope,
|
||||
createAction,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import mime from 'mime-types';
|
||||
import { z } from 'zod';
|
||||
import { googleGeminiAuth } from '../../index';
|
||||
import { defaultLLM, getGeminiModelOptions } from '../common/common';
|
||||
import { propsValidation } from '@activepieces/pieces-common';
|
||||
|
||||
export const chatGemini = createAction({
|
||||
auth: googleGeminiAuth,
|
||||
name: 'chat_gemini',
|
||||
displayName: 'Chat Gemini',
|
||||
description: 'Chat with Google Gemini',
|
||||
props: {
|
||||
model: Property.Dropdown({
|
||||
displayName: 'Model',
|
||||
required: true,
|
||||
description: 'The model which will generate the completion',
|
||||
refreshers: [],
|
||||
auth: googleGeminiAuth,
|
||||
defaultValue: defaultLLM,
|
||||
options: async ({ auth }) => getGeminiModelOptions({ auth }),
|
||||
}),
|
||||
prompt: Property.LongText({
|
||||
displayName: 'Prompt',
|
||||
required: true,
|
||||
description: 'The prompt to generate content from.',
|
||||
}),
|
||||
memoryKey: Property.ShortText({
|
||||
displayName: 'Memory Key',
|
||||
description:
|
||||
'A memory key that will keep the chat history. Keep it empty to leave Gemini without memory of previous messages.',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue, store }) {
|
||||
await propsValidation.validateZod(propsValue, {
|
||||
memoryKey: z.string().max(128).optional(),
|
||||
});
|
||||
|
||||
const { model, prompt, memoryKey } = propsValue;
|
||||
const genAI = new GoogleGenerativeAI(auth.secret_text);
|
||||
const geminiModel = genAI.getGenerativeModel({ model });
|
||||
let history: Content[] = [];
|
||||
|
||||
if (memoryKey) {
|
||||
const storedHistory = await store.get(memoryKey, StoreScope.PROJECT);
|
||||
if (Array.isArray(storedHistory)) {
|
||||
history = storedHistory;
|
||||
}
|
||||
}
|
||||
|
||||
const chat = geminiModel.startChat({
|
||||
history: history,
|
||||
});
|
||||
|
||||
const result = await chat.sendMessage(prompt);
|
||||
const responseText = result.response.text();
|
||||
|
||||
if (memoryKey) {
|
||||
const updatedHistory = await chat.getHistory();
|
||||
await store.put(memoryKey, updatedHistory, StoreScope.PROJECT);
|
||||
}
|
||||
|
||||
return {
|
||||
response: responseText,
|
||||
history: history,
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,80 @@
|
||||
import { promises as fs } from 'fs';
|
||||
import { tmpdir } from 'os';
|
||||
import { join } from 'path';
|
||||
import { GoogleGenerativeAI } from '@google/generative-ai';
|
||||
import { GoogleAIFileManager } from '@google/generative-ai/server';
|
||||
import { nanoid } from 'nanoid';
|
||||
import {
|
||||
Property,
|
||||
createAction,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { googleGeminiAuth } from '../../index';
|
||||
import { defaultLLM, getGeminiModelOptions } from '../common/common';
|
||||
|
||||
export const generateContentFromImageAction = createAction({
|
||||
description:
|
||||
'Generate content using Google Gemini using the "gemini-pro-vision" model',
|
||||
displayName: 'Generate Content from Image',
|
||||
name: 'generate_content_from_image',
|
||||
auth: googleGeminiAuth,
|
||||
props: {
|
||||
prompt: Property.LongText({
|
||||
displayName: 'Prompt',
|
||||
required: true,
|
||||
description: 'The prompt to generate content from.',
|
||||
}),
|
||||
image: Property.File({
|
||||
displayName: 'Image',
|
||||
required: true,
|
||||
description: 'The image to generate content from.'
|
||||
}),
|
||||
model: Property.Dropdown({
|
||||
displayName: 'Model',
|
||||
auth: googleGeminiAuth,
|
||||
required: true,
|
||||
description: 'The model which will generate the completion',
|
||||
refreshers: [],
|
||||
defaultValue: defaultLLM,
|
||||
options: async ({ auth }) =>
|
||||
getGeminiModelOptions({ auth }),
|
||||
}),
|
||||
},
|
||||
|
||||
async run({ auth, propsValue }) {
|
||||
const tempFilePath = join(tmpdir(), `gemini-image-${nanoid()}.${propsValue.image.extension}`);
|
||||
|
||||
try {
|
||||
const imageBuffer = Buffer.from(propsValue.image.base64, 'base64');
|
||||
await fs.writeFile(tempFilePath, imageBuffer);
|
||||
|
||||
const fileManager = new GoogleAIFileManager(auth?.secret_text);
|
||||
const uploadResult = await fileManager.uploadFile(tempFilePath, {
|
||||
mimeType: `image/${propsValue.image.extension}`,
|
||||
displayName: propsValue.image.filename,
|
||||
});
|
||||
|
||||
const genAI = new GoogleGenerativeAI(auth.secret_text);
|
||||
const model = genAI.getGenerativeModel({ model: propsValue.model });
|
||||
const result = await model.generateContent([
|
||||
propsValue.prompt,
|
||||
{
|
||||
fileData: {
|
||||
fileUri: uploadResult.file.uri,
|
||||
mimeType: uploadResult.file.mimeType,
|
||||
},
|
||||
},
|
||||
]);
|
||||
|
||||
const response = await result.response;
|
||||
return {
|
||||
text: response.text(),
|
||||
raw: response,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Error in generate content from image:', error);
|
||||
throw error;
|
||||
} finally {
|
||||
await fs.unlink(tempFilePath).catch(() => void 0);
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,91 @@
|
||||
import { googleGeminiAuth } from '../../index';
|
||||
import { Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { defaultLLM, getGeminiModelOptions } from '../common/common';
|
||||
import { GoogleGenAI } from '@google/genai';
|
||||
import { promises as fs } from 'fs';
|
||||
import { tmpdir } from 'os';
|
||||
import { join } from 'path';
|
||||
import { nanoid } from 'nanoid';
|
||||
|
||||
export const generateContentWithFileSearchAction = createAction({
|
||||
description: 'Generate content with file search functionality.',
|
||||
displayName: 'Generate Content with File Search',
|
||||
name: 'generate_content_with_filesearch',
|
||||
auth: googleGeminiAuth,
|
||||
props: {
|
||||
prompt: Property.LongText({
|
||||
displayName: 'Prompt',
|
||||
required: true,
|
||||
description: 'The prompt to generate content from.',
|
||||
}),
|
||||
model: Property.Dropdown({
|
||||
displayName: 'Model',
|
||||
auth: googleGeminiAuth,
|
||||
required: true,
|
||||
description: 'The model which will generate the completion',
|
||||
refreshers: [],
|
||||
defaultValue: defaultLLM,
|
||||
options: async ({ auth }) => getGeminiModelOptions({ auth }),
|
||||
}),
|
||||
fileStoreName: Property.ShortText({
|
||||
displayName: 'File Store Name',
|
||||
required: true,
|
||||
}),
|
||||
file: Property.File({
|
||||
displayName: 'File',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const { file, fileStoreName, model, prompt } = propsValue;
|
||||
const tempFilePath = join(
|
||||
tmpdir(),
|
||||
`gemini-file-${nanoid()}.${file.extension}`
|
||||
);
|
||||
|
||||
try {
|
||||
const fileBuffer = Buffer.from(file.base64, 'base64');
|
||||
await fs.writeFile(tempFilePath, fileBuffer);
|
||||
|
||||
const genAI = new GoogleGenAI({ apiKey: auth.secret_text });
|
||||
|
||||
const fileSearchStore = await genAI.fileSearchStores.create({
|
||||
config: { displayName: fileStoreName },
|
||||
});
|
||||
|
||||
let operation = await genAI.fileSearchStores.uploadToFileSearchStore({
|
||||
file: tempFilePath,
|
||||
fileSearchStoreName: fileSearchStore.name!,
|
||||
config: {
|
||||
displayName: file.filename,
|
||||
},
|
||||
});
|
||||
|
||||
while (!operation.done) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 5000));
|
||||
operation = await genAI.operations.get({ operation });
|
||||
}
|
||||
|
||||
const response = await genAI.models.generateContent({
|
||||
model: model,
|
||||
contents: prompt,
|
||||
config: {
|
||||
tools: [
|
||||
{
|
||||
fileSearch: {
|
||||
fileSearchStoreNames: [fileSearchStore.name!],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
return response.text;
|
||||
} catch (error) {
|
||||
console.error('Error in generate content:', error);
|
||||
throw error;
|
||||
} finally {
|
||||
await fs.unlink(tempFilePath).catch(() => void 0);
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,198 @@
|
||||
import { googleGeminiAuth } from '../../index';
|
||||
import { ApFile, DynamicPropsValue, Property, createAction } from '@activepieces/pieces-framework';
|
||||
import { defaultLLM, getGeminiModelOptions } from '../common/common';
|
||||
import { GenerateContentParameters, GoogleGenAI } from '@google/genai';
|
||||
import { isEmpty, MarkdownVariant } from '@activepieces/shared';
|
||||
import { tmpdir } from 'os';
|
||||
import { join } from 'path';
|
||||
import { nanoid } from 'nanoid';
|
||||
import { promises as fs } from 'fs';
|
||||
|
||||
export const generateContentAction = createAction({
|
||||
description: 'Generate content using Google Gemini using the "gemini-pro" model',
|
||||
displayName: 'Generate Content',
|
||||
name: 'generate_content',
|
||||
auth: googleGeminiAuth,
|
||||
props: {
|
||||
prompt: Property.LongText({
|
||||
displayName: 'Prompt',
|
||||
required: true,
|
||||
description: 'The prompt to generate content from.',
|
||||
}),
|
||||
model: Property.Dropdown({
|
||||
displayName: 'Model',
|
||||
required: true,
|
||||
description: 'The model which will generate the completion',
|
||||
refreshers: [],
|
||||
defaultValue: defaultLLM,
|
||||
auth: googleGeminiAuth,
|
||||
options: async ({ auth }) => getGeminiModelOptions({ auth }),
|
||||
}),
|
||||
toolType: Property.StaticDropdown({
|
||||
displayName: 'Tool Type',
|
||||
description: 'Select built-in tool to use with Gemini model.',
|
||||
required: false,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: 'Google Search', value: 'google-search' },
|
||||
{ label: 'File Search', value: 'file-search' },
|
||||
{ label: 'Google Maps', value: 'google-maps' },
|
||||
{ label: 'URL Context', value: 'url-context' },
|
||||
],
|
||||
},
|
||||
}),
|
||||
toolProperties: Property.DynamicProperties({
|
||||
displayName: 'Tool Config',
|
||||
auth: googleGeminiAuth,
|
||||
refreshers: ['toolType'],
|
||||
required: false,
|
||||
props: async ({ auth, toolType }) => {
|
||||
if (!auth || !toolType) return {};
|
||||
|
||||
let props: DynamicPropsValue = {};
|
||||
|
||||
switch (toolType) {
|
||||
case 'file-search':
|
||||
props = {
|
||||
file: Property.File({
|
||||
displayName: 'File',
|
||||
required: true,
|
||||
description: 'File to use for search tool.',
|
||||
}),
|
||||
fileStoreName: Property.ShortText({
|
||||
displayName: 'File Store Name',
|
||||
required: true,
|
||||
}),
|
||||
};
|
||||
break;
|
||||
case 'url-context':
|
||||
props = {
|
||||
mrkdown: Property.MarkDown({
|
||||
variant: MarkdownVariant.INFO,
|
||||
value:
|
||||
'To use URL context tool, include one or more URLs directly in the prompt. Gemini will fetch and use the page content as additional context.',
|
||||
}),
|
||||
};
|
||||
break;
|
||||
case 'google-search':
|
||||
props = {
|
||||
mrkdown: Property.MarkDown({
|
||||
variant: MarkdownVariant.INFO,
|
||||
value:
|
||||
'To use Google Search tool, include a clear search query in the prompt. Gemini will use Google Search to retrieve up-to-date web information.',
|
||||
}),
|
||||
};
|
||||
break;
|
||||
case 'google-maps':
|
||||
props = {
|
||||
latitude: Property.Number({
|
||||
displayName: 'Latitude',
|
||||
required: true,
|
||||
description: 'Provide the relevant location latitude.',
|
||||
}),
|
||||
longitude: Property.Number({
|
||||
displayName: 'Longitude',
|
||||
required: true,
|
||||
description: 'Provide the relevant location longitude.',
|
||||
}),
|
||||
};
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return props;
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run({ auth, propsValue }) {
|
||||
const { model, prompt, toolType } = propsValue;
|
||||
const toolProperties = propsValue.toolProperties ?? {};
|
||||
|
||||
const genAI = new GoogleGenAI({ apiKey: auth.secret_text });
|
||||
|
||||
const params: GenerateContentParameters = {
|
||||
model,
|
||||
contents: prompt,
|
||||
};
|
||||
|
||||
const generate = async () => {
|
||||
const response = await genAI.models.generateContent(params);
|
||||
return response.text;
|
||||
};
|
||||
|
||||
if (isEmpty(toolType)) {
|
||||
return generate();
|
||||
}
|
||||
|
||||
switch (toolType) {
|
||||
case 'file-search': {
|
||||
const { file, fileStoreName } = toolProperties as { file: ApFile; fileStoreName: string };
|
||||
|
||||
const tempFilePath = join(tmpdir(), `gemini-file-${nanoid()}.${file.extension}`);
|
||||
|
||||
const fileBuffer = Buffer.from(file.base64, 'base64');
|
||||
await fs.writeFile(tempFilePath, fileBuffer);
|
||||
|
||||
const fileSearchStore = await genAI.fileSearchStores.create({
|
||||
config: { displayName: fileStoreName },
|
||||
});
|
||||
|
||||
let operation = await genAI.fileSearchStores.uploadToFileSearchStore({
|
||||
file: tempFilePath,
|
||||
fileSearchStoreName: fileSearchStore.name!,
|
||||
config: {
|
||||
displayName: file.filename,
|
||||
},
|
||||
});
|
||||
while (!operation.done) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 5000));
|
||||
operation = await genAI.operations.get({ operation });
|
||||
}
|
||||
|
||||
params.config = {
|
||||
tools: [
|
||||
{
|
||||
fileSearch: {
|
||||
fileSearchStoreNames: [fileSearchStore.name!],
|
||||
},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
break;
|
||||
}
|
||||
case 'url-context': {
|
||||
params.config = {
|
||||
tools: [{ urlContext: {} }],
|
||||
};
|
||||
break;
|
||||
}
|
||||
case 'google-search': {
|
||||
params.config = {
|
||||
tools: [{ googleSearch: {} }],
|
||||
};
|
||||
break;
|
||||
}
|
||||
case 'google-maps': {
|
||||
const { latitude, longitude } = toolProperties as { latitude: number; longitude: number };
|
||||
|
||||
params.config = {
|
||||
tools: [{ googleMaps: {} }],
|
||||
toolConfig: {
|
||||
retrievalConfig: {
|
||||
latLng: {
|
||||
latitude,
|
||||
longitude,
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return generate();
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,148 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { googleGeminiAuth } from '../..';
|
||||
import { GoogleGenAI } from '@google/genai';
|
||||
import wav from 'wav';
|
||||
import { Writable } from 'stream';
|
||||
|
||||
export const textToSpeechAction = createAction({
|
||||
name: 'text-to-speech',
|
||||
auth: googleGeminiAuth,
|
||||
displayName: 'Text to Speech',
|
||||
description: 'Converts text to audio file.',
|
||||
props: {
|
||||
model: Property.StaticDropdown({
|
||||
displayName: 'Model',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{
|
||||
label: 'Gemini 2.5 Pro Preview TTS ',
|
||||
value: 'gemini-2.5-pro-preview-tts',
|
||||
},
|
||||
{
|
||||
label: 'Gemini 2.5 Flash Preview TTS',
|
||||
value: 'gemini-2.5-flash-preview-tts',
|
||||
},
|
||||
],
|
||||
},
|
||||
}),
|
||||
text: Property.LongText({
|
||||
displayName: 'Input Text',
|
||||
required: true,
|
||||
}),
|
||||
voice: Property.StaticDropdown({
|
||||
displayName: 'Voice',
|
||||
required: true,
|
||||
options: {
|
||||
disabled: false,
|
||||
options: [
|
||||
{ label: 'Zephyr (Bright)', value: 'Zephyr' },
|
||||
{ label: 'Puck (Upbeat)', value: 'Puck' },
|
||||
{ label: 'Charon (Informative)', value: 'Charon' },
|
||||
{ label: 'Kore (Firm)', value: 'Kore' },
|
||||
{ label: 'Fenrir (Excitable)', value: 'Fenrir' },
|
||||
{ label: 'Leda (Youthful)', value: 'Leda' },
|
||||
{ label: 'Orus (Firm)', value: 'Orus' },
|
||||
{ label: 'Aoede (Breezy)', value: 'Aoede' },
|
||||
{ label: 'Callirrhoe (Easy-going)', value: 'Callirrhoe' },
|
||||
{ label: 'Autonoe (Bright)', value: 'Autonoe' },
|
||||
{ label: 'Enceladus (Breathy)', value: 'Enceladus' },
|
||||
{ label: 'Iapetus (Clear)', value: 'Iapetus' },
|
||||
{ label: 'Umbriel (Easy-going)', value: 'Umbriel' },
|
||||
{ label: 'Algieba (Smooth)', value: 'Algieba' },
|
||||
{ label: 'Despina (Smooth)', value: 'Despina' },
|
||||
{ label: 'Erinome (Clear)', value: 'Erinome' },
|
||||
{ label: 'Algenib (Gravelly)', value: 'Algenib' },
|
||||
{ label: 'Rasalgethi (Informative)', value: 'Rasalgethi' },
|
||||
{ label: 'Laomedeia (Upbeat)', value: 'Laomedeia' },
|
||||
{ label: 'Achernar (Soft)', value: 'Achernar' },
|
||||
{ label: 'Alnilam (Firm)', value: 'Alnilam' },
|
||||
{ label: 'Schedar (Even)', value: 'Schedar' },
|
||||
{ label: 'Gacrux (Mature)', value: 'Gacrux' },
|
||||
{ label: 'Pulcherrima (Forward)', value: 'Pulcherrima' },
|
||||
{ label: 'Achird (Friendly)', value: 'Achird' },
|
||||
{ label: 'Zubenelgenubi (Casual)', value: 'Zubenelgenubi' },
|
||||
{ label: 'Vindemiatrix (Gentle)', value: 'Vindemiatrix' },
|
||||
{ label: 'Sadachbia (Lively)', value: 'Sadachbia' },
|
||||
{ label: 'Sadaltager (Knowledgeable)', value: 'Sadaltager' },
|
||||
{ label: 'Sulafat (Warm)', value: 'Sulafat' },
|
||||
],
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const { text, model, voice } = context.propsValue;
|
||||
|
||||
try {
|
||||
const genAI = new GoogleGenAI({ apiKey: context.auth.secret_text });
|
||||
|
||||
const response = await genAI.models.generateContent({
|
||||
model,
|
||||
contents: [{ parts: [{ text }] }],
|
||||
config: {
|
||||
responseModalities: ['AUDIO'],
|
||||
speechConfig: {
|
||||
voiceConfig: {
|
||||
prebuiltVoiceConfig: { voiceName: voice },
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const data =
|
||||
response.candidates?.[0]?.content?.parts?.[0]?.inlineData?.data;
|
||||
|
||||
if (!data) {
|
||||
throw new Error('No audio data returned from model response.');
|
||||
}
|
||||
|
||||
const pcmBuffer = Buffer.from(data, 'base64');
|
||||
const wavBuffer = await pcmToWavBuffer(pcmBuffer, 1, 24000, 2);
|
||||
|
||||
return await context.files.write({
|
||||
data: wavBuffer,
|
||||
fileName: 'audio.wav',
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error in generate content from image:', error);
|
||||
throw error;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
export async function pcmToWavBuffer(
|
||||
pcmBuffer: Buffer,
|
||||
channels = 1,
|
||||
rate = 24000,
|
||||
sampleWidth = 2
|
||||
): Promise<Buffer> {
|
||||
return new Promise<Buffer>((resolve, reject) => {
|
||||
const wavBuffers: Buffer[] = [];
|
||||
|
||||
const writer = new wav.Writer({
|
||||
channels,
|
||||
sampleRate: rate,
|
||||
bitDepth: sampleWidth * 8,
|
||||
});
|
||||
|
||||
const writable = new Writable({
|
||||
write(chunk: Buffer, _encoding, callback) {
|
||||
wavBuffers.push(chunk);
|
||||
callback();
|
||||
},
|
||||
});
|
||||
|
||||
writer.pipe(writable);
|
||||
writer.write(pcmBuffer);
|
||||
writer.end();
|
||||
|
||||
writer.on('finish', () => {
|
||||
const fullWavBuffer = Buffer.concat(wavBuffers);
|
||||
resolve(fullWavBuffer);
|
||||
});
|
||||
|
||||
writer.on('error', (err) => reject(err));
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
import { AppConnectionValueForAuthProperty } from '@activepieces/pieces-framework';
|
||||
import { googleGeminiAuth } from '../..';
|
||||
export const defaultLLM = 'gemini-1.5-flash';
|
||||
|
||||
export const allowedLLMs = [
|
||||
'gemini-1.5-flash',
|
||||
'gemini-1.5-flash-8b',
|
||||
'gemini-1.5-pro',
|
||||
'gemini-2.0-flash',
|
||||
'gemini-2.0-flash-lite',
|
||||
'gemini-2.5-flash',
|
||||
'gemini-2.5-pro',
|
||||
'gemini-3-pro'
|
||||
];
|
||||
|
||||
export const getGeminiModelOptions = async ({ auth}: { auth?: AppConnectionValueForAuthProperty<typeof googleGeminiAuth> }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
placeholder: 'Enter your API key first',
|
||||
options: [],
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const { body } = await httpClient.sendRequest<{
|
||||
models: { name: string; displayName: string }[];
|
||||
}>({
|
||||
method: HttpMethod.GET,
|
||||
url: `https://generativelanguage.googleapis.com/v1beta/models?key=${auth.secret_text}`,
|
||||
});
|
||||
const options = body.models
|
||||
.filter((model) =>
|
||||
allowedLLMs.some((allowed) =>
|
||||
model.name.startsWith(`models/${allowed}`)
|
||||
)
|
||||
)
|
||||
.map((model) => ({
|
||||
label: model.displayName,
|
||||
value: model.name.replace('models/', ''),
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options,
|
||||
};
|
||||
} catch {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: "Couldn't load models, API key is invalid",
|
||||
};
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user