Chọn một mô hình ngôn ngữ lớn (LLM) phù hợp cho một tác vụ là việc khó làm tốt nếu không chạy cùng một prompt qua vài mô hình. Mỗi nhà cung cấp có tài khoản, API key và thường có cả SDK riêng, nên việc đặt Claude, DeepSeek và một mô hình trọng số mở cạnh nhau đòi hỏi rất nhiều công thiết lập.

Trong hướng dẫn này, chúng ta sẽ kết nối năm mô hình khác nhau qua một endpoint tương thích OpenAI duy nhất và chạy một script Python ngắn gửi cùng một prompt tới từng mô hình, để so sánh câu trả lời, thời gian phản hồi và lượng token sử dụng.

Mọi thứ ở đây được kiểm thử trên máy Linux. Các lệnh cài đặt bên dưới dùng apt cho Debian và Ubuntu. Trên Fedora và RHEL, hãy dùng dnf thay thế.

Một endpoint, nhiều mô hình

Trong phạm vi hướng dẫn này, chúng ta dùng AI/ML API, một aggregator API cung cấp mô hình từ OpenAI, Anthropic, DeepSeek, xAI, Z.ai và các nhà phát triển khác qua một endpoint tương thích OpenAI duy nhất tại https://api.aimlapi.com/v1.

Vì dùng giao thức OpenAI, bạn có thể cài SDK Python chuẩn của OpenAI, trỏ base_url vào endpoint này và đổi mô hình chỉ bằng cách thay một chuỗi.

Cách làm này không gắn với một dịch vụ cụ thể: bất kỳ endpoint tương thích OpenAI nào — một aggregator khác như OpenRouter, một proxy như LiteLLM, hay một runtime cục bộ như Ollama hoặc vLLM — đều có thể dùng thay cho AI/ML API, miễn là bạn đổi base_url và danh sách model ID.

5 mô hình dùng trong hướng dẫn này: Claude Sonnet 5, DeepSeek V4 Pro, DeepSeek V4 Flash, Grok Build 0.1 và GLM 5.2.

Giá lấy từ các trang mô hình của AI/ML API tính đến ngày 24 tháng 9 năm 2026.

⚠️ Những điều cần biết trước khi trả tiền cho aggregator API

Aggregator API có thể là cách thuận tiện để thử nhiều mô hình qua một giao diện duy nhất, nhưng hãy thận trọng trước khi dùng chúng trong production hoặc cam kết tài chính đáng kể.

Hãy bắt đầu với khoản nạp nhỏ nhất hiện có, và tắt tính năng tự động nạp tiền cho đến khi bạn tin tưởng dịch vụ. Hãy kiểm tra độ trễ và độ tin cậy bằng chính khối lượng công việc thực tế của bạn, và đối chiếu cẩn thận lượng token sử dụng với hoá đơn.

Quan trọng: Tính đến tháng 9 năm 2026, tài liệu của AI/ML API nêu rõ rằng các khoản nạp tiền không được hoàn lại, với khoản nạp tối thiểu bắt đầu từ $20. Điều khoản và Điều kiện của dịch vụ cũng nêu rõ mọi giao dịch mua là cuối cùng và không hoàn lại.

Chúng tôi khuyến nghị bạn đọc các trang Điều khoản và Điều kiện, Tài khoản & Thanh toán và Gói dịch vụ trước khi nạp tiền.

Giờ hãy cùng so sánh nhiều LLM qua AI/ML API trên Linux.

Điều kiện tiên quyết

Bạn cần Python 3.9 trở lên, pip và một API key. Trên Debian hoặc Ubuntu, chạy lệnh sau để cài chúng; lệnh cài đặt gói cần quyền sudo (hoặc tài khoản root):

sudo apt install python3 python3-venv python3-pip

Tạo key trong bảng điều khiển AI/ML API tại trang API keys.

Thanh toán theo mô hình trả theo mức sử dụng, và bảng điều khiển có Playground trên web để bạn thử một mô hình trước khi viết script gọi nó.

Bước 1: Thiết lập môi trường tách biệt

Cài SDK trong một môi trường ảo, không cài toàn hệ thống:

mkdir llm-compare && cd llm-compare
python3 -m venv .venv
source .venv/bin/activate
pip install openai

Sau đó export key thành biến môi trường để không hard-code nó trong script:

export AIMLAPI_KEY="your_api_key_here"

Để key không lọt vào lịch sử shell, hãy thêm dòng này vào ~/.bashrc bằng trình soạn thảo thay vì gõ tại dấu nhắc lệnh.

