Dòng mô hình Gemini của Google có chi phí tương đối hiệu quả cho khối lượng công việc lớn, nhưng với ứng dụng miễn phí công khai, dự án phụ hoặc sản phẩm hackathon, chi phí vẫn có thể tăng nhanh khi có vài nghìn người dùng gọi endpoint của bạn. Puter.js đảo ngược mô hình này: bạn có thể gọi Gemini và Gemma từ trình duyệt mà không cần khóa Google API; chi phí sử dụng được gắn với người dùng cuối qua tài khoản Puter thay vì tài khoản thanh toán của bạn.
Tóm tắt
- Puter.js cho phép gọi Gemini/Gemma từ trình duyệt mà không cần Google API key, Google Cloud project hoặc backend riêng.
- Các phiên bản Gemini được hỗ trợ gồm: 2.5 Pro, 2.5 Flash, 2.5 Flash Lite, 2.0 Flash, 2.0 Flash Lite, 3 Flash Preview và một số bản preview cũ hơn.
- Các phiên bản Gemma được hỗ trợ gồm: Gemma 2, 3, 4 với nhiều kích cỡ như 4B, 12B, 27B, 31B, 26B-A4B.
- Chỉ cần một thẻ
<script>và một lệnh gọi hàm để bắt đầu chat với Gemini. - Có thể dùng streaming, input hình ảnh và
temperaturetrực tiếp trong trình duyệt. - Người dùng cuối thanh toán chi phí sử dụng từ tài khoản Puter của họ; phía developer không cần quản lý billing.
- Có thể dùng Apidog để so sánh prototype Puter với API Gemini chính thức khi lập kế hoạch migration.
Cách mô hình “miễn phí không giới hạn” hoạt động
Với API Gemini chính thức, bạn giữ Google API key và chịu toàn bộ chi phí token. Với Puter.js, người dùng cuối đăng nhập vào Puter và lệnh gọi AI được tính vào tài khoản Puter của họ. Tài khoản mới có tín dụng khởi điểm; người dùng có thể nạp thêm nếu cần dùng nhiều hơn.
Điều này có vài hệ quả thực tế:
- Không cần Google Cloud project hoặc AI Studio key.
- Không cần quản lý quota, rotation key hoặc billing Google.
- Không có giới hạn sử dụng từ phía developer theo kiểu một API key duy nhất.
- Phù hợp với ứng dụng browser-first, ví dụ static site, demo, hackathon app hoặc browser extension.
Đánh đổi quan trọng: Puter ưu tiên ngữ cảnh trình duyệt và phiên người dùng. Nếu bạn cần cron job, batch job, webhook hoặc service backend không có user session, hãy dùng API Gemini chính thức.
Bước 1: Cài đặt Puter.js
Cách nhanh nhất là dùng CDN:
<script src="https://js.puter.com/v2/"></script>
Nếu bạn đang dùng bundler:
npm install @heyputer/puter.js
import { puter } from '@heyputer/puter.js';
Với static HTML hoặc Dev.to demo snippet, CDN thường là đủ.
Bước 2: Chọn model Gemini hoặc Gemma
| ID model | Khi nào nên dùng |
|---|---|
google/gemini-2.5-pro |
Tác vụ suy luận sâu, phân tích phức tạp, ngữ cảnh dài |
google/gemini-2.5-flash |
Model mặc định cho hầu hết ứng dụng; cân bằng tốc độ và chất lượng |
google/gemini-2.5-flash-lite |
Biến thể nhẹ hơn; phù hợp phân loại, tagging, tác vụ khối lượng lớn |
google/gemini-2.0-flash |
Nền tảng ổn định, hành vi dễ dự đoán |
google/gemini-3-flash-preview |
Bản preview mới hơn, phù hợp thử nghiệm |
google/gemma-3-27b-it |
Gemma mã nguồn mở, instruction-tuned, phù hợp baseline mở |
google/gemma-4-31b-it |
Gemma mã nguồn mở lớn hơn, phù hợp thử nghiệm chất lượng cao hơn |
Khuyến nghị triển khai:
- Dùng
google/gemini-2.5-flashlàm mặc định. - Chuyển sang
google/gemini-2.5-procho prompt khó, cần reasoning tốt hơn. - Dùng
google/gemini-2.5-flash-litecho phân loại, gắn nhãn, QA đơn giản hoặc workload lớn.
Bước 3: Gọi Gemini từ trình duyệt
Ví dụ tối thiểu:
<!DOCTYPE html>
<html>
<body>
<script src="https://js.puter.com/v2/"></script>
<script>
puter.ai.chat(
"Giải thích học máy trong ba câu",
{ model: "google/gemini-2.5-flash" }
).then(response => {
puter.print(response);
});
</script>
</body>
</html>
Luồng chạy:
- Mở file HTML trong trình duyệt.
- Puter xử lý phiên đăng nhập của người dùng.
- Lệnh gọi được gửi tới model đã chọn.
- Phản hồi được in ra trang bằng
puter.print().
Bạn không cần:
- API key
.env- Backend proxy
- Billing Google Cloud
Bước 4: Streaming phản hồi
Với UI chat hoặc câu trả lời dài, nên bật streaming để người dùng thấy kết quả ngay khi model sinh token.
const response = await puter.ai.chat(
"Giải thích chi tiết quá trình quang hợp",
{
model: "google/gemini-2.5-flash",
stream: true,
}
);
for await (const part of response) {
if (part?.text) {
outputDiv.innerHTML += part.text;
}
}
Ví dụ HTML đơn giản:
<div id="output"></div>
<script src="https://js.puter.com/v2/"></script>
<script>
const outputDiv = document.getElementById("output");
async function run() {
const response = await puter.ai.chat(
"Viết hướng dẫn ngắn về cách tối ưu API latency",
{
model: "google/gemini-2.5-flash",
stream: true,
}
);
for await (const part of response) {
if (part?.text) {
outputDiv.innerHTML += part.text;
}
}
}
run();
</script>
Mỗi part.text là một phần của phản hồi. Bạn chỉ cần append nó vào UI.
Bước 5: Gửi hình ảnh cho Gemini
Gemini hỗ trợ input đa phương thức. Với Puter, bạn có thể truyền URL hình ảnh làm tham số thứ hai:
puter.ai.chat(
"Bạn thấy gì trong hình ảnh này? Mô tả màu sắc, vật thể và tâm trạng.",
"https://assets.puter.site/doge.jpeg",
{ model: "google/gemini-2.5-flash" }
).then(response => {
puter.print(response);
});
Các use case thực tế:
- Tạo alt text cho ảnh
- QA hình ảnh
- Phân tích ảnh chụp màn hình
- OCR cơ bản
- Công cụ hỗ trợ tiếp cận
- Gắn thẻ hình ảnh sản phẩm
Gemini mạnh với ảnh tự nhiên và biểu đồ. Với ảnh chụp màn hình chứa nhiều văn bản dày đặc, một số model khác có thể cho kết quả tốt hơn tùy trường hợp.
Bước 6: Điều chỉnh temperature
Bạn có thể truyền các tham số model trong object options:
const response = await puter.ai.chat(
"Viết một câu chuyện ngắn sáng tạo về một đầu bếp robot",
{
model: "google/gemini-2.5-flash",
temperature: 0.2,
}
);
console.log(response);
Cách chọn nhanh:
-
temperature: 0.0–0.3: đầu ra ổn định, thực tế, có cấu trúc. -
temperature: 0.7–1.0: đầu ra sáng tạo hơn, phù hợp viết nội dung. - Với chatbot thông thường, có thể bắt đầu quanh
0.7rồi điều chỉnh theo kết quả.
Bước 7: Xây dựng hội thoại nhiều lượt
Truyền một mảng message để giữ ngữ cảnh hội thoại:
const messages = [
{
role: "user",
content: "Tôi đang xây dựng một ứng dụng Next.js với Postgres."
},
{
role: "assistant",
content: "Đã hiểu. Bạn cần trợ giúp về điều gì?"
},
{
role: "user",
content: "Tôi nên cấu trúc các migration như thế nào?"
},
];
const response = await puter.ai.chat(messages, {
model: "google/gemini-2.5-pro",
});
console.log(response);
Pattern triển khai trong app chat:
const messages = [];
async function sendMessage(userText) {
messages.push({
role: "user",
content: userText,
});
const response = await puter.ai.chat(messages, {
model: "google/gemini-2.5-flash",
});
messages.push({
role: "assistant",
content: response,
});
return response;
}
Mỗi lần user gửi tin nhắn, thêm message mới vào mảng. Mỗi lần nhận phản hồi, thêm phản hồi assistant vào mảng. Lệnh gọi tiếp theo sẽ có toàn bộ transcript trước đó.
So sánh Gemini với model khác trên cùng prompt
Puter cung cấp nhiều LLM qua một interface. Bạn có thể benchmark nhanh cùng một prompt trên nhiều model:
const models = [
"google/gemini-2.5-flash",
"claude-sonnet-4-6",
"gpt-5.5",
"x-ai/grok-4.3",
];
const prompt = "Tái cấu trúc thành phần React này để sử dụng hooks: ...";
for (const model of models) {
const start = performance.now();
const response = await puter.ai.chat(prompt, { model });
const elapsed = performance.now() - start;
console.log(`${model}: ${elapsed.toFixed(0)}ms`);
console.log(response);
console.log("---");
}
Khi đánh giá, đừng chỉ nhìn latency. Hãy kiểm tra:
- Độ đúng của câu trả lời
- Khả năng tuân thủ format
- Chiều sâu reasoning
- Chất lượng code
- Tính nhất quán qua nhiều lần chạy
- Trải nghiệm thực tế trong UI
Gemini Flash thường phù hợp khi cần tốc độ. Các model khác có thể phù hợp hơn cho code, viết dài hoặc tối ưu chi phí tùy bài toán.
Bạn nhận được gì và không nhận được gì
Bạn nhận được
- Gemini 2.5/2.0/3 Flash và Gemini 2.5 Pro
- Dòng Gemma mã nguồn mở 2/3/4
- Hội thoại nhiều lượt
- Streaming response
- Input hình ảnh qua URL
- Tham số như
temperature,max_tokens, system prompt - Mô hình triển khai phù hợp với ứng dụng browser-first
Bạn có thể không nhận được, tùy phiên bản Puter
- Function calling gốc trên Gemini
- Công cụ thực thi code
- Grounding qua Google Search
- Ngữ cảnh dài tới đầy đủ giới hạn 2 triệu token của Gemini
- Server-side usage không có browser session
- Khả năng quan sát trực tiếp rate limit từ Google
Nếu bạn cần agent workflow phức tạp, code execution, grounding hoặc ngữ cảnh cực dài, API Google AI Studio chính thức vẫn là lựa chọn phù hợp hơn. Nếu bạn cần chat, QA, tạo nội dung hoặc phân tích hình ảnh cơ bản trong trình duyệt, Puter thường đủ để triển khai prototype hoặc app công khai.
Khi nào dùng Puter, khi nào dùng API Gemini chính thức
Dùng Puter khi
- Bạn đang phát hành ứng dụng miễn phí công khai và không muốn tự chịu billing token.
- Bạn đang prototype và không muốn thiết lập Google Cloud.
- Bạn muốn gọi Gemini từ static site, hackathon app hoặc browser extension.
- Bạn không muốn đặt API key trong frontend.
- Người dùng của bạn chấp nhận đăng nhập Puter.
Dùng API Gemini chính thức khi
- Bạn cần gọi từ server: cron, batch, webhook, queue worker.
- Bạn cần code execution, grounding qua Search hoặc ngữ cảnh rất dài.
- Bạn cần quan hệ hợp đồng trực tiếp với Google vì compliance.
- Bạn cần tinh chỉnh trên dữ liệu riêng.
- Bạn không muốn thêm bước đăng nhập Puter cho người dùng.
Để xem thêm hướng dẫn về Gemini 3 Flash, đọc Cách sử dụng API Gemini 3 Flash Preview.
Kiểm tra tích hợp với Apidog
Các lệnh gọi Puter chạy trong trình duyệt, vì vậy bạn không thể test chúng như một backend API thông thường. Một workflow thực tế hơn:
- Tạo một trang static nhỏ dùng Puter.js.
- Cho phép truyền prompt qua query string, ví dụ
?prompt=.... - Dùng trang này làm prototype browser-first.
- Trong Apidog, tạo collection riêng cho API Gemini chính thức nếu sau này cần migration.
- Tách môi trường
puter-prototypevàgemini-prodđể so sánh hoặc chuyển đổi dễ hơn.
Ví dụ cấu trúc môi trường:
-
puter-prototype: URL localhost hoặc static page chứa Puter.js. -
gemini-prod:https://generativelanguage.googleapis.com/v1.
Bạn có thể Tải Apidog và tạo hai môi trường này trong cùng một collection để giữ luồng test nhất quán. Với các mô hình test API rộng hơn, xem thêm công cụ kiểm thử API cho kỹ sư QA.
Các cách khác để dùng LLM miễn phí qua Puter
Cùng mô hình user-paid có thể áp dụng cho nhiều LLM khác:
- Nhận API Claude không giới hạn miễn phí
- Nhận API GPT-5.5 không giới hạn miễn phí
- Cách sử dụng Grok 4.3 miễn phí
- Nhận API DeepSeek không giới hạn miễn phí
Về mặt code, bạn chủ yếu thay chuỗi model:
const response = await puter.ai.chat("Viết unit test cho hàm này: ...", {
model: "google/gemini-2.5-flash",
});
Đổi model là đổi provider hoặc biến thể model.
Câu hỏi thường gặp
Đây có thực sự là không giới hạn không?
Không giới hạn từ phía developer theo nghĩa bạn không tự giữ API key và không tự chịu billing cho toàn bộ usage. Người dùng cuối có số dư trong tài khoản Puter của họ; tài khoản mới nhận tín dụng khởi điểm và có thể nạp thêm nếu cần.
Tôi có cần tài khoản Google hoặc Google Cloud project không?
Không. Puter xử lý phần gọi upstream. Bạn không cần tạo Google API key.
Có dùng được trong production không?
Có thể dùng cho ứng dụng dựa trên trình duyệt. Câu hỏi cần kiểm tra trước khi production là: người dùng của bạn có chấp nhận bước đăng nhập Puter không?
Gemini qua Puter có giống API chính thức không?
Model upstream là Gemini, nhưng đường gọi đi qua Puter. Hành vi model nhìn chung tương ứng với model được chọn; latency có thể khác do lớp trung gian và phiên người dùng.
Còn cửa sổ ngữ cảnh 2 triệu token của Gemini thì sao?
Puter không nhất thiết cung cấp đầy đủ giới hạn 2 triệu token cho mọi biến thể model. Nếu workload của bạn phụ thuộc vào ngữ cảnh cực dài, hãy dùng API Google AI Studio chính thức.
Có dùng được cho bot Discord hoặc backend service không?
Không phải là lựa chọn phù hợp nhất. Puter ưu tiên trình duyệt và giả định có phiên người dùng. Backend service nên dùng API Gemini chính thức.
Nên chọn model mặc định nào?
Bắt đầu với:
google/gemini-2.5-flash
Dùng google/gemini-2.5-pro cho reasoning khó. Dùng google/gemini-2.5-flash-lite cho phân loại hoặc tác vụ khối lượng lớn.
Có hỗ trợ tạo hình ảnh bằng Imagen không?
Puter hiện cung cấp tạo hình ảnh qua các biến thể gpt-image-2 và DALL-E của OpenAI, không phải Imagen. Xem Nhận API GPT-5.5 không giới hạn miễn phí để biết thêm về tạo hình ảnh.
Tổng kết
Puter.js là cách nhanh để đưa Gemini vào ứng dụng browser-first mà không cần Google Cloud project, API key hoặc backend proxy. Với một thẻ script, bạn có thể gọi google/gemini-2.5-flash, stream phản hồi, gửi input hình ảnh và xây dựng hội thoại nhiều lượt.
Nếu bạn cần server-side jobs, fine-tuning, code execution hoặc ngữ cảnh Gemini cực dài, hãy dùng API Gemini chính thức. Nếu bạn đang xây dựng prototype, hackathon app, static site hoặc ứng dụng miễn phí công khai, Puter là lựa chọn triển khai nhanh hơn.
Bạn cũng có thể xây dựng request trong Apidog, so sánh luồng Puter với API chính thức và chọn hướng phù hợp cho sản phẩm.
Top comments (0)