Publicado el 20 de septiembre del 2024 por Lino Uruñuela
Casi todo el mundo está acostumbrado a utilizar Gemini desde la propia web de Google en AI Studio, y por supuesto habrá personas que utilicen Gemini mediante la API, Normalmente se utiliza Python para desarrollar casi cualquier cosa que tenga que ver con la IA y los grandes LLMs, pero no es obligatorio y podemos realizar llamadas a la API de Gemini casi desde cualquier sitio.
Ayer estuve jugando un poco con la API de Google Gemini desde la línea de conandos de Linux, es muy sencillo ejecutar un prompt, simplemente copia y pega el comando que la propia web de Gemini te facilita. Una de las limitaciones en la opción gratuita es los límites que tiene lo que hace que para tareas a escala no es una opción, pero sí podría serlo para otrass,
Límites en el uso de Google Gemini en el nivel gratuito:
15 RPM (solicitudes por minuto)
1 millón de TPM (tokens por minuto)
1,500 RPD (solicitudes por día)
Hoy qyuería mostraros cómo ejecuto Gemii desde el terminal de comandos, vamos con un simple ejemplo dónde comenzarenos por extraer los datos de palabras relacionadas oara el térnino 'iPhone 16', para ello usarenmos la API abierta de KWsurfer, posteriormente le pediremos al modelo de Gemini que extraiga los datos, t que los complete.
Para comenzar, vamos obtener dede el terminal una lista de palabras clave relacionadas con "iPhone 16".
curl 'https://db2.keywordsur.fr/keyword_surfer_keywords?country=ES&keywords=%5B%22iphone%2016%22%5D'
Este comando hace una solicitud a la API y devuelve un JSON con palabras clave relacionadas y sus volúmenes de búsqueda en fornatio JSON, concretamente la salida de este conando es;
{
"iphone 16": {
"categories": [
10007,
10878,
13381,
12161,
13054
],
"competition": 0.31,
"cpc": 0.38,
"search_volume": 33100,
"similar_keywords": [
{
"keyword": "el iphone 16",
"country": "ES",
"overlapping_pages": 11,
"search_volume": 170,
"cpc": 0.57
},
{
"keyword": "iphone 16 pro max",
"country": "ES",
"overlapping_pages": 7,
"search_volume": 8100,
"cpc": 0.39
},
{
"keyword": "iphone 16 pro",
"country": "ES",
"overlapping_pages": 7,
"search_volume": 2900,
"cpc": 0.38
},
{
"keyword": "iphone 16 pro max precio",
"country": "ES",
"overlapping_pages": 6,
"search_volume": 480,
"cpc": 0.28
},
{
"keyword": "apple 16",
"country": "ES",
"overlapping_pages": 6,
"search_volume": 170,
"cpc": 0.42
},
{
"keyword": "iphone 16 pro max ultra",
"country": "ES",
"overlapping_pages": 6,
"search_volume": 170,
"cpc": 0.12
},
{
"keyword": "cuando sale el iphone 16",
"country": "ES",
"overlapping_pages": 5,
"search_volume": 1600,
"cpc": 2.64
},
{
"keyword": "cuando sale el proximo iphone",
"country": "ES",
"overlapping_pages": 5,
"search_volume": 260,
"cpc": 0.0
},
{
"keyword": "cuando sale el próximo iphone",
"country": "ES",
"overlapping_pages": 5,
"search_volume": 260,
"cpc": 0.0
},
{
"keyword": "cuándo sale el próximo iphone",
"country": "ES",
"overlapping_pages": 5,
"search_volume": 260,
"cpc": 0.0
}
]
}
}
Lo único que necistarás es optener tu API_KEY (gratuita) desde la propia web de Google Gemini
Ahora ejecute el siguiente comando, dónde simplemente saludamos con un "Hola":
curl -H 'Content-Type: application/json'
-d '{"contents":[{"parts":[{"text":"Hola"}]}]}'
-X POST 'https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=API_KEY'
La respuesta que recibimos será algo así:
{
"candidates": [
{
"content": {
"parts": [
{
"text": "¡Hola! ¿Cómo estás? ¿En qué puedo ayudarte hoy?
"
}
],
"role": "model"
},
"finishReason": "STOP",
"index": 0,
"safetyRatings": [
// ...
]
}
],
"usageMetadata": {
"promptTokenCount": 1,
"candidatesTokenCount": 14,
"totalTokenCount": 15
}
}
Para evitar escribir comandos largos cada vez que quramos usar este método para llamar a Gemini, crearemos una función de Bash llamada geminiF
a la cual se le pasará el prompt como parámetro, lo que facilitará la automatización del proceso,
Podemos ejecutar esta función directamente en el terminal
function geminiF() {
curl -H "Content-Type: application/json"
-d "{"contents":[{"parts":[{"text":"$1"}]}]}"
-X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash-latest:generateContent?key=API_KEY"
| jq -r ".candidates[]|.content.parts|.[].text"
| glow
Para poder ejecutar esta función como si de otro comandpo se tratase debenos exportarla a nuestro shell
export -f geminiF
y ya podenos probar la función
geminiF "hola"
Respuesta :
*¡Hola!*
¿Qué tal? ¿En qué puedo ayudarte hoy?
Uniremos la salida de dos comandos, uno el que hemos visto para solicitar KWs relacionadas a partir de una KW inicial, y la salida de ese comando se la pasaremos a Gemini indicando lo que queremos realizar con el JSON que recibimos.
curl 'https://db2.keywordsur.fr/keyword_surfer_keywords?country=ES&keywords=%5B%22iphone%2016%22%5D'
| xargs -I {} bash -c 'geminiF "Obten las palabras clave relacionadas y el volumen de cada una de este JSON: {}
, añade a la lista más términos relacionados para usuarios en España y muestra el resultado en una única tabla en markdown, colorea en verde los términos procedentes del JSON"'
Aquí tenemos el resultado de nuestro comando, como véis es ka lista inicial que obtuvinos con el comando curl pero fornateada para que sea más legible y adenás con otras KWs relacionadas que ha añadido el Gemini.
Términos relacionados con "iPhone 16" en España:
| Palabra Clave | Volumen de Búsqueda | CPC |
|------------------------------------|---------------------|------|
| **iphone 16** | 33100 | 0.38 |
| **el iphone 16** | 170 | 0.57 |
| **iphone 16 pro max** | 8100 | 0.39 |
| **iphone 16 pro** | 2900 | 0.38 |
| **iphone 16 pro max precio** | 480 | 0.28 |
| **apple 16** | 170 | 0.42 |
| **iphone 16 pro max ultra** | 170 | 0.12 |
| **cuando sale el iphone 16** | 1600 | 2.64 |
| **cuando sale el proximo iphone** | 260 | 0.00 |
| **cuando sale el próximo iphone** | 260 | 0.00 |
| **cuándo sale el próximo iphone** | 260 | 0.00 |
| iphone 16 precio | | |
| iphone 16 características | | |
| iphone 16 vs iphone 15 | | |
| iphone 16 oferta | | |
| comprar iphone 16 | | |
| iphone 16 segunda mano | | |
| iphone 16 nuevo | | |
| fundas iphone 16 | | |
| protectores iphone 16 | | |
| iphone 16 opiniones | | |
| iphone 16 vs samsung | | |
| iphone 16 fecha de lanzamiento | | |
| iphone 16 especificaciones | | |
| iphone 16 vs iphone 16 pro | | |
| iphone 16 pro max fecha lanzamiento| | |
| iphone 16 pro max especificaciones | | |
Nota: Las palabras clave en negrita y verde son las que proceden del JSON inicial.
En posteriores posts mostraré otros usoso que se me vayan ocurreindo,