Bước 2: Kiểm tra endpoint bằng curl

Trước khi viết bất kỳ script Python nào, hãy xác nhận endpoint có phản hồi. Nó nhận một POST request chuẩn tới /v1/chat/completions với Bearer token:

curl https://api.aimlapi.com/v1/chat/completions \
-H "Authorization: Bearer $AIMLAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek/deepseek-v4-flash",
"messages": [{"role": "user", "content": "Reply with the single word: ok"}]
}'

Phản hồi là JSON OpenAI thông thường, với câu trả lời trong choices[0].message.content và số token trong usage. Nếu request này chạy được, script bên dưới cũng sẽ chạy được.

Bước 3: Script Python để so sánh nhiều LLM

Script này gửi cùng một prompt tới mọi mô hình trong một danh sách, đo thời gian mỗi request và in lần lượt các câu trả lời. Lưu nó thành compare_llms.py:

#!/usr/bin/env python3
"""compare_llms.py - send one prompt to several LLMs through a single
OpenAI-compatible endpoint (AI/ML API) and compare answers, latency and tokens."""
import os
import sys
import time
from openai import OpenAI
BASE_URL = os.environ.get("OPENAI_BASE_URL", "https://api.aimlapi.com/v1")
API_KEY = os.environ.get("AIMLAPI_KEY") or os.environ.get("OPENAI_API_KEY")
# Edit this list, or override it with the MODELS env var (comma-separated).
MODELS = os.environ.get(
"MODELS",
"anthropic/claude-sonnet-5,"
"deepseek/deepseek-v4-pro,"
"deepseek/deepseek-v4-flash,"
"x-ai/grok-build-0-1,"
"zhipu/glm-5-2",
).split(",")
def main() -> int:
if not API_KEY:
sys.exit("Set AIMLAPI_KEY first (create a key at https://aimlapi.com/app/keys).")
prompt = " ".join(sys.argv[1:]) or "Explain what a Linux inode is, in two sentences."
client = OpenAI(base_url=BASE_URL, api_key=API_KEY)
print(f"Prompt: {prompt}\n" + "=" * 60)
for raw in MODELS:
model = raw.strip()
if not model:
continue
start = time.perf_counter()
try:
resp = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
)
except Exception as exc:  # network, auth, unknown model, etc.
print(f"\n### {model}\n ERROR: {exc}")
continue
elapsed = time.perf_counter() - start
answer = (resp.choices[0].message.content or "").strip()
usage = resp.usage
tokens = f"{usage.prompt_tokens} in / {usage.completion_tokens} out" if usage else "n/a"
print(f"\n### {model} ({elapsed:.2f}s, {tokens})\n{answer}")
return 0
if __name__ == "__main__":
raise SystemExit(main())

Một vài ghi chú về thiết kế:

  • Danh sách mô hình lấy từ biến môi trường MODELS và mặc định quay về 5 mô hình ở trên. Bạn có thể sửa file hoặc chạy MODELS="deepseek/deepseek-v4-flash,zhipu/glm-5-2" python3 compare_llms.py mà không cần đụng vào code.
  • Mỗi request được bọc trong try/except. Model ID sai hoặc lỗi mạng sẽ in lỗi cho mô hình đó, và script chuyển sang mô hình tiếp theo.
  • Script in số token đầu vào và đầu ra từ trường usage, để bạn có thể nhân chúng với đơn giá của từng mô hình và so sánh chi phí của cùng một câu trả lời giữa các mô hình.
  • Script không đặt temperature. DeepSeek V4 Pro và Claude Sonnet 5 có chế độ suy luận, và một số cấu hình suy luận bỏ qua hoặc từ chối các tham số lấy mẫu. Nếu bạn muốn câu trả lời ổn định hơn từ các mô hình không suy luận, hãy thêm temperature=0.3 vào lời gọi create().

Bước 4: Truy vấn và so sánh nhiều LLM

Truyền prompt của bạn dưới dạng tham số, hoặc chạy script không có tham số để dùng prompt mặc định:

python3 compare_llms.py "Explain what a Linux inode is, in two sentences."

Kết quả liệt kê lần lượt các mô hình, mỗi mô hình được gắn thời gian phản hồi và số token. Đây là kết quả từ lần chạy của chúng tôi ngày 24 tháng 9 năm 2026:

