Google Sheets ChatGPT, GPT-4, Claude Sonnet в таблицах Google
17 июля 2024 г.
Как использовать ChatGPT в таблицах Google Sheets – самая простая инструкция
Вариант 1: Функция для таблицы
Важно: при таком варианте каждый раз при загрузке таблицы ячейки будут пересчитываться – а значит, будет вызываться платное API.
Этот вариант рекомендуется для тестирования, а для практики лучше взять Вариант 2.
Этот вариант рекомендуется для тестирования, а для практики лучше взять Вариант 2.
Инструкция по интеграции:
1. Заходим в Apps Script – нам нужно создать специальную функцию для вызова ChatGPT
2. Вводим функцию (текст ниже скриншота). Заменяем API ключ на свой, модель на свою (необязательно), сохраняем.
Текст функции
/**
* Return a ChatGPT response from VseGPT a given prompt
* @constructor
* @param {string} prompt - the request prompt to be processed by ChatGPT
* @param {number} temperature [OPTIONAL] - How random the responses will be from 0 to 2 - Default is 0.7
* @param {integer} maxLeght [OPTIONAL] - The maximum number of tokens used to generate a response - Default is 256
* @param {number} topP [OPTIONAL] - Get the top X% of the sampling pool from 0 to 1 - Default is 1
* @param {number} frequencyPenalty [OPTIONAL] - Positive values make it less likely to repeat the same lines verbatim, from -2 to 2 - Default is 0
* @param {number} presencePenalty [OPTIONAL] - Positive values make it more likely to talk about new topics, from -2 to 2 - Default is 0
* @customfunction
*/
function chatGPT( prompt = "Hello!", temperature = 0.7, maxLeght = 256, topP = 1, frequencyPenalty = 0, presencePenalty = 0) {
//use your API Key here
const apiKey = 'your api key;
//change the API URL here if you want to use a different API
const url = 'https://api.vsegpt.ru/v1/chat/completions';
//change the model here
const model = 'gpt-3.5-turbo';
//request along with the parameters
const request = {
model: model,
messages: [{"role": "user", "content": prompt}],
temperature: temperature,
top_p: topP,
max_tokens: maxLeght,
frequency_penalty: frequencyPenalty,
presence_penalty: presencePenalty
};
//headers
const data = {
contentType: "application/json",
headers: { Authorization: "Bearer "+ apiKey, 'X-Title': "Google Sheets function" },
payload: JSON.stringify(request),
};
//connect to the OpenAI API, sending the headers and parse the JSON response
const response = JSON.parse(UrlFetchApp.fetch(url, data).getContentText());
//add the response message to the return array
return response.choices[0].message.content;
}
3. Вызываем функцию в Google Sheets. Все работает!
Вариант 2: Кнопка для разового вычисления текста по нажатию (рекомендуется)
Этот вариант рекомендуется, т.к. в нем обращения к платному API идет один раз.
Но его рекомендуется адаптировать под ваши нужды.
Но его рекомендуется адаптировать под ваши нужды.
1. Сделайте все, указанное в Варианте 1 – в частности, добавьте функцию chatGPT
2. Добавьте также этот скрипт, новую функцию buttonGPT
function buttonGPT() {
// Select a file
const ss = SpreadsheetApp.getActiveSpreadsheet();
// Selecting each of the sheets in a variable
const raw = ss.getSheetByName('List1');
// Получаем последнюю строку
const lastRow = raw.getLastRow();
// Получаем промт - первая ячейка в последней строке
const prompt = raw.getRange(lastRow, 1).getValue();
// Получаем результат запроса
var contents = chatGPT(prompt);
// Добавляем во вторую колонку результат запроса
raw.getRange(lastRow, 2).setValue(contents);
}
3. Переименуйте лист в List1 (по этому имени будет обращение к листу) и запустите функцию buttonGPT.
Или: нарисуйте кнопку (Вставка / Рисунок) и добавьте к ней вызов функции buttonGPT.
При вызове функции будет несколько окон, запрашивающих разрешение на выполнение скрипта.
Разрешите выполнение.
Разрешите выполнение.
Готово!
Вариант 3: Кнопка для массовой обработки строк по нажатию (рекомендуется)
Этот вариант рекомендуется, т.к. в нем обращения к платному API идет один раз на строку.
Но его рекомендуется адаптировать под ваши нужды.
Но его рекомендуется адаптировать под ваши нужды.
1. Сделайте все, указанное в Варианте 1 – в частности, добавьте функцию chatGPT
2. Добавьте также этот скрипт, новую функцию massProcessGPT
function massProcessGPT() {
// Select a file
const ss = SpreadsheetApp.getActiveSpreadsheet();
// Selecting sheet
const raw = ss.getSheetByName('List1');
// Get last row
const lastRow = raw.getLastRow();
// Process each row
for (let row = 1; row <= lastRow; row++) {
// Get prompt from first column
const prompt = raw.getRange(row, 1).getValue();
// Get current result from second column
const currentResult = raw.getRange(row, 2).getValue();
// Skip if already processed (not empty and not "...")
if (currentResult !== "" && currentResult !== "...") {
continue;
}
// Set "..." as processing indicator
raw.getRange(row, 2).setValue("...");
// Get response from ChatGPT
const contents = chatGPT(prompt);
// Set result
raw.getRange(row, 2).setValue(contents);
// Delay 1000ms between requests
Utilities.sleep(1000);
}
}
3. Переименуйте лист в List1 (по этому имени будет обращение к листу) и запустите функцию massProcessGPT.
Или: нарисуйте кнопку (Вставка / Рисунок) и добавьте к ней вызов функции massProcessGPT.
При вызове функции будет несколько окон, запрашивающих разрешение на выполнение скрипта.
Разрешите выполнение.
Разрешите выполнение.
Готово!
Дополнительная информация
Если вы получаете ошибку 429 – «слишком частые запросы к API» – вы можете добавить функцию, которая добавит задержку между вызовами API.
Utilities.sleep(1000)
https://stackoverflow.com/questions/11142109/how-to-use-utilities-sleep-function