|
const API_URL = "https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.3"; |
|
|
|
|
|
function onOpen() { |
|
const ui = SpreadsheetApp.getUi(); |
|
ui.createMenu('Hugging Sheets') |
|
.addItem('Enter your HF API Key', 'showApiKeyPrompt') |
|
.addToUi(); |
|
} |
|
|
|
|
|
function showApiKeyPrompt() { |
|
const ui = SpreadsheetApp.getUi(); |
|
const response = ui.prompt('Enter your Hugging Face API Key:'); |
|
if (response.getSelectedButton() == ui.Button.OK) { |
|
const apiKey = response.getResponseText(); |
|
PropertiesService.getScriptProperties().setProperty('HF_API_KEY', apiKey); |
|
ui.alert('API Key saved successfully!'); |
|
} |
|
} |
|
|
|
|
|
function queryHuggingFace(prompt, model) { |
|
const apiKey = PropertiesService.getScriptProperties().getProperty('HF_API_KEY'); |
|
if (!apiKey) { |
|
throw new Error('Please enter your Hugging Face API key using the menu.'); |
|
} |
|
|
|
const url = `https://api-inference.huggingface.co/models/${model}`; |
|
const headers = { |
|
"Authorization": `Bearer ${apiKey}`, |
|
"Content-Type": "application/json" |
|
}; |
|
|
|
|
|
const formattedPrompt = `<s> [INST] You are a helpful and honest assistant. Please, respond concisely and truthfully. [/INST] ${prompt} </s>`; |
|
const payload = { |
|
"inputs": formattedPrompt |
|
}; |
|
|
|
|
|
const options = { |
|
"method": "post", |
|
"headers": headers, |
|
"payload": JSON.stringify(payload) |
|
}; |
|
|
|
const response = UrlFetchApp.fetch(url, options); |
|
const json = JSON.parse(response.getContentText()); |
|
|
|
return json; |
|
} |
|
|
|
|
|
function HF(prompt, model) { |
|
try { |
|
const response = queryHuggingFace(prompt, model); |
|
const fullResponse = response[0].generated_text; |
|
|
|
const generatedOutput = fullResponse.split(`</s>`).pop().trim(); |
|
return generatedOutput; |
|
} catch (error) { |
|
return `Error: ${error.message}`; |
|
} |
|
} |
|
|
|
|
|
function onInstall(e) { |
|
onOpen(e); |
|
const formula = SpreadsheetApp.newUserDefinedFunctionBuilder() |
|
.setName('HF') |
|
.setFunction('HF') |
|
.build(); |
|
SpreadsheetApp.installUserDefinedFunction(formula); |
|
} |
|
|