Uso de la API de Gemini desde la línea de comandos

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,

 

Cómo uso Gemini desde la línea de comandos

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.

 

Obtener palabras clave iniciales

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
      }
    ]
  }
}

 

Ejecutar Gemini desde el terminal

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
  }
}

 

Crear una función para simplificar las llamadas a Gemini

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?

 

Caso de uso: ampliar la lista de palabras clave

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"'

 

Resultado

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,

 

 

 




Lea otros artículos de Inteligencia Artificial para SEOs

Últimos posts

Últimos comentarios


Resham Singh Mahal

Post: Experimento para comprobar la teoría del primer enlace

Joakim Hov Johnsen

Post: Experimento para comprobar la teoría del primer enlace

Dana

Post: Experimento para comprobar la teoría del primer enlace

JaviLazaro
Ya me has dado la necesidad de crear un comaando en bash para hacer estas cosas. Gracias Lino por estos tips
Post: Obtener KWs de varias fuentes usando la línea de comandos

Señor Muñoz
Lino, el 11% más de clicks y el 47% más de impresiones diarias ¿es algo constante o depende de cada sitio web?
Post: Diferencias entre la exportación de datos de Search Console usando BigQuery o usando la API

Carlos
Hola En mi blog tengo artículos atemporales (es decir, no caducan nunca, de manera que sirve para quien lo lea hoy o lo lea dentro de 5
Post: Tratamiento de urls que tienen un tiempo de vida muy corto

Profe Ray
Veo que hay comentarios de hace 5 años y de hace 3 años. ¿Habrá algun post actualizado sobre este tema o sigue funcionando? Lo cierto es
Post: Cómo cargar css y js y no bloquear la carga de contenido

Pepe
Muchas gracias por el articulo!! Muy buena información.
Post: Qué es ofuscar enlaces y cómo mejora el enlazado interno

María
Sí, he buscado el archivo robots.txt y todo está correcto. La última versión vista con error fue el 08/11/2021 y la última vez que el
Post: Errores críticos originados por el robots.txt

Lino
@María un placer verte por aquí :) Lo primero, a veces, con el robots.txt no se puede "forzar" a que lo rastree, si tu site no es muy p
Post: Errores críticos originados por el robots.txt