Prompt: Explain what a Linux inode is, in two sentences.
============================================================
### anthropic/claude-sonnet-5 (8.44s, 24 in / 126 out)
An inode (index node) is a data structure on a filesystem that stores metadata about a file or directory—such as its size, permissions, ownership, timestamps, and pointers to the actual data blocks on disk—but notably does not store the file's name. Each file is linked to a unique inode via directory entries, allowing multiple filenames (hard links) to reference the same underlying data through a shared inode.
### deepseek/deepseek-v4-pro (4.65s, 95 in / 149 out)
A Linux inode is a filesystem data structure that stores metadata about a file or directory, such as permissions, ownership, timestamps, and pointers to its data blocks. It does not store the file’s name or its actual content; instead, each inode is identified by a unique inode number within its filesystem.
### deepseek/deepseek-v4-flash (2.51s, 42 in / 279 out)
An inode is a filesystem data structure that stores a file’s metadata—such as its type, permissions, ownership, timestamps, size, and pointers to data blocks—but not its name or actual data content. Every file has an inode number unique within its filesystem, and directory entries map human-readable filenames to those inode numbers, which is why hard links can share one inode.
### x-ai/grok-build-0-1 (3.92s, 197 in / 323 out)
In Linux, an inode is a data structure that stores metadata about a file or directory, such as its permissions, ownership, timestamps, size, and pointers to the data blocks on disk. It does not contain the file's name or its actual content; the filename is stored in the directory entry, which references the inode number.
### zhipu/glm-5-2 (15.70s, 24 in / 709 out)
A Linux inode is a data structure that stores metadata about a file or directory, such as its permissions, owner, size, and physical location on the disk. It acts as the bridge between a file's human-readable name and its actual data blocks, notably excluding the file name itself, which is instead stored in the directory structure.

Thời gian và số token của bạn sẽ khác nhau giữa các lần chạy, nhưng có vài điểm đáng chú ý. Cả 5 mô hình đều đưa ra câu trả lời đúng trong hai câu. DeepSeek V4 Flash nhanh nhất với 2.51 giây, và GLM 5.2 chậm nhất với 15.70 giây.

Số token mới là phần hữu ích hơn. Prompt giống nhau cho mọi mô hình, nhưng số token đầu vào dao động từ 24 đến 197, vì mỗi mô hình dùng tokenizer riêng và một số nhà cung cấp có thể thêm hướng dẫn của riêng họ vào request. Số token đầu ra còn chênh lệch nhiều hơn. GLM 5.2 tính 709 token đầu ra cho một câu trả lời khoảng 60 từ, rất có thể vì đây là mô hình suy luận và số token dành cho việc suy nghĩ được tính là token đầu ra.

Đây là chi phí của một request này trên từng mô hình, tính theo đơn giá của mô hình đó:

DeepSeek V4 Flash có giá đầu vào thấp nhất trong số các mô hình này. Tuy nhiên với prompt này, nó lại tốn gấp đôi DeepSeek V4 Pro, vì nó tạo ra nhiều token đầu ra hơn và giá đầu ra của nó cao hơn. Chỉ nhìn bảng giá là không đủ để so sánh mô hình, nên hãy chạy prompt của chính bạn và kiểm tra số token thực tế.

Hãy thay prompt mặc định bằng công việc của bạn. Ví dụ, yêu cầu các mô hình giải thích một lỗi, review một shell script hoặc tạo một file cấu hình.

Bước 5: Cần so sánh những gì và chọn mô hình thế nào

Ba yếu tố thường quyết định nên dùng mô hình nào.

  1. Độ trễ. Script in độ trễ cho mỗi request. Hãy chạy nhiều lần, vì lần gọi đầu tiên tới một mô hình thường chậm hơn những lần sau.
  2. Chi phí. Mỗi mô hình có giá riêng trên mỗi triệu token, và với câu trả lời dài thì giá đầu ra quan trọng nhất. Nếu bạn gửi hàng nghìn request mỗi ngày, hãy chọn mô hình rẻ nhất mà vẫn trả lời đủ tốt cho tác vụ của bạn. Ở khối lượng đó, khoản tiết kiệm tăng lên nhanh chóng.
  3. Chất lượng. Chỉ bạn mới đánh giá được, và việc xem các câu trả lời cạnh nhau giúp việc đó dễ hơn.

Đây là điểm khác biệt của từng mô hình.

  • Claude Sonnet 5 là mô hình của Anthropic cho lập trình và quy trình agent, phát hành ngày 30 tháng 6 năm 2026. Anthropic nói nó tiệm cận mô hình Opus hàng đầu của họ với giá thấp hơn. Trong lần chạy của chúng tôi, nó cho câu trả lời chi tiết nhất với ít token đầu ra nhất, nhưng giá mỗi token cao nhất trong danh sách này.
  • DeepSeek V4 Pro là mô hình lớn nhất ở đây, với 1.6T tham số. Từ tháng 8 năm 2026, bạn có thể đặt mức nỗ lực suy luận thành low, high hoặc max, nên một mô hình đáp ứng cả câu trả lời nhanh lẫn tác vụ khó hơn. Đây cũng là request rẻ nhất trong lần chạy của chúng tôi.
  • DeepSeek V4 Flash được xây dựng để nhanh. Nó chỉ kích hoạt 13B trong số 284B tham số mỗi request và là mô hình nhanh nhất trong thử nghiệm của chúng tôi với 2.51 giây. Nó phù hợp với các tác vụ khối lượng lớn, nơi câu trả lời nhanh quan trọng hơn độ sâu.
  • Grok Build 0.1 là mô hình duy nhất trong danh sách này được huấn luyện riêng cho coding agent, có hỗ trợ công cụ MCP. xAI phát hành nó ngày 29 tháng 5 năm 2026 và nói nó chạy ở hơn 100 token mỗi giây. xAI chưa công bố điểm benchmark cho nó.
  • GLM 5.2 là mô hình trọng số mở duy nhất ở đây, do Z.ai phát hành ngày 16 tháng 6 năm 2026 theo giấy phép MIT. Bạn có thể gọi nó qua API hoặc chạy trên máy chủ của mình nếu code không được rời khỏi hạ tầng của bạn. Z.ai báo điểm 81.0 trên Terminal-Bench 2.1. Trong lần chạy của chúng tôi, nó là mô hình chậm nhất và dùng nhiều token đầu ra nhất.

Để thêm các mô hình khác vào so sánh, hãy tra ID chính xác của chúng trong danh mục mô hình AI/ML API thay vì đoán. Tên và phiên bản thay đổi, và một ID sai sẽ khiến script in lỗi cho dòng đó.

Bước 6: Biến nó thành hàm trợ giúp trong shell

Khi script đã chạy được, hãy bọc nó trong một hàm shell để gọi từ bất kỳ thư mục nào. Thêm đoạn này vào ~/.bashrc:

askall() {
( cd ~/llm-compare && source .venv/bin/activate && python3 compare_llms.py "$@" )
}

Nạp lại file bằng lệnh:

source ~/.bashrc

Giờ "review this regex: ^\d{3}-\d{4}$" gửi câu hỏi tới cả 5 mô hình từ bất kỳ đâu trong terminal.

Câu hỏi thường gặp (FAQ)

H: Tôi có cần tài khoản riêng cho từng nhà cung cấp AI không?

Đ: Không. Script gửi mọi request tới một endpoint tương thích OpenAI, nên một API key AI/ML API là đủ cho cả 5 mô hình trong hướng dẫn này. Bạn không cần tài khoản với Anthropic, DeepSeek, xAI hay Z.ai, và bạn chỉ cài một gói Python duy nhất là openai.

H: Vì sao một mô hình trả về ERROR trong kết quả?

Đ: Nguyên nhân phổ biến nhất là model ID sai hoặc đã lỗi thời. Hãy kiểm tra ID chính xác trên trang của mô hình trong danh mục AI/ML API và cập nhật danh sách MODELS. Các nguyên nhân khác là API key không hợp lệ (HTTP 401), số dư bằng không, hoặc bị giới hạn tốc độ (HTTP 429), thường hết sau một khoảng chờ ngắn.

H: Làm sao tính chi phí của một request?

Đ: Nhân số token đầu vào với giá đầu vào của mô hình và số token đầu ra với giá đầu ra của mô hình, rồi chia mỗi kết quả cho 1,000,000. Ví dụ, trong lần chạy của chúng tôi DeepSeek V4 Flash dùng 42 token đầu vào và 279 token đầu ra, chi phí là (42 × $0.39 + 279 × $1.56) / 1,000,000, tức khoảng $0.00045.

H: Tôi có thể dùng script này với các API tương thích OpenAI khác không?

Đ: Có. Script đọc endpoint từ biến môi trường OPENAI_BASE_URL. Ví dụ, đặt nó thành http://localhost:11434/v1 để truy vấn các mô hình cục bộ trong Ollama và đưa tên của chúng vào MODELS. Ollama bỏ qua API key, nhưng script vẫn yêu cầu có key, nên hãy đặt AIMLAPI_KEY thành một giá trị bất kỳ.

