DeepSeek vừa phát hành v3.2-Exp, một mô hình thử nghiệm giúp cắt giảm chi phí API hơn một nửa. Nếu bạn từng làm việc với các mô hình ngôn ngữ lớn, bạn sẽ biết xử lý ngữ cảnh dài rất nhanh trở nên tốn kém. Bản phát hành mới này giải quyết vấn đề đó bằng một kỹ thuật gọi là DeepSeek Sparse Attention.
Trong hướng dẫn này, tôi sẽ giải thích điều gì khiến v3.2 khác với các phiên bản DeepSeek trước đây, cơ chế sparse attention hoạt động ra sao, và cách dùng mô hình trong dự án của bạn. Chúng ta sẽ điểm qua những điều cơ bản khi gọi API và xây dựng một dự án demo để cho thấy mô hình này phát huy hiệu quả ở đâu.
Kết thúc bài, bạn sẽ xây dựng một ứng dụng Streamlit so sánh chi phí giữa các LLM khác nhau, bao gồm DeepSeek v3.2:
Bắt đầu với một chút bối cảnh về DeepSeek và những thay đổi trong bản phát hành này.
Họ mô hình DeepSeek
DeepSeek là một công ty AI mã nguồn mở có trụ sở tại Trung Quốc, xây dựng các mô hình ngôn ngữ lớn theo giấy phép MIT. Các mô hình của họ cạnh tranh với GPT-5 và Claude ở các tác vụ lập luận, lập trình và mục đích chung. Công ty đã phát hành nhiều phiên bản trong năm qua, bao gồm DeepSeek-V3 và DeepSeek-R1, gây chú ý nhờ hiệu năng tốt với chi phí thấp hơn so với các lựa chọn đóng nguồn.
Trước v3.2, bản phát hành gần nhất là v3.1-Terminus, một mô hình 685 tỷ tham số. Dù mang lại hiệu năng vững vàng, xử lý ngữ cảnh dài vẫn tốn kém. Đây là lúc bản thử nghiệm mới phát huy tác dụng.
V3.2-Exp: Bản phát hành thử nghiệm
DeepSeek phát hànhv3.2-Exp vào ngày 29 tháng 9 năm 2025 (2025-09-29). "Exp" là viết tắt của experimental (thử nghiệm), nghĩa là mô hình vẫn đang được kiểm thử và tinh chỉnh. Chưa thể kỳ vọng độ ổn định sản xuất, nhưng bạn có thể dùng cho nghiên cứu và các dự án thử tính năng mới.
Mô hình được xây dựng dựa trên v3.1-Terminus và giữ nguyên kiến trúc 685B tham số. Điểm khác biệt nằm ở cách xử lý thông tin bên trong. Nó dùng định dạng API tương thích OpenAI, nên nếu bạn từng dùng SDK của OpenAI, bạn đã biết cách làm việc với DeepSeek (tôi cũng sẽ giải thích trong bài cách thực hiện cuộc gọi API đầu tiên).
Đổi mới chính: Chi phí và hiệu quả
Điểm thay đổi lớn: DeepSeek giảm giá API hơn 50% so với v3.1. Và hiệu năng vẫn giữ nguyên. Bạn nhận được chất lượng phản hồi tương đương với một nửa chi phí.
Mức giá giảm đến từ cải tiến kỹ thuật gọi là DeepSeek Sparse Attention (DSA). Thay vì để mô hình chú ý tới từng token trong đầu vào (rất tốn tính toán), DSA chọn lọc tập trung vào phần quan trọng. Chúng ta sẽ xem cơ chế này hoạt động thế nào ở phần tiếp theo.
Nếu muốn xem chi tiết kỹ thuật đầy đủ, DeepSeek đã công bốbáo cáo kỹ thuật trên GitHub giải thích thay đổi kiến trúc và kết quả benchmark.
DeepSeek Sparse Attention (DSA) là gì?
Trước khi đi vào code, hãy nói về lý do khiến v3.2 rẻ hơn và nhanh hơn. Câu trả lời nằm ở cách mô hình xử lý đầu vào của bạn.
Cơ chế attention trong transformer: tóm tắt nhanh
Khi bạn gửi văn bản tới một mô hình ngôn ngữ, nó chia nhỏ đầu vào thành token (xấp xỉ từ hoặc mảnh từ). Mô hình cần xác định token nào liên quan tới token nào. Quá trình này gọi là attention.
Trong transformer truyền thống, mỗi token nhìn vào mọi token khác. Nếu bạn có 1.000 token, mỗi token sẽ kiểm tra cả 999 token còn lại. Đó là 1 triệu phép so sánh. Với 10.000 token, bạn có 100 triệu phép so sánh. Bài toán là bậc hai: gấp đôi độ dài đầu vào thì chi phí tính toán tăng gấp bốn.
Đó là lý do xử lý ngữ cảnh dài trở nên đắt đỏ. Hóa đơn API tăng rất nhanh khi tài liệu dài hơn.
Sparse attention nghĩa là gì
Không phải mọi token đều cần nhìn vào mọi token khác. Khi bạn đang đọc câu này, bạn không liên tục đọc lại từng từ trước đó. Bạn tập trung vào phần liên quan.
Sparse attention cũng làm như vậy. Thay vì so sánh mọi token với mọi token, mô hình chọn lọc các phép so sánh quan trọng. Một số cách tiếp cận cũ bao gồm:
Attention thưa theo khối (block-sparse): Chia token thành các khối và chỉ cho phép khối chú ý tới các khối lân cận
Attention cửa sổ cục bộ: Mỗi token chỉ nhìn vào các token trong một khoảng cách cố định
Các phương pháp này tiết kiệm tính toán nhưng cứng nhắc. Chúng quyết định trước token nào được tương tác, bất kể nội dung thực tế. Đôi khi bạn cần một từ ở đầu tài liệu liên kết với điều gì đó ở cuối. Các mẫu cố định có thể bỏ lỡ điều đó.
DeepSeek Sparse Attention (DSA): Cách tiếp cận tinh vi
DSA chọn một hướng khác. Thay vì dùng mẫu cố định, nó học token nào thực sự cần chú ý tới nhau dựa trên chính nội dung. Mô hình chọn các kết nối phù hợp theo thời gian thực.
Cách hoạt động ở mức cao như sau. Trong quá trình huấn luyện, DeepSeek thêm một cơ chế chọn lọc vào mỗi tầng attention. Cơ chế này quan sát các token và quyết định kết nối attention nào đáng để tính toán. Nó giữ lại phần quan trọng và bỏ qua phần còn lại.
Việc chọn lọc không ngẫu nhiên. Mô hình đã học trong quá trình huấn luyện những kiểu kết nối nào quan trọng cho các tác vụ khác nhau. Khi bạn gửi prompt về code, nó tập trung vào các mẫu khác với khi bạn gửi tài liệu pháp lý.
Kết quả: DSA giảm số lượng phép attention mà không làm giảm chất lượng đầu ra. Trong báo cáo kỹ thuật, DeepSeek cho thấy v3.2 đạt hiệu năng gần như tương đương v3.1-Terminus trên các benchmark trong khi thực hiện ít phép tính hơn trên mỗi token. Bạn nhận cùng chất lượng mô hình với chi phí API xấp xỉ một nửa.
Ý nghĩa với nhà phát triển
DSA mang lại những điều sau trong thực tế:
Giảm chi phí API: Trả ít tiền hơn cho cùng chất lượng phản hồi
Xử lý ngữ cảnh dài tốt hơn: Mô hình hỗ trợ cửa sổ ngữ cảnh 128K token và xử lý các đầu vào dài này rẻ hơn so với các mô hình không có sparse attention
Suy luận nhanh hơn: Ít phép tính hơn đồng nghĩa thời gian phản hồi nhanh hơn
Lợi ích thể hiện rõ nhất trong các trường hợp sau:
Phân tích nhiều tài liệu cùng lúc
Duy trì ngữ cảnh trong các cuộc hội thoại dài
Xử lý codebase lớn hoặc tài liệu kỹ thuật
Tóm tắt bài nghiên cứu hoặc hợp đồng pháp lý
Nếu ứng dụng của bạn xử lý đầu vào dài, DSA tạo khác biệt thực sự. Bạn không chỉ tiết kiệm chi phí. Bạn còn nhận hiệu năng tốt hơn ở các tác vụ nơi attention truyền thống gặp khó.
Thực hiện cuộc gọi DeepSeek V3.2 đầu tiên
Giờ bạn đã hiểu DSA hoạt động thế nào, hãy sử dụng mô hình qua API của nó.
Yêu cầu trước
Bạn cần cài Python 3.8 hoặc mới hơn trên máy. Nếu bạn mới làm việc với LLM qua API, bạn có thể xemhướng dẫn học AI của DataCamp để nắm cơ bản. Chúng tôi cũng có hướng dẫn DeepSeek API chi tiết hơn về các phiên bản trước nếu bạn muốn tìm hiểu sâu.
Tin vui: nếu bạn từng dùng API của OpenAI, bạn đã biết cách dùng DeepSeek. Định dạng API là giống hệt.
Thiết lập môi trường
Trước hết, lấy API key từplatform.deepseek.com. Bạn sẽ cần tạo tài khoản nếu chưa có.
Đây là ví dụ cơ bản dùng OpenAI SDK. Điểm khác biệt duy nhất so với API của OpenAI là tham số base_url và API key của bạn:
from openai import OpenAI
from dotenv import load_dotenv
import os
# Load environment variables from .env file
load_dotenv()# Initialize OpenAI-compatible client with DeepSeek endpoint
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com")# Send a chat completion request to DeepSeek v3.2
response = client.chat.completions.create(
model="deepseek-chat",
messages=[{"role":"user","content":"Explain sparse attention in one sentence."}])# Print the model's responseprint(response.choices[0].message.content)Được hỗ trợ bởi
Khi chạy, bạn sẽ nhận phản hồi như:
Sparse attention reduces computational cost by having each token attend to only a subset of relevant tokens rather than all tokens in a sequence.Được hỗ trợ bởi
Mô hình deepseek-chat là chế độ không hiển thị lập luận của v3.2-Exp. Nó xử lý yêu cầu và trả lời mà không hiển thị bước suy nghĩ.
Dùng mô hình reasoning
Nếu bạn muốn xem quá trình lập luận của mô hình, hãy dùng deepseek-reasoner. Mô hình này hiển thị chuỗi suy nghĩ trước khi đưa ra câu trả lời cuối cùng:
# Use deepseek-reasoner to see the model's reasoning process
response = client.chat.completions.create(
model="deepseek-reasoner",
messages=[{"role":"user","content":"Which is larger: 9.11 or 9.8?"}])# Print both reasoning and final answerprint("Reasoning:", response.choices[0].message.reasoning_content)print("Answer:", response.choices[0].message.content)Được hỗ trợ bởi
Kết quả sẽ giống như:
Reasoning: To compare 9.11 and 9.8, I need to look at the digits after the decimal point. 9.11 has digits 1 and 1 after the decimal, making it 9 + 0.11. Meanwhile, 9.8 is 9 + 0.8. Since 0.8 is greater than 0.11, 9.8 is the larger number.
Answer: 9.8 is larger than 9.11.Được hỗ trợ bởi
Mô hình reasoning có thể tạo tối đa 64K token nội dung lập luận (mặc định 32K) trước khi đưa ra câu trả lời cuối. Lưu ý nó không hỗ trợ một số tham số như temperature hoặc top_p. API chính thức của DeepSeek hiện chưa hỗ trợ tham số reasoning_effort để điều khiển độ sâu lập luận (dù một số nhà cung cấp bên thứ ba như LangChain đã thêm vào tích hợp của họ).
Đối tượng phản hồi theo cấu trúc của OpenAI. Bạn có thể truy cập nội dung qua response.choices[0].message.content, kiểm tra số token với response.usage, và xem mô hình dùng qua response.model.
Các cách khác để truy cập DeepSeek v3.2
API không phải là lựa chọn duy nhất. DeepSeek phát hành mô hình dưới dạng mã nguồn mở, nên bạn có thể tự chạy.
Hugging Face: Mô hình có tạihuggingface.co/deepseek-ai/DeepSeek-V3.2-Exp. Bạn có thể dùng các nhà cung cấp suy luận của Hugging Face để chạy mô hình mà không phải quản lý hạ tầng, hoặc tải trọng số về để suy luận cục bộ. Cách cục bộ phù hợp nếu bạn có phần cứng (nghĩ ngân sách trung tâm dữ liệu hoặc một “trang trại” GPU nhỏ trong tủ đồ cho mô hình 685B tham số).
vLLM: Với triển khai tự lưu trữ ở quy mô lớn,vLLM cung cấp suy luận tối ưu hóa với hỗ trợ v3.2. Nó nhanh hơn so với chạy mô hình qua transformers tiêu chuẩn và xử lý batching tốt. Dùng lựa chọn này nếu bạn phục vụ mô hình trong môi trường sản xuất và có hạ tầng tương xứng.
Khi nào dùng mỗi phương pháp:
Dùng API nếu bạn muốn thiết lập nhanh, không muốn quản lý hạ tầng, hoặc có tải công việc biến động
Dùng nhà cung cấp suy luận của Hugging Face nếu bạn muốn lợi ích của dịch vụ lưu trữ với nhiều lựa chọn nhà cung cấp
Tự lưu trữ qua trọng số trên Hugging Face nếu bạn cần toàn quyền kiểm soát, có yêu cầu về quyền riêng tư, hoặc muốn thử nghiệm kiến trúc mô hình
Dùng vLLM nếu bạn chạy khối lượng sản xuất lớn và có ngân sách phần cứng
Với đa số nhà phát triển mới bắt đầu, API là lựa chọn phù hợp. Bạn chỉ trả cho những gì dùng, và DeepSeek xử lý phần mở rộng quy mô và bảo trì.
Multi-Document Research Assistant: So sánh hiệu năng ngữ cảnh dài
Bạn đã thấy API của DeepSeek v3.2 hoạt động và đã thực hiện các cuộc gọi đầu tiên. Giờ hãy kiểm tra thực tế với một phép so sánh thế giới thực.
Liệu sparse attention của DeepSeek thực sự tiết kiệm tiền khi xử lý ngữ cảnh dài? Và hiệu năng so với GPT-5 và Claude Sonnet 4.5 ra sao?
Để trả lời, chúng ta sẽ xây dựng công cụ so sánh nạp nhiều bài nghiên cứu vào cùng một ngữ cảnh và gửi cùng câu hỏi tới cả bốn mô hình. Bạn sẽ thấy chính xác từng mô hình tốn bao nhiêu, phản hồi nhanh thế nào, và chất lượng câu trả lời ra sao.
Phần lớn hệ thống phân tích tài liệu dùng RAG: chia tài liệu thành đoạn nhỏ, nhúng và chỉ truy xuất các đoạn liên quan khi bạn hỏi. Cách này hiệu quả cho tra cứu đơn giản, nhưng bạn mất các mối liên hệ giữa những phần khác nhau của tài liệu. Nếu câu trả lời đòi hỏi hiểu mối quan hệ giữa nhiều bài báo thì sao?
Mô hình ngữ cảnh dài giải quyết bằng cách đọc tất cả cùng lúc. Không chia nhỏ, không truy hồi, không thiếu bối cảnh. Bạn nạp toàn bộ tài liệu vào một prompt và để mô hình thấy bức tranh toàn cảnh. Vấn đề là chi phí. Với attention truyền thống, xử lý hơn 50.000 token trở nên rất tốn kém.
Đây là lúc chúng ta kiểm thử sparse attention của DeepSeek. Chúng ta sẽ xây một ứng dụng nạp ba bài nghiên cứu (khoảng 57.000 token) vào một ngữ cảnh và so sánh cách bốn mô hình xử lý cùng câu hỏi: GPT-5, Claude Sonnet 4.5, DeepSeek v3.2-Exp (có sparse attention), và DeepSeek v3.1-Terminus (phiên bản trước không có sparse attention). Bạn sẽ thấy sự khác biệt về chi phí, thời gian phản hồi, và chất lượng đầu ra cạnh nhau.
Đây là giao diện ứng dụng hoàn chỉnh:
Lưu ý: Phần còn lại trình bày chi tiết cách xây ứng dụng này từ đầu. Bạn không cần xây để hiểu kết quả so sánh, nhưng đi qua code sẽ cho bạn những mẫu thực tiễn để xây ứng dụng ngữ cảnh dài với DeepSeek.
Xây dựng ứng dụng
Chúng ta sẽ xây một ứng dụng Streamlit với ba module hỗ trợ: một để nạp tài liệu, một cho cấu hình mô hình, và một cho xử lý truy vấn. Luồng ứng dụng đơn giản: nạp PDF, chọn mô hình, đặt câu hỏi và so sánh kết quả.
Bắt đầu bằng cách tạo thư mục dự án và cài phụ thuộc:
mkdir multi-document-qa
cd multi-document-qa
uv add streamlit langchain langchain-openai langchain-anthropic langchain-community pypdf tiktoken python-dotenv matplotlib pandasĐược hỗ trợ bởi
Tạo tệp .env với các API key của bạn:
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
DEEPSEEK_API_KEY=your_deepseek_keyĐược hỗ trợ bởi
Tải ba bài nghiên cứu về cơ chế attention:
mkdir documents
cd documents
curl-L-o selective-attention.pdf "https://arxiv.org/pdf/2410.02703"curl-L-o differential-transformer.pdf "https://arxiv.org/pdf/2410.05258"curl-L-o sparse-attention-long-range.pdf "https://arxiv.org/pdf/2406.16747"cd..Được hỗ trợ bởi
Ba bài này tổng cộng 57.204 token khi nạp.
Nạp và đếm token
Tạo document_loader.py:
from langchain_community.document_loaders import PyPDFLoader
import tiktoken
from pathlib import Path
defload_documents(documents_dir="documents"):
docs_path = Path(documents_dir)
pdf_files =list(docs_path.glob("*.pdf"))
all_text =""
document_names =[]# Load each PDF and concatenate with separatorsfor pdf_file insorted(pdf_files):
loader = PyPDFLoader(str(pdf_file))
pages = loader.load()
doc_text ="\n\n".join([page.page_content for page in pages])
all_text +=f"\n\n=== Document: {pdf_file.name} ===\n\n{doc_text}"
document_names.append(pdf_file.name)Được hỗ trợ bởi
Hàm nạp tất cả PDF từ thư mục, trích xuất văn bản từng trang và nối mọi thứ lại bằng dấu phân cách tài liệu.
# Count tokens using GPT-4 encoding (accurate across providers)
encoding = tiktoken.encoding_for_model("gpt-4")
token_count =len(encoding.encode(all_text))return all_text, token_count, document_namesĐược hỗ trợ bởi
Đếm token dùng tiktoken với mã hóa GPT-4, cho ước tính chính xác giữa các nhà cung cấp vì họ dùng tokenization tương tự. Xem đầy đủ document_loader.py trên GitHub.
Cấu hình mô hình và giá
Tạo model_config.py:
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
import os
# Pricing per million tokens (as of October 2025)
MODEL_PRICING ={"gpt-5":{"input":2.50,"output":10.00,"name":"GPT-5"},"claude-sonnet-4-5-20250929":{"input":3.00,"output":15.00,"name":"Claude Sonnet 4.5"},"deepseek-chat":{"input":0.28,"output":0.42,"name":"DeepSeek v3.2-Exp"},"deepseek-chat-v3.1":{"input":0.55,"output":2.19,"name":"DeepSeek v3.1-Terminus"},}Được hỗ trợ bởi
Từ điển giá lưu chi phí trên mỗi triệu token (tháng 10/2025). DeepSeek v3.2 với sparse attention rẻ hơn khoảng 10 lần so với GPT-5 và Claude, còn v3.1 ở giữa với chi phí gấp đôi v3.2.
defget_model(model_name):"""Initialize a chat model by name using LangChain's unified interface."""if model_name =="gpt-5":return ChatOpenAI(model="gpt-5", temperature=0, api_key=os.getenv("OPENAI_API_KEY"))elif model_name =="claude-sonnet-4-5-20250929":return ChatAnthropic(model="claude-sonnet-4-5-20250929", temperature=0,
api_key=os.getenv("ANTHROPIC_API_KEY"))elif model_name =="deepseek-chat":return ChatOpenAI(model="deepseek-chat", temperature=0,
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com")elif model_name =="deepseek-chat-v3.1":# Note: v3.1-Terminus endpoint expires on October 15, 2025return ChatOpenAI(model="deepseek-chat", temperature=0,
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url="https://api.deepseek.com/v3.1_terminus_expires_on_20251015")defcalculate_cost(model_name, input_tokens, output_tokens):"""Calculate total cost based on input and output token usage."""
pricing = MODEL_PRICING[model_name]
input_cost =(input_tokens /1_000_000)* pricing["input"]
output_cost =(output_tokens /1_000_000)* pricing["output"]return input_cost + output_costĐược hỗ trợ bởi
Hàm get_model() khởi tạo từng mô hình qua giao diện hợp nhất của LangChain. Mô hình DeepSeek dùng endpoint tương thích OpenAI với base URL tùy chỉnh. Lưu ý: Endpoint v3.1-Terminus hết hạn vào 15/10/2025. Toàn bộ script model_config.py có trên GitHub.
Truy vấn mô hình kèm theo theo dõi chỉ số
Tạo query_handler.py:
import time
from langchain_core.messages import SystemMessage, HumanMessage
from model_config import get_model, calculate_cost, MODEL_PRICING
defquery_model(model_name, context, question):"""Query a model with document context and track performance metrics."""
model = get_model(model_name)# Embed full document context in system prompt
system_prompt =f"""Use the given context to answer the question.
If you don't know the answer, say you don't know. Keep the answer concise.
Context:
{context}"""
messages =[
SystemMessage(content=system_prompt),
HumanMessage(content=question)]# Track response time
start_time = time.time()Được hỗ trợ bởi
System prompt nhúng toàn bộ 57.000 token tài liệu. Attention truyền thống xử lý mọi token với mọi token khác. Sparse attention của DeepSeek v3.2 bỏ qua các kết nối không liên quan, giảm chi phí.
Các tích hợp LangChain khác nhau trả về số liệu token theo định dạng khác nhau (OpenAI dùng response_metadata, Anthropic dùng usage_metadata), nên chúng ta kiểm tra cả hai. Hàm theo dõi thời gian, trích xuất số token, tính chi phí và trả về một từ điển chứa toàn bộ chỉ số. Xem đầy đủ query_handler.py trên GitHub.
Xây dựng giao diện Streamlit
Tạo app.py:
import streamlit as st
import pandas as pd
import matplotlib.pyplot as plt
from document_loader import load_documents
from query_handler import query_model
from dotenv import load_dotenv
# Load API keys from .env file
load_dotenv()# Configure Streamlit page with wide layout
st.set_page_config(
page_title="Multi-Document Research Assistant",
page_icon="📚",
layout="wide")
st.title("📚 Multi-Document Research Assistant")
st.markdown("Compare long-context performance across GPT-5, Claude Sonnet 4.5, DeepSeek v3.2, and DeepSeek v3.1")Được hỗ trợ bởi
Thiết lập Streamlit tiêu chuẩn với bố cục rộng để so sánh cạnh nhau.
# Sidebar for document loadingwith st.sidebar:
st.header("📄 Documents Loaded")if st.button("Load Documents"):with st.spinner("Loading documents..."):# Load all PDFs and count tokens
context, token_count, doc_names = load_documents("documents")
st.session_state.context = context
st.session_state.token_count = token_count
st.session_state.doc_names = doc_names
# Display loaded documents infoif"token_count"in st.session_state:
st.success(f"✅ Loaded {len(st.session_state.doc_names)} documents")
st.metric("Total Tokens",f"{st.session_state.token_count:,}")
st.write("**Documents:**")for name in st.session_state.doc_names:
st.write(f"• {name}")Được hỗ trợ bởi
Thanh bên nạp tài liệu và hiển thị số token. Session state của Streamlit giữ tài liệu giữa các tương tác.
# Main content areaif"context"notin st.session_state:
st.info("👈 Click 'Load Documents' in the sidebar to begin")else:
st.subheader("Select Models to Compare")
col1, col2, col3, col4 = st.columns(4)# Model selection checkboxeswith col1:
use_gpt5 = st.checkbox("GPT-5", value=True)with col2:
use_claude = st.checkbox("Claude Sonnet 4.5", value=True)with col3:
use_deepseek_v32 = st.checkbox("DeepSeek v3.2-Exp", value=True)with col4:
use_deepseek_v31 = st.checkbox("DeepSeek v3.1-Terminus", value=True)# Sample questions for quick testing
sample_questions =["Compare the main approaches to attention mechanisms described in these documents","What are the key differences between sparse and dense attention?","Summarize the common themes across all documents"]Được hỗ trợ bởi
Bốn ô chọn để chọn mô hình và sẵn các câu hỏi mẫu.
# Question input with samples
question_choice = st.selectbox("Select a sample question or write your own:",["Custom"]+ sample_questions
)if question_choice =="Custom":
question = st.text_area("Enter your question:", height=100)else:
question = st.text_area("Enter your question:", value=question_choice, height=100)# Query button and model executionif st.button("🚀 Query Models",type="primary"):ifnot question:
st.error("Please enter a question")else:# Build list of selected models
selected_models =[]if use_gpt5:
selected_models.append("gpt-5")if use_claude:
selected_models.append("claude-sonnet-4-5-20250929")if use_deepseek_v32:
selected_models.append("deepseek-chat")if use_deepseek_v31:
selected_models.append("deepseek-chat-v3.1")Được hỗ trợ bởi
Người dùng chọn câu hỏi hoặc tự viết, rồi bấm “Query Models” để chạy so sánh trên các mô hình đã chọn.
results =[]# Query each model sequentially with progress indicatorfor model_name in selected_models:with st.spinner(f"Querying {model_name}..."):
result = query_model(
model_name,
st.session_state.context,
question
)
results.append(result)# Store results in session state for persistence
st.session_state.results = resultsĐược hỗ trợ bởi
Mỗi mô hình được truy vấn tuần tự với spinner hiển thị tiến trình.
# Display results if availableif"results"in st.session_state:
st.divider()
st.subheader("📊 Results")
results = st.session_state.results
# Show model responses in expandable panels
st.markdown("### Responses")for result in results:with st.expander(f"**{result['model']}** - ${result['cost']:.4f} | {result['time']:.2f}s"):if result['error']:
st.error(f"Error: {result['error']}")else:
st.write(result['response'])# Create metrics comparison table
metrics_df = pd.DataFrame([{"Model": r['model'],"Input Tokens": r['input_tokens'],"Output Tokens": r['output_tokens'],"Total Tokens": r['total_tokens'],"Cost ($)":f"${r['cost']:.4f}","Time (s)":f"{r['time']:.2f}"}for r in results
])
st.dataframe(metrics_df, use_container_width=True)Được hỗ trợ bởi
Kết quả hiển thị phản hồi của từng mô hình trong các bảng có thể mở rộng kèm chi phí và thời gian ở tiêu đề, theo sau là bảng chỉ số có thể sắp xếp.
# Create visualization charts
fig, axes = plt.subplots(2,2, figsize=(12,10))# Chart 1: Cost comparison bar chart
axes[0,0].bar([r['model']for r in results],[r['cost']for r in results],
color=['#1f77b4','#ff7f0e','#2ca02c','#d62728'][:len(results)])
axes[0,0].set_title('Cost Comparison')
axes[0,0].set_ylabel('Cost ($)')
axes[0,0].tick_params(axis='x', rotation=45)# Chart 2: Response time bar chart
axes[0,1].bar([r['model']for r in results],[r['time']for r in results],
color=['#1f77b4','#ff7f0e','#2ca02c','#d62728'][:len(results)])
axes[0,1].set_title('Response Time Comparison')
axes[0,1].set_ylabel('Time (seconds)')# Chart 3: Token usage grouped bar chart
models =[r['model']for r in results]
input_tokens =[r['input_tokens']for r in results]
output_tokens =[r['output_tokens']for r in results]
x =range(len(models))
width =0.35
axes[1,0].bar([i - width/2for i in x], input_tokens, width, label='Input', color='#1f77b4')
axes[1,0].bar([i + width/2for i in x], output_tokens, width, label='Output', color='#ff7f0e')
axes[1,0].set_title('Token Usage Comparison')
axes[1,0].legend()Được hỗ trợ bởi
Bốn biểu đồ matplotlib trong lưới 2x2: cột chi phí, cột thời gian, cột nhóm số token và biểu đồ tán xạ chi phí so với thời gian.
# Chart 4: Cost vs time tradeoff scatter plot
axes[1,1].scatter([r['cost']for r in results],[r['time']for r in results],
s=100, alpha=0.6, color=['#1f77b4','#ff7f0e','#2ca02c','#d62728'][:len(results)])for i, r inenumerate(results):
axes[1,1].annotate(r['model'],(r['cost'], r['time']), fontsize=8, ha='right')
axes[1,1].set_title('Cost vs Time Trade-off')
axes[1,1].set_xlabel('Cost ($)')
axes[1,1].set_ylabel('Time (seconds)')
axes[1,1].grid(True, alpha=0.3)
plt.tight_layout()
st.pyplot(fig)# Display key findingsiflen(results)>1:
cheapest =min(results, key=lambda x: x['cost'])
fastest =min(results, key=lambda x: x['time'])
col1, col2 = st.columns(2)with col1:
st.metric("Most Cost-Effective", cheapest['model'],f"${cheapest['cost']:.4f}")with col2:
st.metric("Fastest Response", fastest['model'],f"{fastest['time']:.2f}s")Được hỗ trợ bởi
Các phát hiện chính tự động nêu bật mô hình rẻ nhất và nhanh nhất. Xem đầy đủ app.py trên GitHub.
Bấm “Load Documents” để nạp ba tệp PDF (tổng 57.204 token). Chọn mô hình để so sánh (mặc định cả bốn), chọn hoặc viết câu hỏi, rồi bấm “Query Models”.
Thời gian phản hồi dự kiến cho ngữ cảnh 57.000 token:
Claude Sonnet 4.5: 15–20 giây
DeepSeek v3.2: 30–35 giây
DeepSeek v3.1: 35–40 giây
GPT-5: 40–45 giây
Kết quả: Phân tích chi phí và hiệu năng
GPT-5 xử lý 56.937 token đầu vào và tạo 1.996 token đầu ra với chi phí $0,1623 trong 42,28 giây. Claude Sonnet 4.5 xử lý 65.855 token đầu vào và tạo 485 token đầu ra với chi phí $0,2048 trong 16,13 giây — nhanh nhất nhưng đắt nhất. DeepSeek v3.2-Exp xử lý 56.842 token đầu vào và tạo 698 token đầu ra chỉ với $0,0162 trong 32,16 giây. DeepSeek v3.1-Terminus xử lý 56.842 token đầu vào và tạo 700 token đầu ra với $0,0328 trong 35,85 giây.
So sánh giữa v3.1 và v3.2 cho thấy tác động của sparse attention. Cả hai xử lý đầu vào giống hệt và cho đầu ra gần như tương đương (698 so với 700 token), nhưng v3.2 có chi phí bằng một nửa ($0,0162 so với $0,0328) và chạy nhanh hơn đôi chút (32,16 giây so với 35,85 giây). Đó là giảm chi phí 2 lần chỉ nhờ sparse attention.
So với GPT-5 và Claude, v3.2 rẻ hơn GPT-5 10 lần ($0,0162 so với $0,1623) và rẻ hơn Claude 13 lần ($0,0162 so với $0,2048). Với 100 truy vấn có độ dài này, bạn sẽ chi $16,20 với DeepSeek v3.2 so với $162,30 với GPT-5 hoặc $204,80 với Claude.
Các biểu đồ xác nhận vị trí của DeepSeek v3.2 ở góc dưới bên trái trên đồ thị đánh đổi chi phí-thời gian: rẻ nhất tổng thể ở $0,0162 trong khi vẫn duy trì tốc độ hợp lý ở 32 giây. Claude đánh đổi chi phí lấy tốc độ (đắt nhưng nhanh nhất), GPT-5 tụt hậu ở cả hai chỉ số (đắt và chậm nhất), còn v3.1 ở giữa. Biểu đồ số token cho thấy tất cả mô hình xử lý kích thước đầu vào tương tự, nhưng độ dài đầu ra khác nhau — GPT-5 tạo phản hồi dài nhất với 1.996 token, Claude ngắn gọn ở 485 token, và cả hai phiên bản DeepSeek tạo đầu ra tương tự khoảng 700 token.
Khi nào cách tiếp cận này phù hợp
Nạp toàn bộ tài liệu vào ngữ cảnh hiệu quả nhất khi bạn cần hiểu xuyên tài liệu. Nếu câu hỏi đòi hỏi kết nối ý tưởng giữa ba bài khác nhau, chia nhỏ và truy hồi có thể bỏ lỡ những kết nối đó. Mô hình cần nhìn toàn bộ cùng lúc.
Mẫu này phù hợp với nhiều trường hợp:
Nghiên cứu và phân tích: So sánh nhiều bài báo, báo cáo hoặc bài viết, nơi mối quan hệ quan trọng hơn việc tìm các sự kiện cụ thể.
Rà soát tài liệu pháp lý: So sánh hợp đồng, phân tích chính sách hoặc rà soát quy định, nơi bối cảnh và khác biệt tinh tế rất quan trọng.
Tài liệu kỹ thuật: Hiểu mối liên hệ giữa các tài liệu API hoặc thông số kỹ thuật khác nhau.
Sáng tạo nội dung dài: Viết tổng hợp thông tin từ nhiều nguồn nhưng vẫn giữ ý thức về những gì mỗi nguồn đề cập.
Cách tiếp cận này không phù hợp khi:
Tài liệu quá lớn: Hầu hết mô hình giới hạn 128K–200K token. Nếu vượt quá, bạn cần chia nhỏ.
Bạn đang tìm thông tin: RAG với truy hồi phù hợp hơn cho truy vấn kiểu “tìm câu trả lời cho X” khi bạn biết thông tin nằm ở một phần cụ thể.
Bạn có quá nhiều tài liệu: Nạp 20 tài liệu với độ dài đầy đủ có thể vượt giới hạn ngữ cảnh. Hãy cân nhắc cách tiếp cận lai để lọc tài liệu trước khi nạp.
Ngân sách không giới hạn: Nếu chi phí không thành vấn đề, GPT-5 hoặc Claude có thể cho phản hồi nhỉnh hơn cho truy vấn phức tạp.
Sparse attention của DeepSeek thay đổi bài toán kinh tế của xử lý ngữ cảnh dài. Điều từng tốn $0,15–0,20 mỗi truy vấn giờ còn $0,01–0,02. Điều đó khiến cách tiếp cận toàn ngữ cảnh trở nên khả thi cho ứng dụng chạy hàng trăm hoặc hàng nghìn truy vấn mỗi ngày.
Kết luận
Sparse attention của DeepSeek v3.2 mang lại cùng chất lượng mô hình với một nửa chi phí so với v3.1. So sánh đa tài liệu chúng ta xây đã cho thấy điều này trong thực tế. Xử lý 57.000 token tốn $0,0162 với v3.2 so với $0,0328 với v3.1, và cả hai cho đầu ra gần như giống nhau. So với GPT-5 và Claude, v3.2 rẻ hơn 10–13 lần trong khi vẫn giữ thời gian phản hồi hợp lý. Với các ứng dụng thường xuyên xử lý ngữ cảnh dài, khoản tiết kiệm này cộng dồn rất nhanh.
Nếu bạn đang làm về phân tích tài liệu, công cụ nghiên cứu, hoặc bất kỳ ứng dụng nào xử lý ngữ cảnh dài, v3.2 là lựa chọn đáng thử. Chỉ cần nhớ nó vẫn là thử nghiệm, nên hãy kiểm thử kỹ trước khi đưa vào sản xuất.
Để tìm hiểu thêm về những cập nhật mới nhất trong AI, xem các blog sau:
Tôi là người sáng tạo nội dung về khoa học dữ liệu với hơn 2 năm kinh nghiệm và là một trong những tài khoản có lượng người theo dõi lớn nhất trên Medium. Tôi thích viết các bài chuyên sâu về AI và ML với chút giọng điệu mỉa mai, vì bạn cũng phải làm gì đó để chúng bớt khô khan. Tôi đã xuất bản hơn 130 bài viết và một khóa học trên DataCamp, cùng với một khóa nữa đang được thực hiện. Nội dung của tôi đã được hơn 5 triệu lượt xem, trong đó 20 nghìn người đã trở thành người theo dõi trên cả Medium và LinkedIn.
DeepSeek vừa phát hành v3.2-Exp, một mô hình thử nghiệm giúp cắt giảm chi phí API hơn một nửa. Nếu bạn từng làm việc với các mô hình ngôn ngữ lớn, bạn sẽ biết xử lý ngữ cảnh dài rất nhanh trở nên tốn kém. Bản phát hành mới này giải quyết vấn đề đó bằng một kỹ thuật gọi là DeepSeek Sparse Attention.
Trong hướng dẫn này, tôi sẽ giải thích điều gì khiến v3.2 khác với các phiên bản DeepSeek trước đây, cơ chế sparse attention hoạt động ra sao, và cách dùng mô hình trong dự án của bạn. Chúng ta sẽ điểm qua những điều cơ bản khi gọi API và xây dựng một dự án demo để cho thấy mô hình này phát huy hiệu quả ở đâu.
Kết thúc bài, bạn sẽ xây dựng một ứng dụng Streamlit so sánh chi phí giữa các LLM khác nhau, bao gồm DeepSeek v3.2:
Tôi cũng khuyên bạn xem dự án demo về biến thể DeepSeek-V3.2-Speciale mới.
DeepSeek V3.2 là gì?
Bắt đầu với một chút bối cảnh về DeepSeek và những thay đổi trong bản phát hành này.
Họ mô hình DeepSeek
DeepSeek là một công ty AI mã nguồn mở có trụ sở tại Trung Quốc, xây dựng các mô hình ngôn ngữ lớn theo giấy phép MIT. Các mô hình của họ cạnh tranh với GPT-5 và Claude ở các tác vụ lập luận, lập trình và mục đích chung. Công ty đã phát hành nhiều phiên bản trong năm qua, bao gồm DeepSeek-V3 và DeepSeek-R1, gây chú ý nhờ hiệu năng tốt với chi phí thấp hơn so với các lựa chọn đóng nguồn.
Trước v3.2, bản phát hành gần nhất là
v3.1-Terminus, một mô hình 685 tỷ tham số. Dù mang lại hiệu năng vững vàng, xử lý ngữ cảnh dài vẫn tốn kém. Đây là lúc bản thử nghiệm mới phát huy tác dụng.V3.2-Exp: Bản phát hành thử nghiệm
DeepSeek phát hành v3.2-Exp vào ngày 29 tháng 9 năm 2025 (2025-09-29). "Exp" là viết tắt của experimental (thử nghiệm), nghĩa là mô hình vẫn đang được kiểm thử và tinh chỉnh. Chưa thể kỳ vọng độ ổn định sản xuất, nhưng bạn có thể dùng cho nghiên cứu và các dự án thử tính năng mới.
Mô hình được xây dựng dựa trên v3.1-Terminus và giữ nguyên kiến trúc 685B tham số. Điểm khác biệt nằm ở cách xử lý thông tin bên trong. Nó dùng định dạng API tương thích OpenAI, nên nếu bạn từng dùng SDK của OpenAI, bạn đã biết cách làm việc với DeepSeek (tôi cũng sẽ giải thích trong bài cách thực hiện cuộc gọi API đầu tiên).
Đổi mới chính: Chi phí và hiệu quả
Điểm thay đổi lớn: DeepSeek giảm giá API hơn 50% so với v3.1. Và hiệu năng vẫn giữ nguyên. Bạn nhận được chất lượng phản hồi tương đương với một nửa chi phí.
Mức giá giảm đến từ cải tiến kỹ thuật gọi là DeepSeek Sparse Attention (DSA). Thay vì để mô hình chú ý tới từng token trong đầu vào (rất tốn tính toán), DSA chọn lọc tập trung vào phần quan trọng. Chúng ta sẽ xem cơ chế này hoạt động thế nào ở phần tiếp theo.
Nếu muốn xem chi tiết kỹ thuật đầy đủ, DeepSeek đã công bố báo cáo kỹ thuật trên GitHub giải thích thay đổi kiến trúc và kết quả benchmark.
DeepSeek Sparse Attention (DSA) là gì?
Trước khi đi vào code, hãy nói về lý do khiến v3.2 rẻ hơn và nhanh hơn. Câu trả lời nằm ở cách mô hình xử lý đầu vào của bạn.
Cơ chế attention trong transformer: tóm tắt nhanh
Khi bạn gửi văn bản tới một mô hình ngôn ngữ, nó chia nhỏ đầu vào thành token (xấp xỉ từ hoặc mảnh từ). Mô hình cần xác định token nào liên quan tới token nào. Quá trình này gọi là attention.
Trong transformer truyền thống, mỗi token nhìn vào mọi token khác. Nếu bạn có 1.000 token, mỗi token sẽ kiểm tra cả 999 token còn lại. Đó là 1 triệu phép so sánh. Với 10.000 token, bạn có 100 triệu phép so sánh. Bài toán là bậc hai: gấp đôi độ dài đầu vào thì chi phí tính toán tăng gấp bốn.
Đó là lý do xử lý ngữ cảnh dài trở nên đắt đỏ. Hóa đơn API tăng rất nhanh khi tài liệu dài hơn.
Sparse attention nghĩa là gì
Không phải mọi token đều cần nhìn vào mọi token khác. Khi bạn đang đọc câu này, bạn không liên tục đọc lại từng từ trước đó. Bạn tập trung vào phần liên quan.
Sparse attention cũng làm như vậy. Thay vì so sánh mọi token với mọi token, mô hình chọn lọc các phép so sánh quan trọng. Một số cách tiếp cận cũ bao gồm:
Các phương pháp này tiết kiệm tính toán nhưng cứng nhắc. Chúng quyết định trước token nào được tương tác, bất kể nội dung thực tế. Đôi khi bạn cần một từ ở đầu tài liệu liên kết với điều gì đó ở cuối. Các mẫu cố định có thể bỏ lỡ điều đó.
DeepSeek Sparse Attention (DSA): Cách tiếp cận tinh vi
DSA chọn một hướng khác. Thay vì dùng mẫu cố định, nó học token nào thực sự cần chú ý tới nhau dựa trên chính nội dung. Mô hình chọn các kết nối phù hợp theo thời gian thực.
Cách hoạt động ở mức cao như sau. Trong quá trình huấn luyện, DeepSeek thêm một cơ chế chọn lọc vào mỗi tầng attention. Cơ chế này quan sát các token và quyết định kết nối attention nào đáng để tính toán. Nó giữ lại phần quan trọng và bỏ qua phần còn lại.
Việc chọn lọc không ngẫu nhiên. Mô hình đã học trong quá trình huấn luyện những kiểu kết nối nào quan trọng cho các tác vụ khác nhau. Khi bạn gửi prompt về code, nó tập trung vào các mẫu khác với khi bạn gửi tài liệu pháp lý.
Kết quả: DSA giảm số lượng phép attention mà không làm giảm chất lượng đầu ra. Trong báo cáo kỹ thuật, DeepSeek cho thấy v3.2 đạt hiệu năng gần như tương đương v3.1-Terminus trên các benchmark trong khi thực hiện ít phép tính hơn trên mỗi token. Bạn nhận cùng chất lượng mô hình với chi phí API xấp xỉ một nửa.
Ý nghĩa với nhà phát triển
DSA mang lại những điều sau trong thực tế:
Lợi ích thể hiện rõ nhất trong các trường hợp sau:
Nếu ứng dụng của bạn xử lý đầu vào dài, DSA tạo khác biệt thực sự. Bạn không chỉ tiết kiệm chi phí. Bạn còn nhận hiệu năng tốt hơn ở các tác vụ nơi attention truyền thống gặp khó.
Thực hiện cuộc gọi DeepSeek V3.2 đầu tiên
Giờ bạn đã hiểu DSA hoạt động thế nào, hãy sử dụng mô hình qua API của nó.
Yêu cầu trước
Bạn cần cài Python 3.8 hoặc mới hơn trên máy. Nếu bạn mới làm việc với LLM qua API, bạn có thể xem hướng dẫn học AI của DataCamp để nắm cơ bản. Chúng tôi cũng có hướng dẫn DeepSeek API chi tiết hơn về các phiên bản trước nếu bạn muốn tìm hiểu sâu.
Tin vui: nếu bạn từng dùng API của OpenAI, bạn đã biết cách dùng DeepSeek. Định dạng API là giống hệt.
Thiết lập môi trường
Trước hết, lấy API key từ platform.deepseek.com. Bạn sẽ cần tạo tài khoản nếu chưa có.
Cài đặt các gói cần thiết:
Tạo tệp
.envtrong thư mục dự án và thêm API key của bạn:Cuộc gọi API đầu tiên của bạn
Đây là ví dụ cơ bản dùng OpenAI SDK. Điểm khác biệt duy nhất so với API của OpenAI là tham số
base_urlvà API key của bạn:Khi chạy, bạn sẽ nhận phản hồi như:
Mô hình
deepseek-chatlà chế độ không hiển thị lập luận củav3.2-Exp. Nó xử lý yêu cầu và trả lời mà không hiển thị bước suy nghĩ.Dùng mô hình reasoning
Nếu bạn muốn xem quá trình lập luận của mô hình, hãy dùng
deepseek-reasoner. Mô hình này hiển thị chuỗi suy nghĩ trước khi đưa ra câu trả lời cuối cùng:Kết quả sẽ giống như:
Mô hình reasoning có thể tạo tối đa 64K token nội dung lập luận (mặc định 32K) trước khi đưa ra câu trả lời cuối. Lưu ý nó không hỗ trợ một số tham số như
temperaturehoặctop_p. API chính thức của DeepSeek hiện chưa hỗ trợ tham sốreasoning_effortđể điều khiển độ sâu lập luận (dù một số nhà cung cấp bên thứ ba như LangChain đã thêm vào tích hợp của họ).Đối tượng phản hồi theo cấu trúc của OpenAI. Bạn có thể truy cập nội dung qua
response.choices[0].message.content, kiểm tra số token vớiresponse.usage, và xem mô hình dùng quaresponse.model.Các cách khác để truy cập DeepSeek v3.2
API không phải là lựa chọn duy nhất. DeepSeek phát hành mô hình dưới dạng mã nguồn mở, nên bạn có thể tự chạy.
Hugging Face: Mô hình có tại huggingface.co/deepseek-ai/DeepSeek-V3.2-Exp. Bạn có thể dùng các nhà cung cấp suy luận của Hugging Face để chạy mô hình mà không phải quản lý hạ tầng, hoặc tải trọng số về để suy luận cục bộ. Cách cục bộ phù hợp nếu bạn có phần cứng (nghĩ ngân sách trung tâm dữ liệu hoặc một “trang trại” GPU nhỏ trong tủ đồ cho mô hình 685B tham số).
vLLM: Với triển khai tự lưu trữ ở quy mô lớn, vLLM cung cấp suy luận tối ưu hóa với hỗ trợ v3.2. Nó nhanh hơn so với chạy mô hình qua transformers tiêu chuẩn và xử lý batching tốt. Dùng lựa chọn này nếu bạn phục vụ mô hình trong môi trường sản xuất và có hạ tầng tương xứng.
Khi nào dùng mỗi phương pháp:
Với đa số nhà phát triển mới bắt đầu, API là lựa chọn phù hợp. Bạn chỉ trả cho những gì dùng, và DeepSeek xử lý phần mở rộng quy mô và bảo trì.
Multi-Document Research Assistant: So sánh hiệu năng ngữ cảnh dài
Bạn đã thấy API của DeepSeek v3.2 hoạt động và đã thực hiện các cuộc gọi đầu tiên. Giờ hãy kiểm tra thực tế với một phép so sánh thế giới thực.
Liệu sparse attention của DeepSeek thực sự tiết kiệm tiền khi xử lý ngữ cảnh dài? Và hiệu năng so với GPT-5 và Claude Sonnet 4.5 ra sao?
Để trả lời, chúng ta sẽ xây dựng công cụ so sánh nạp nhiều bài nghiên cứu vào cùng một ngữ cảnh và gửi cùng câu hỏi tới cả bốn mô hình. Bạn sẽ thấy chính xác từng mô hình tốn bao nhiêu, phản hồi nhanh thế nào, và chất lượng câu trả lời ra sao.
Phần lớn hệ thống phân tích tài liệu dùng RAG: chia tài liệu thành đoạn nhỏ, nhúng và chỉ truy xuất các đoạn liên quan khi bạn hỏi. Cách này hiệu quả cho tra cứu đơn giản, nhưng bạn mất các mối liên hệ giữa những phần khác nhau của tài liệu. Nếu câu trả lời đòi hỏi hiểu mối quan hệ giữa nhiều bài báo thì sao?
Mô hình ngữ cảnh dài giải quyết bằng cách đọc tất cả cùng lúc. Không chia nhỏ, không truy hồi, không thiếu bối cảnh. Bạn nạp toàn bộ tài liệu vào một prompt và để mô hình thấy bức tranh toàn cảnh. Vấn đề là chi phí. Với attention truyền thống, xử lý hơn 50.000 token trở nên rất tốn kém.
Đây là lúc chúng ta kiểm thử sparse attention của DeepSeek. Chúng ta sẽ xây một ứng dụng nạp ba bài nghiên cứu (khoảng 57.000 token) vào một ngữ cảnh và so sánh cách bốn mô hình xử lý cùng câu hỏi: GPT-5, Claude Sonnet 4.5, DeepSeek v3.2-Exp (có sparse attention), và DeepSeek v3.1-Terminus (phiên bản trước không có sparse attention). Bạn sẽ thấy sự khác biệt về chi phí, thời gian phản hồi, và chất lượng đầu ra cạnh nhau.
Đây là giao diện ứng dụng hoàn chỉnh:
Lưu ý: Phần còn lại trình bày chi tiết cách xây ứng dụng này từ đầu. Bạn không cần xây để hiểu kết quả so sánh, nhưng đi qua code sẽ cho bạn những mẫu thực tiễn để xây ứng dụng ngữ cảnh dài với DeepSeek.
Xây dựng ứng dụng
Chúng ta sẽ xây một ứng dụng Streamlit với ba module hỗ trợ: một để nạp tài liệu, một cho cấu hình mô hình, và một cho xử lý truy vấn. Luồng ứng dụng đơn giản: nạp PDF, chọn mô hình, đặt câu hỏi và so sánh kết quả.
Bắt đầu bằng cách tạo thư mục dự án và cài phụ thuộc:
Tạo tệp
.envvới các API key của bạn:Tải ba bài nghiên cứu về cơ chế attention:
Ba bài này tổng cộng 57.204 token khi nạp.
Nạp và đếm token
Tạo
document_loader.py:Hàm nạp tất cả PDF từ thư mục, trích xuất văn bản từng trang và nối mọi thứ lại bằng dấu phân cách tài liệu.
Đếm token dùng tiktoken với mã hóa GPT-4, cho ước tính chính xác giữa các nhà cung cấp vì họ dùng tokenization tương tự. Xem đầy đủ document_loader.py trên GitHub.
Cấu hình mô hình và giá
Tạo
model_config.py:Từ điển giá lưu chi phí trên mỗi triệu token (tháng 10/2025). DeepSeek v3.2 với sparse attention rẻ hơn khoảng 10 lần so với GPT-5 và Claude, còn v3.1 ở giữa với chi phí gấp đôi v3.2.
Hàm
get_model()khởi tạo từng mô hình qua giao diện hợp nhất của LangChain. Mô hình DeepSeek dùng endpoint tương thích OpenAI với base URL tùy chỉnh. Lưu ý: Endpoint v3.1-Terminus hết hạn vào 15/10/2025. Toàn bộ script model_config.py có trên GitHub.Truy vấn mô hình kèm theo theo dõi chỉ số
Tạo
query_handler.py:System prompt nhúng toàn bộ 57.000 token tài liệu. Attention truyền thống xử lý mọi token với mọi token khác. Sparse attention của DeepSeek v3.2 bỏ qua các kết nối không liên quan, giảm chi phí.
Các tích hợp LangChain khác nhau trả về số liệu token theo định dạng khác nhau (OpenAI dùng
response_metadata, Anthropic dùngusage_metadata), nên chúng ta kiểm tra cả hai. Hàm theo dõi thời gian, trích xuất số token, tính chi phí và trả về một từ điển chứa toàn bộ chỉ số. Xem đầy đủ query_handler.py trên GitHub.Xây dựng giao diện Streamlit
Tạo
app.py:Thiết lập Streamlit tiêu chuẩn với bố cục rộng để so sánh cạnh nhau.
Thanh bên nạp tài liệu và hiển thị số token. Session state của Streamlit giữ tài liệu giữa các tương tác.
Bốn ô chọn để chọn mô hình và sẵn các câu hỏi mẫu.
Người dùng chọn câu hỏi hoặc tự viết, rồi bấm “Query Models” để chạy so sánh trên các mô hình đã chọn.
Mỗi mô hình được truy vấn tuần tự với spinner hiển thị tiến trình.
Kết quả hiển thị phản hồi của từng mô hình trong các bảng có thể mở rộng kèm chi phí và thời gian ở tiêu đề, theo sau là bảng chỉ số có thể sắp xếp.
Bốn biểu đồ matplotlib trong lưới 2x2: cột chi phí, cột thời gian, cột nhóm số token và biểu đồ tán xạ chi phí so với thời gian.
Các phát hiện chính tự động nêu bật mô hình rẻ nhất và nhanh nhất. Xem đầy đủ app.py trên GitHub.
Chạy phép so sánh
Khởi động ứng dụng:
Bấm “Load Documents” để nạp ba tệp PDF (tổng 57.204 token). Chọn mô hình để so sánh (mặc định cả bốn), chọn hoặc viết câu hỏi, rồi bấm “Query Models”.
Thời gian phản hồi dự kiến cho ngữ cảnh 57.000 token:
Kết quả: Phân tích chi phí và hiệu năng
GPT-5 xử lý 56.937 token đầu vào và tạo 1.996 token đầu ra với chi phí $0,1623 trong 42,28 giây. Claude Sonnet 4.5 xử lý 65.855 token đầu vào và tạo 485 token đầu ra với chi phí $0,2048 trong 16,13 giây — nhanh nhất nhưng đắt nhất. DeepSeek v3.2-Exp xử lý 56.842 token đầu vào và tạo 698 token đầu ra chỉ với $0,0162 trong 32,16 giây. DeepSeek v3.1-Terminus xử lý 56.842 token đầu vào và tạo 700 token đầu ra với $0,0328 trong 35,85 giây.
So sánh giữa v3.1 và v3.2 cho thấy tác động của sparse attention. Cả hai xử lý đầu vào giống hệt và cho đầu ra gần như tương đương (698 so với 700 token), nhưng v3.2 có chi phí bằng một nửa ($0,0162 so với $0,0328) và chạy nhanh hơn đôi chút (32,16 giây so với 35,85 giây). Đó là giảm chi phí 2 lần chỉ nhờ sparse attention.
So với GPT-5 và Claude, v3.2 rẻ hơn GPT-5 10 lần ($0,0162 so với $0,1623) và rẻ hơn Claude 13 lần ($0,0162 so với $0,2048). Với 100 truy vấn có độ dài này, bạn sẽ chi $16,20 với DeepSeek v3.2 so với $162,30 với GPT-5 hoặc $204,80 với Claude.
Các biểu đồ xác nhận vị trí của DeepSeek v3.2 ở góc dưới bên trái trên đồ thị đánh đổi chi phí-thời gian: rẻ nhất tổng thể ở $0,0162 trong khi vẫn duy trì tốc độ hợp lý ở 32 giây. Claude đánh đổi chi phí lấy tốc độ (đắt nhưng nhanh nhất), GPT-5 tụt hậu ở cả hai chỉ số (đắt và chậm nhất), còn v3.1 ở giữa. Biểu đồ số token cho thấy tất cả mô hình xử lý kích thước đầu vào tương tự, nhưng độ dài đầu ra khác nhau — GPT-5 tạo phản hồi dài nhất với 1.996 token, Claude ngắn gọn ở 485 token, và cả hai phiên bản DeepSeek tạo đầu ra tương tự khoảng 700 token.
Khi nào cách tiếp cận này phù hợp
Nạp toàn bộ tài liệu vào ngữ cảnh hiệu quả nhất khi bạn cần hiểu xuyên tài liệu. Nếu câu hỏi đòi hỏi kết nối ý tưởng giữa ba bài khác nhau, chia nhỏ và truy hồi có thể bỏ lỡ những kết nối đó. Mô hình cần nhìn toàn bộ cùng lúc.
Mẫu này phù hợp với nhiều trường hợp:
Cách tiếp cận này không phù hợp khi:
Sparse attention của DeepSeek thay đổi bài toán kinh tế của xử lý ngữ cảnh dài. Điều từng tốn $0,15–0,20 mỗi truy vấn giờ còn $0,01–0,02. Điều đó khiến cách tiếp cận toàn ngữ cảnh trở nên khả thi cho ứng dụng chạy hàng trăm hoặc hàng nghìn truy vấn mỗi ngày.
Kết luận
Sparse attention của DeepSeek v3.2 mang lại cùng chất lượng mô hình với một nửa chi phí so với v3.1. So sánh đa tài liệu chúng ta xây đã cho thấy điều này trong thực tế. Xử lý 57.000 token tốn $0,0162 với v3.2 so với $0,0328 với v3.1, và cả hai cho đầu ra gần như giống nhau. So với GPT-5 và Claude, v3.2 rẻ hơn 10–13 lần trong khi vẫn giữ thời gian phản hồi hợp lý. Với các ứng dụng thường xuyên xử lý ngữ cảnh dài, khoản tiết kiệm này cộng dồn rất nhanh.
Nếu bạn đang làm về phân tích tài liệu, công cụ nghiên cứu, hoặc bất kỳ ứng dụng nào xử lý ngữ cảnh dài, v3.2 là lựa chọn đáng thử. Chỉ cần nhớ nó vẫn là thử nghiệm, nên hãy kiểm thử kỹ trước khi đưa vào sản xuất.
Để tìm hiểu thêm về những cập nhật mới nhất trong AI, xem các blog sau: