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.
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