H: Tôi có thể chạy các mô hình này cục bộ thay vì qua API không?

Đ: Chỉ một số mô hình. GLM 5.2 được phát hành dưới dạng trọng số mở theo giấy phép MIT, nhưng với 753B tham số thì cần một máy chủ nhiều GPU. Claude Sonnet 5 và Grok Build 0.1 không có trọng số công khai, nên chỉ dùng được qua API. Với thử nghiệm cục bộ trên một máy, các mô hình mở nhỏ hơn trong Ollama là lựa chọn thực tế hơn.

H: Aggregator API là gì?

Đ: Đó là dịch vụ cho bạn một endpoint và một tài khoản thanh toán cho nhiều mô hình từ các nhà cung cấp khác nhau. Điều này thuận tiện cho việc thử và so sánh LLM mà không phải quản lý nhiều tài khoản riêng. Đánh đổi lại là bạn phụ thuộc vào một bên trung gian về giá, thời gian hoạt động và độ chính xác của hoá đơn.

H: AI/ML API có an toàn để dùng không?

Đ: AI/ML API là một dịch vụ tổng hợp API đang hoạt động, nhưng nhà phát triển nên tự đánh giá nó theo yêu cầu của mình trước khi dựa vào nó trong production. Hãy bắt đầu nhỏ và kiểm tra dịch vụ bằng chính khối lượng công việc thực tế của bạn.

H: Số tiền tối thiểu tôi có thể nạp là bao nhiêu?

Đ: Tài liệu hiện tại của AI/ML API ghi $20 là mức nạp tối thiểu. Hãy xem trang Gói đăng ký để biết giá và các lựa chọn hiện tại.

H: Tôi có thể được hoàn tiền nếu không dùng hết credit không?

Đ: Theo Điều khoản và Điều kiện của AI/ML API, các giao dịch mua là cuối cùng và không hoàn lại. Trung tâm trợ giúp của họ cũng nêu rằng các khoản nạp tiền không hoàn lại. Hãy đọc Điều khoản và Điều kiện trước khi nạp tiền.

H: Tôi có nên bật tính năng tự động nạp tiền không?

Đ: An toàn hơn là giữ tính năng tự động nạp tiền ở trạng thái tắt ban đầu. Trước tiên hãy kiểm chứng dịch vụ, độ chính xác của hoá đơn và mức sử dụng thực tế của bạn. Bạn có thể xem các thiết lập liên quan trong Quản lý đăng ký của bạn.

H: Làm sao kiểm tra rằng tôi đang bị tính phí đúng?

Đ: Chạy một số lượng nhỏ request API có kiểm soát, ghi lại mô hình và lượng token sử dụng, rồi so sánh chi phí dự kiến với số tiền bị trừ khỏi tài khoản. Đừng mặc định chi phí hiển thị là đúng nếu bạn chưa tự kiểm tra.

H: Tôi có nên dùng AI/ML API trực tiếp trong production không?

Đ: Đừng biến nó thành phụ thuộc production duy nhất cho đến khi bạn đã kiểm tra độ tin cậy, độ trễ, tỷ lệ lỗi và hành vi tính phí dưới khối lượng công việc cụ thể của mình. Hãy cân nhắc duy trì một nhà cung cấp dự phòng cho các ứng dụng quan trọng.

H: Tôi nên kiểm tra những gì trước khi nạp một khoản tiền lớn?

Đ: Hãy kiểm tra giá hiện tại, chính sách hoàn tiền, thiết lập tự động nạp tiền, tính khả dụng của mô hình, giới hạn tốc độ, độ tin cậy của API và hành vi tính phí. Chính sách và giá có thể thay đổi, nên hãy xác minh tài liệu hiện tại trước khi cam kết số tiền đáng kể.

H: Tôi có thể đọc điều khoản chính thức ở đâu?

Đ: Xem Điều khoản và Điều kiện, Quản lý đăng ký của bạn và Gói đăng ký của AI/ML API.

Kết luận

Với một endpoint tương thích OpenAI, một môi trường ảo và một script Python ngắn, bạn có thể thử Claude Sonnet 5, DeepSeek V4 Pro và Flash, Grok Build 0.1 và GLM 5.2 trên prompt của chính bạn từ terminal Linux.

Thêm một mô hình vào so sánh chỉ tốn một dòng trong danh sách MODELS: không cần SDK, tài khoản hay key mới. Hãy chạy nó trên những tác vụ bạn làm hằng ngày, so sánh thời gian, token và câu trả lời, rồi chọn mô hình dựa trên kết quả đó.