Доступ к API Google Palm из скрипта приложений
В настоящее время существует несколько текстов QuickStart для Palm API.
PaLM API: текстовый краткий старт
В примерах показано, как это сделать на Python, но я не нашел способа заставить это работать со скриптом Google Apps.
Могу ли я отправить запрос к этому API напрямую с помощью Apps Script или мне нужно подождать, пока они создадут библиотеку?
1 ответ
Мне не удалось найти никакой прямой информации о конечной точке для вызова, но Makersuite предоставил мне пример завитка, по которому я затем смог выяснить, как выглядит вызов.
curl \
-H 'Content-Type: application/json' \
-X POST 'https://generativelanguage.googleapis.com/v1beta2/models/text-bison-001:generateText?key='${API_KEY} \
-d '{ "prompt": { "text": "Write a poem about an adventure in an underwater castle\n\n"}, "temperature": 0.7, "top_k": 40, "top_p": 0.95, "candidate_count": 1, "max_output_tokens": 1024, "stop_sequences": [], "safety_settings": [{"category":"HARM_CATEGORY_DEROGATORY","threshold":1},{"category":"HARM_CATEGORY_TOXICITY","threshold":1},{"category":"HARM_CATEGORY_VIOLENCE","threshold":2},{"category":"HARM_CATEGORY_SEXUAL","threshold":2},{"category":"HARM_CATEGORY_MEDICAL","threshold":2},{"category":"HARM_CATEGORY_DANGEROUS","threshold":2}]}'
Затем я смог использовать UrlFetchApp.fetch для доступа к данным API PALM напрямую через скрипт приложения. Кажется, это работает хорошо, пока для него не создадут библиотеку.
function myFunction() {
// Make a POST request with form data.
var data = {
"prompt": {
"text": "Write a story about a magic backpack."
},
"temperature": 1.0,
"candidateCount": 2};
var options = {
'method' : 'post',
'contentType': 'application/json',
// Convert the JavaScript object to a JSON string.
'payload' : JSON.stringify(data)
};
try {
const response = UrlFetchApp.fetch('https://generativelanguage.googleapis.com/v1beta2/models/text-bison-001:generateText?key=REDACTED', options);
Logger.log(response);
const data = JSON.parse(response.getContentText());
Logger.log(data.candidates[0].output);
} catch (f) {
Logger.log(f.message);
}
}
Сложнее всего было проанализировать ответ. Он возвращает массив, иногда может быть более одного кандидата.