Tạo hàm tùy biến trong Google sheet để sử dụng AI

Với thông báo Gemini mở cửa cho các nhà phát triển, tôi vô cùng háo hức muốn thử nghiệm nó. Phải nói rằng tôi rất ấn tượng với hiệu suất của Gemini. Có rất nhiều đánh giá so sánh Gemini Pro với GPT-3.5 và GPT-4, và dường như Gemini Pro chiến thắng trong hầu hết các thử nghiệm. Là một người dùng hàng ngày của Trí tuệ Nhân tạo Sinh tạo, mối quan tâm chính của tôi thực sự là giá cả. Dưới đây là một so sánh nhanh (sử dụng quy đổi 1 token = 4 ký tự). Chúng ta có thể thấy rằng Gemini có giá gần tương đương với GPT-3.5 Turbo và chỉ bằng chưa đến 10% so với GPT-4 hoặc GPT-4 Turbo. Và bạn đoán xem, hiện tại Google đang cung cấp quyền truy cập miễn phí vào Gemini Pro miễn là Số Lượng Yêu Cầu Phút (QPM) nhỏ hơn 60.

Pricing Comparison (December 2023)

Dù sao thì, bài viết này không nhằm mục đích quảng cáo bất kỳ sản phẩm nào, mà là một số ví dụ đơn giản về cách chúng ta có thể sử dụng trí tuệ nhân tạo thế hệ mới (genAI) trong các công việc hàng ngày. Hôm nay, tôi sẽ thử sử dụng genAI trong Google Sheets để giúp tôi tạo một hàm tùy chỉnh để hỏi Gemini các câu hỏi từ các ô khác. Loại yêu cầu này thực sự rất phổ biến. Tôi sẽ sử dụng ví dụ dưới đây để minh họa.

  • Ô A1 là câu hỏi mẫu
  • Cột A là các biến cho câu hỏi
  • Hàm askGemini(inputText) là một Hàm Tùy Chỉnh sẽ gửi câu hỏi đến Gemini Pro để lấy câu trả lời

Lưu ý rằng bài viết này giả định rằng bạn có một số hiểu biết đơn giản về cách hoạt động của App Script trong Google Sheets. Nhưng bạn cũng có thể làm theo các bước mà không thực sự hiểu nó hoạt động như thế nào (không khuyến khích).

Tạo một dự án Google Cloud

Nếu bạn chưa có Dự án GCP, bạn có thể sử dụng liên kết này để tạo một dự án. Nó miễn phí và trong 3 tháng đầu tiên bạn sẽ có 300 đô la tín dụng để sử dụng trong hầu hết mọi thứ trên Google Cloud. Sau khi bạn đã tạo dự án, hãy đảm bảo rằng bạn đã bật API Vertex AI. Liên kết trên cũng nên giải thích cách thực hiện điều này.

Đăng nhập vào Google sheets

Hiện tại, hầu hết các cuộc gọi API đến GCP từ Google Sheets phải được thực hiện thông qua REST API. Để làm điều này, bước đầu tiên của chúng tôi là lấy token OAuth2 để xác thực chính mình.

Mở Apps Script bằng cách vào Extensions → Apps Script.

Trong Project Settings enable tùy chọn “Show appsscript.json manifest file in editor”

Mở appsscript.json file và thêm 3 oauth2 scope sau:

"oauthScopes": [
"https://www.googleapis.com/auth/spreadsheets.currentonly",
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/cloud-platform"
]

Trong file mặc định Code.gs, hãy tạo một hàm mới auth(). Trong hàm này, chúng ta sẽ yêu cầu mã token và lưu trữ nó trong bộ nhớ cache vì Hàm Tùy Chỉnh không cho phép xác thực người dùng. Bộ nhớ cache nên giữ mã token trong 10 phút (mặc định) hoặc tối đa 6 giờ.

function auth() {
cache = CacheService.getUserCache();
token = ScriptApp.getOAuthToken();
cache.put("token", token);
}

Tạo một nút hoặc menu tùy chỉnh và gán hàm auth() vào đó. Để hàm tùy chỉnh của chúng ta gọi Gemini hoạt động, cần phải nhấn nút này để lấy mã token.

Bây giờ chúng ta cần sử dụng hàm UrlFetchApp() để gọi REST API. Dưới đây là ví dụ về cách thực hiện. Tham khảo tài liệu này về các tùy chọn cho API. Về cơ bản, một số giá trị bắt buộc là role mà chúng ta cần đặt giá trị “user” và parts mà chúng ta sẽ đặt lời nhắc.

function askGemini(inputText) {
cache = CacheService.getUserCache();
token = cache.get("token");
if (token == "") return "ERROR";
Logger.log(`Token = ${token}`);
url = `https://${REGION}-aiplatform.googleapis.com/v1/projects/${PROJECT_ID}/locations/${REGION}/publishers/google/models/gemini-pro:streamGenerateContent`
data = {
contents: {
role: "USER",
parts: { "text": inputText }
},
generation_config: {
temperature: 0.9,
topP: 1
}
}
const options = {
method: "post",
contentType: 'application/json',
headers: {
Authorization: `Bearer ${token}`,
},
payload: JSON.stringify(data)
};

const response = UrlFetchApp.fetch(url, options);
if (response.getResponseCode() == 200) {
json = JSON.parse(response.getContentText());
answer = json[0].candidates[0].content.parts[0].text;
return answer;
}
return "ERROR";
}

Lưu mã và nó có thể được sử dụng ngay lập tức, không cần deploy.

Một điều cần lưu ý về Hàm Tùy Chỉnh này là nó có thể được kiểm tra lại nhiều lần và sẽ gọi lại API liên tục. Có nhiều cách để ngăn chặn hành động này, chẳng hạn như sử dụng một câu lệnh IF() để kiểm tra xem giá trị có rỗng hay không, nếu không rỗng thì không gọi hàm lại.

Hy vọng đây là thông tin hữu ích cho những người mới bắt đầu thử nghiệm với genAI và muốn áp dụng nó vào công việc hàng ngày.

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Bạn cũng có thể đọc thêm:

A2A & MCP – Dream team dành cho các trợ lý AI.

Chào bạn! Chắc hẳn bạn đã nghe nhiều về Trí tuệ nhân tạo (AI), có thể đã dùng các trợ lý AI như Siri hay Google Assistant, hoặc thấy AI đánh bại con người trong các trò chơi phức tạp. Nhưng AI đang ngày càng thông minh và hữu ích hơn. Hãy tưởng tượng bạn không chỉ có...

🤖 Khám phá LLM: Hướng dẫn toàn diện

Video "How I use LLMs" của Andrej Karpathy thuộc series dành cho khán giả phổ thông về các mô hình ngôn ngữ lớn (LLMs) như ChatGPT. Tiếp nối video trước đã đi sâu vào các nguyên tắc cơ bản và cách tư duy về nhận thức của LLMs , video này tập trung vào các ứng dụng...

Liên hệ