Script para integrar OpenAI en Google Sheet

Con este sencillo script que puedes adaptar a tu gusto, integrarás GPT-3 de Open AI en una hoja de cálculo de Google Sheet.

Solo necesitas abrir en el menú de extensiones la opción para crear App Scripts y pegar el siguiente código.

/**Esta hoja agrega una opción a la barra superior de Google Sheet
 * para completar el rango seleccionado de la hoja usando 
 * el modelo de lenguaje GPT-3 de OpenAI.
 */

 var API_KEY = "OPEN-AI API KEY";
 
 var NUM_TOKENS = 64;
 function onOpen() {
   var spreadsheet = SpreadsheetApp.getActive();
   var menuItems = [
     {name: 'Rellena con GPT-3', functionName: 'gpt3fill'},
   ];
   spreadsheet.addMenu('GPT3', menuItems);
 }
 
 function _callAPI(prompt) {
   var data = {
     'prompt': prompt,
     'max_tokens': NUM_TOKENS,
     'temperature': 0.7,
   };
 
   var options = {
     'method' : 'post',
     'contentType': 'application/json',
     'payload' : JSON.stringify(data),
     'headers': {
       Authorization: 'Bearer ' + API_KEY,
     },
   };
 
   response = UrlFetchApp.fetch(
     'https://api.openai.com/v1/engines/davinci-instruct-beta-v3/completions',
     options,
   );
 
   return JSON.parse(response.getContentText())['choices'][0]['text']
 }
 
 function _parse_response(response) {
   var parsed_fill = response.slice(2, response.indexOf('Q: '));
 
   if (parsed_fill.charAt(parsed_fill.length - 1) == '.') {
     parsed_fill = parsed_fill.slice(0, -1);
   }
 
   return parsed_fill;
 }
 
 function get_x_of_y(x, y) {
   var prompt = "Escribe como será el horoscopo de la semana del signo " + y + " en " + x + "?"
   var response = _callAPI(prompt);
   var parsed_response = _parse_response(response);
   return parsed_response;
 }
 
 
 function gpt3fill() {
   /*
   Resalte un rango de X x Y donde la columna más a la izquierda contiene los horoscopos
   Y la fila de encabezado de una columna indica el tipo de predicción.
   Selecciona Completa los valores.
   */
   var spreadsheet = SpreadsheetApp.getActive();
   var range = spreadsheet.getActiveRange();
   var num_rows = range.getNumRows();
   var num_cols = range.getNumColumns();
 
   for (var x=2; x<num_cols + 1; x++) {
     property_name = range.getCell(1, x).getValue();
 
     for (var i=2; i<num_rows + 1; i++) {
       entity_name = range.getCell(i,1).getValue();
       fill_cell = range.getCell(i, x);
 
       result = get_x_of_y(property_name, entity_name);
 
       fill_cell.setValue([result]);
     }
   }
 }
  • El paso obligatorio es introducir tu API KEY: En la Línea 6 del código, en donde debes cambiar el valor: «OPEN-AI API KEY»; por tu clave API de OpenAI que será algo similar a esto «sk-S2gMdEfMK78bOXsC2……………………….AH2BMsVtJb»
  • El número de Tokens que marca el tamaño de la respuesta se asigna en la línea 8 en donde hemos indicado 64.
  • El modelo utilizado es «davinci-instruct-beta-v3» esto se indica en la dirección URL del «endpoint» que puedes modificar en la línea 34.
Hoja de Cálculo del Ejemplo
  • Para ver el resultado deberás crear una hoja de cálculo con los datos del ejemplo en el que en la columna A se indican los horoscopos y en la fila 1 las predicciones que queremos. El prompt que vamos a enviar a GPT3 es «var prompt = «Escribe cómo será el horóscopo de la semana del signo » + y + » en » + x + «?»» siéntete libre de modificar los datos de las columnas y/o filas y cambiar el «prompt» para obtener otros resultados.
  • Selecciona las celdas A1 hasta E5 y el contenido será rellenado por GPT3.

Deja un comentario