[
{
 "id": 2178,
 "slug": "a2a-protocol-la-gi",
 "title": "Giao thức A2A là gì? Khi AI agent nói chuyện với agent",
 "meta_desc": "Giao thức A2A là gì: chuẩn mở để AI agent của các hãng khác nhau giao việc, trao đổi kết quả với nhau. Cách hoạt động, khác MCP, khi nào doanh nghiệp cần.",
 "excerpt": "Khi công ty dùng nhiều AI agent từ nhiều nhà cung cấp, câu hỏi lớn là làm sao để chúng phối hợp mà không phải viết cầu nối riêng cho từng cặp. Giao thức A2A ra đời để giải bài toán đó. Bài viết giải thích A2A bằng ngôn ngữ dễ hiểu, kèm ví dụ cho doanh nghiệp vừa và nhỏ.",
 "answer": "Giao thức A2A (Agent2Agent) là một chuẩn mở giúp các AI agent do những đơn vị khác nhau xây dựng có thể tìm thấy nhau, giao nhiệm vụ, theo dõi tiến độ và nhận kết quả qua một ngôn ngữ chung. A2A được Google công bố năm 2025 và sau đó chuyển sang quản lý dưới Linux Foundation. Mỗi agent công bố một 'thẻ agent' mô tả năng lực; agent khác đọc thẻ đó rồi gửi task qua HTTP với định dạng JSON. A2A bổ sung cho MCP: MCP nối agent với công cụ, dữ liệu; A2A nối agent với agent.",
 "kws": ["giao thức A2A", "A2A protocol là gì", "Agent2Agent", "agent giao tiếp với agent", "A2A và MCP"],
 "sections": [
  {"h2": "Giao thức A2A là gì và giải quyết vấn đề gì", "html": "<p>Giao thức A2A là bộ quy ước chung để một AI agent gửi yêu cầu cho agent khác và nhận lại kết quả, bất kể hai agent được viết bằng framework nào hay chạy trên nền tảng của hãng nào. Hãy hình dung A2A giống như chuẩn email: Gmail và Outlook là hai hệ thống khác nhau nhưng vẫn gửi thư cho nhau được vì cùng tuân theo một giao thức.</p><p>Trước khi có chuẩn chung, nếu agent bán hàng của công ty muốn nhờ agent kế toán kiểm tra công nợ khách, lập trình viên phải viết một đoạn tích hợp riêng. Có ba agent thì cần ba cầu nối, có mười agent thì số cầu nối tăng rất nhanh. Mỗi lần một bên đổi phiên bản, cầu nối dễ gãy.</p><p>A2A giải quyết ba việc chính:</p><ul><li><strong>Khám phá:</strong> agent biết agent kia làm được gì, nhận dữ liệu dạng nào.</li><li><strong>Giao việc và theo dõi:</strong> gửi một task, nhận trạng thái đang làm, cần thêm thông tin, đã xong hoặc thất bại.</li><li><strong>Trao đổi kết quả:</strong> văn bản, file, dữ liệu có cấu trúc được đóng gói theo khuôn chung.</li></ul><p>Điểm quan trọng: A2A không quy định agent suy nghĩ ra sao bên trong. Mỗi agent vẫn là một 'hộp đen', chỉ phần giao tiếp được chuẩn hóa.</p>"},
  {"h2": "Các thành phần chính của A2A", "html": "<p>Để hiểu A2A, chỉ cần nắm bốn khái niệm cốt lõi. Tên gọi có thể thay đổi nhẹ giữa các phiên bản đặc tả, nên khi triển khai thật hãy đối chiếu tài liệu chính thức.</p><h3>Agent Card (thẻ agent)</h3><p>Là một tệp JSON công khai mô tả agent: tên, mô tả, địa chỉ nhận yêu cầu, danh sách kỹ năng, kiểu dữ liệu chấp nhận và cách xác thực. Agent khác đọc thẻ này để quyết định có nên giao việc hay không.</p><h3>Client agent và remote agent</h3><p>Client agent là bên khởi tạo yêu cầu, thường là agent điều phối đang nói chuyện với người dùng. Remote agent là bên nhận việc và thực hiện. Một agent có thể vừa là client trong cuộc trao đổi này, vừa là remote trong cuộc trao đổi khác.</p><h3>Task (nhiệm vụ)</h3><p>Mỗi yêu cầu là một task có mã định danh và vòng đời rõ ràng. Task phù hợp cả việc chạy vài giây lẫn việc kéo dài nhiều giờ, vì client có thể hỏi trạng thái hoặc nhận thông báo đẩy.</p><h3>Message, Part và Artifact</h3><p>Message là lượt trao đổi giữa hai bên. Mỗi message gồm nhiều part: đoạn văn bản, file hoặc dữ liệu JSON. Artifact là sản phẩm cuối cùng của task, ví dụ bản báo cáo hay bảng tính.</p>", "table": {"caption": "Bốn khái niệm cốt lõi của A2A", "head": ["Khái niệm", "Vai trò", "Ví dụ trong công ty"], "rows": [["Agent Card", "Giới thiệu năng lực agent", "Agent kế toán ghi: 'tra công nợ, lập phiếu thu'"], ["Task", "Đơn vị công việc có trạng thái", "Kiểm tra công nợ khách hàng A"], ["Message/Part", "Nội dung trao đổi qua lại", "Hỏi thêm mã số thuế của khách"], ["Artifact", "Kết quả cuối cùng", "File bảng công nợ đã đối chiếu"]]}},
  {"h2": "A2A hoạt động thế nào: một luồng ví dụ", "html": "<p>Giả sử một công ty phân phối thiết bị văn phòng 40 người có ba agent: agent chăm sóc khách hàng trên Zalo, agent kho và agent kế toán. Khách nhắn hỏi: 'Đơn hôm qua bao giờ giao, tôi còn nợ bao nhiêu?'.</p><ol><li>Agent chăm sóc khách hàng (client) đọc Agent Card của agent kho và agent kế toán, thấy đúng kỹ năng cần.</li><li>Gửi task 'tra trạng thái đơn' tới agent kho và task 'tra công nợ' tới agent kế toán qua HTTP.</li><li>Agent kế toán phản hồi trạng thái 'cần thêm thông tin' vì khách có hai mã số thuế; client gửi bổ sung.</li><li>Hai remote agent trả artifact: ngày giao dự kiến và số dư công nợ.</li><li>Client tổng hợp, soạn câu trả lời cho khách, và với số tiền lớn có thể chuyển nhân viên duyệt trước khi gửi.</li></ol><p>Toàn bộ trao đổi dùng định dạng JSON-RPC qua HTTPS, hỗ trợ streaming để báo tiến độ theo thời gian thực. Nhờ vậy agent kho có thể do một nhà cung cấp phần mềm kho làm, agent kế toán do bên khác làm, miễn là cả hai cùng nói A2A.</p><p>Điểm mấu chốt là agent chăm sóc khách hàng không cần truy cập trực tiếp cơ sở dữ liệu kế toán. Nó chỉ nhận kết quả đã được agent kế toán lọc theo quyền, giúp giảm rủi ro lộ dữ liệu.</p>"},
  {"h2": "A2A khác MCP như thế nào", "html": "<p>Hai giao thức này hay bị nhầm vì cùng xuất hiện quanh chủ đề agent. Cách nhớ đơn giản: <strong>MCP là dây nối agent với công cụ</strong>, còn <strong>A2A là dây nối agent với đồng nghiệp agent</strong>.</p><p>Với MCP, agent gọi một công cụ có chức năng hẹp và rõ ràng: đọc file, truy vấn bảng tính, tạo sự kiện lịch. Công cụ không có khả năng tự suy luận, chỉ nhận lệnh và trả dữ liệu. Với A2A, bên nhận là một agent có khả năng lập kế hoạch, hỏi lại, làm việc nhiều bước và có thể tự gọi công cụ riêng của nó.</p><p>Trong một hệ thống thực tế, hai giao thức thường đi cùng nhau. Agent kế toán dùng MCP để đọc phần mềm kế toán, đồng thời dùng A2A để nhận việc từ agent chăm sóc khách hàng.</p>", "table": {"caption": "So sánh nhanh A2A và MCP", "head": ["Tiêu chí", "A2A", "MCP"], "rows": [["Kết nối giữa", "Agent với agent", "Agent với công cụ, dữ liệu"], ["Bên nhận", "Có khả năng tự suy luận", "Thực thi chức năng cố định"], ["Kiểu việc", "Task nhiều bước, có thể dài", "Lệnh gọi ngắn, trả về ngay"], ["Câu hỏi trả lời", "Nhờ ai làm việc này?", "Dùng công cụ nào để làm?"]]}},
  {"h2": "Doanh nghiệp nhỏ có cần quan tâm đến A2A không", "html": "<p>Câu trả lời thẳng: phần lớn doanh nghiệp 10–50 người <strong>chưa cần tự triển khai A2A</strong> ngay. Nếu bạn mới dùng một trợ lý AI hoặc một workflow n8n đơn giản, A2A là tầng hạ tầng mà bạn sẽ hưởng lợi gián tiếp khi các phần mềm bạn mua hỗ trợ nó.</p><p>Bạn nên bắt đầu tìm hiểu khi rơi vào một trong các tình huống sau:</p><ul><li>Công ty đã có từ hai agent trở lên do các bên khác nhau cung cấp và cần chúng phối hợp.</li><li>Bạn đang chọn nền tảng agent cho 2–3 năm tới và muốn tránh bị khóa vào một hãng.</li><li>Đội IT hoặc đối tác đang xây hệ thống multi-agent và cần chuẩn giao tiếp rõ ràng.</li></ul><h3>Khi nào KHÔNG nên dùng A2A</h3><p>Nếu mọi agent đều chạy trong cùng một framework, cùng một đội phát triển, việc gọi hàm nội bộ đơn giản và nhanh hơn. Thêm A2A lúc này chỉ tạo thêm lớp mạng, xác thực và điểm lỗi. Một quy trình cố định gồm vài bước cũng không cần agent nói chuyện với agent; một workflow tự động hóa thông thường là đủ.</p>"},
  {"h2": "Bảo mật và quản trị khi agent giao việc cho nhau", "html": "<p>Khi agent tự giao việc cho agent khác, câu hỏi 'ai cho phép việc này' trở nên quan trọng hơn bao giờ hết. A2A được thiết kế dựa trên các chuẩn web phổ biến như HTTPS và các cơ chế xác thực quen thuộc (OAuth, API key), nhưng chuẩn chỉ cung cấp khung, cấu hình an toàn vẫn là trách nhiệm của doanh nghiệp.</p><p>Checklist tối thiểu trước khi cho agent giao tiếp với nhau:</p><ol><li><strong>Xác thực hai chiều:</strong> remote agent chỉ nhận task từ client đã được cấp quyền.</li><li><strong>Phân quyền theo kỹ năng:</strong> agent chăm sóc khách hàng được hỏi công nợ, nhưng không được ra lệnh xóa hóa đơn.</li><li><strong>Ghi log mọi task:</strong> ai gửi, gửi gì, nhận gì, lúc nào, để truy vết khi có sự cố.</li><li><strong>Chống prompt injection:</strong> nội dung từ agent bên ngoài phải được coi là dữ liệu, không phải mệnh lệnh.</li><li><strong>Điểm duyệt của con người:</strong> các hành động có hậu quả tài chính, pháp lý cần người xác nhận.</li></ol><p>Rủi ro thường bị bỏ quên là chuỗi giao việc dây chuyền: agent A nhờ B, B nhờ C, C truy cập dữ liệu mà A vốn không có quyền xem. Hãy giới hạn độ sâu chuỗi và kiểm tra quyền ở từng mắt xích.</p>"},
  {"h2": "Bắt đầu với A2A từ đâu", "html": "<p>Nếu đội kỹ thuật muốn thử nghiệm, có thể đi theo lộ trình nhỏ gọn sau:</p><ol><li>Đọc đặc tả và ví dụ trong kho mã chính thức của dự án A2A trên GitHub, chú ý số phiên bản đặc tả.</li><li>Chọn một tình huống hẹp, ví dụ agent hỏi đáp nội bộ nhờ agent tra tồn kho.</li><li>Dùng SDK chính thức (tại thời điểm viết có cho Python, JavaScript và một số ngôn ngữ khác) để dựng một remote agent và viết Agent Card.</li><li>Dựng client agent gửi task, thử các trạng thái: thành công, cần thêm thông tin, thất bại.</li><li>Thêm xác thực, log và giới hạn quyền trước khi nối với dữ liệu thật.</li></ol><h3>Lỗi thường gặp</h3><ul><li>Viết Agent Card mô tả kỹ năng quá chung chung khiến client giao nhầm việc.</li><li>Không xử lý trạng thái chờ, làm client treo khi task chạy lâu.</li><li>Để agent bên ngoài gọi thẳng vào hệ thống nội bộ mà không qua lớp kiểm soát quyền.</li></ul><p>Với doanh nghiệp không có đội lập trình, cách thực tế hơn là hỏi nhà cung cấp phần mềm hiện tại về lộ trình hỗ trợ A2A và MCP, rồi ưu tiên những sản phẩm theo chuẩn mở.</p>"}
 ],
 "tip": "Đừng bắt đầu bằng câu hỏi 'có nên dùng A2A không', hãy bắt đầu bằng 'công ty có bao nhiêu agent cần phối hợp'. Khi con số đó từ hai trở lên và đến từ nhiều nhà cung cấp, chuẩn mở như A2A mới thật sự phát huy giá trị.",
 "faq": [
  {"q": "A2A là viết tắt của gì?", "a": "A2A là viết tắt của Agent2Agent, tức giao thức để agent giao tiếp với agent. Nó khác với khái niệm A2A trong thương mại hay ngân hàng."},
  {"q": "Giao thức A2A có miễn phí không?", "a": "Đặc tả A2A là chuẩn mở, mã nguồn và SDK được công bố công khai nên có thể dùng miễn phí. Chi phí phát sinh nằm ở việc phát triển, vận hành agent và mô hình AI bên dưới."},
  {"q": "A2A có thay thế MCP không?", "a": "Không. A2A và MCP giải quyết hai lớp khác nhau: MCP nối agent với công cụ, A2A nối agent với agent. Nhiều hệ thống dùng cả hai cùng lúc."},
  {"q": "Không biết lập trình có dùng được A2A không?", "a": "Bản thân A2A là chuẩn kỹ thuật dành cho nhà phát triển. Người không lập trình sẽ dùng gián tiếp qua các nền tảng agent có hỗ trợ sẵn giao thức này."},
  {"q": "A2A có an toàn không khi agent bên ngoài gửi việc vào?", "a": "Giao thức hỗ trợ xác thực và mã hóa qua HTTPS, nhưng an toàn phụ thuộc cách cấu hình. Cần phân quyền theo kỹ năng, ghi log và có điểm duyệt của con người cho hành động quan trọng."},
  {"q": "Agent Card nằm ở đâu?", "a": "Agent Card thường được công bố tại một đường dẫn chuẩn trên tên miền của agent để client có thể tự tìm. Vị trí chính xác nên kiểm tra theo phiên bản đặc tả đang dùng."}
 ],
 "sources": [
  {"t": "A2A Protocol – GitHub chính thức", "u": "https://github.com/a2aproject/A2A"},
  {"t": "Model Context Protocol – tài liệu chính thức", "u": "https://modelcontextprotocol.io"},
  {"t": "Linux Foundation", "u": "https://www.linuxfoundation.org"}
 ],
 "related": ["mcp-la-gi", "multi-agent-la-gi", "ai-agent-la-gi", "ai-agent-hoat-dong-the-nao", "agentic-workflow-la-gi", "crewai-la-gi", "function-calling-la-gi", "prompt-injection-la-gi"]
},
{
 "id": 2179,
 "slug": "open-weights-la-gi",
 "title": "Open weights là gì? Khác mã nguồn mở thế nào",
 "meta_desc": "Open weights là gì: mô hình AI công bố trọng số để tải về và tự chạy, nhưng chưa chắc là mã nguồn mở. Cách đọc giấy phép và chọn mô hình cho doanh nghiệp.",
 "excerpt": "Nhiều mô hình AI được giới thiệu là 'mở', nhưng mức độ mở rất khác nhau. Open weights chỉ là một phần của bức tranh. Bài viết giúp bạn phân biệt open weights với mã nguồn mở và biết cần kiểm tra gì trước khi dùng cho công việc.",
 "answer": "Open weights là mô hình AI mà nhà phát triển công bố bộ trọng số (weights) đã huấn luyện để bất kỳ ai cũng có thể tải về, chạy trên máy của mình và thường được tinh chỉnh thêm. Tuy nhiên open weights không đồng nghĩa với mã nguồn mở đầy đủ: nhiều mô hình không công bố dữ liệu huấn luyện, mã huấn luyện, và kèm giấy phép có điều kiện như giới hạn số người dùng hay cấm một số mục đích. Doanh nghiệp cần đọc giấy phép của từng mô hình trước khi đưa vào sản phẩm thương mại.",
 "kws": ["open weights là gì", "mô hình trọng số mở", "open weights và mã nguồn mở", "giấy phép mô hình AI", "open weight model"],
 "sections": [
  {"h2": "Open weights là gì: hiểu từ 'trọng số'", "html": "<p>Open weights là cách phát hành mô hình AI trong đó phần trọng số được công khai. Trọng số là hàng tỷ con số mà mô hình học được trong quá trình huấn luyện; chúng quyết định mô hình trả lời ra sao. Có trọng số trong tay, bạn có thể chạy mô hình bằng Ollama, LM Studio hay vLLM mà không cần gọi API của nhà phát triển.</p><p>Để dễ hình dung, hãy so sánh với món ăn:</p><ul><li><strong>Trọng số</strong> giống món ăn đã nấu xong, bạn ăn được, hâm lại được, nêm thêm gia vị được.</li><li><strong>Mã huấn luyện và dữ liệu huấn luyện</strong> giống công thức và nguyên liệu gốc. Thiếu chúng, bạn không nấu lại từ đầu được và không biết món ăn có chứa gì.</li></ul><p>Một mô hình open weights thường đi kèm: tệp trọng số, cấu hình kiến trúc, tokenizer, mã để chạy suy luận và một giấy phép sử dụng. Những gì thường không đi kèm là toàn bộ dữ liệu huấn luyện và quy trình huấn luyện chi tiết.</p><p>Vì vậy, khi đọc tin 'hãng X ra mô hình mở', câu hỏi đúng là: mở những gì, và được phép dùng vào việc gì?</p>"},
  {"h2": "Open weights khác mã nguồn mở như thế nào", "html": "<p>Với phần mềm truyền thống, mã nguồn mở có định nghĩa khá rõ: bạn có quyền dùng, nghiên cứu, sửa đổi và phân phối lại cho mọi mục đích. Với AI, Tổ chức Sáng kiến Nguồn mở (OSI) đã đưa ra định nghĩa AI mã nguồn mở, trong đó yêu cầu không chỉ trọng số mà còn đủ thông tin về dữ liệu và mã để người khác có thể tái tạo, hiểu mô hình một cách thực chất.</p><p>Thực tế, phần lớn mô hình phổ biến hiện nay rơi vào vùng giữa: trọng số mở nhưng dữ liệu không công bố, hoặc giấy phép có điều khoản hạn chế. Gọi chính xác thì đó là open weights, chưa phải open source theo nghĩa chặt.</p>", "table": {"caption": "Ba mức độ 'mở' của mô hình AI", "head": ["Mức độ", "Được công bố", "Bạn làm được gì", "Hạn chế điển hình"], "rows": [["Mô hình đóng", "Chỉ có API", "Gọi API, trả phí theo dùng", "Không tự chạy, không xem bên trong"], ["Open weights", "Trọng số, mã suy luận, giấy phép", "Tự chạy, tinh chỉnh", "Giấy phép có điều kiện, không rõ dữ liệu"], ["Mã nguồn mở đầy đủ", "Trọng số, mã huấn luyện, thông tin dữ liệu", "Tái tạo, kiểm tra, sửa tự do", "Thường kém hơn mô hình lớn nhất về năng lực"]]}},
  {"h2": "Các loại giấy phép thường gặp và điều cần đọc kỹ", "html": "<p>Giấy phép là phần quan trọng nhất nhưng hay bị bỏ qua. Cùng là open weights, có mô hình dùng giấy phép rất thoáng như Apache 2.0 hay MIT, có mô hình dùng giấy phép riêng của hãng với nhiều điều kiện.</p><h3>Giấy phép thoáng</h3><p>Apache 2.0 và MIT cho phép dùng thương mại, sửa đổi, phân phối lại với nghĩa vụ chủ yếu là giữ thông báo bản quyền. Đây là lựa chọn an tâm nhất cho doanh nghiệp muốn nhúng mô hình vào sản phẩm.</p><h3>Giấy phép riêng có điều kiện</h3><p>Một số giấy phép riêng của nhà phát triển có các điều khoản như:</p><ul><li>Giới hạn quy mô người dùng; vượt ngưỡng phải xin phép riêng.</li><li>Chính sách sử dụng chấp nhận được, cấm một số lĩnh vực.</li><li>Yêu cầu ghi tên mô hình gốc khi phát hành sản phẩm phái sinh.</li><li>Hạn chế dùng đầu ra để huấn luyện mô hình cạnh tranh.</li></ul><h3>Giấy phép phi thương mại</h3><p>Chỉ cho nghiên cứu, học tập. Dùng trong chatbot bán hàng hay dịch vụ thu phí là vi phạm. Đây là bẫy phổ biến khi tải mô hình từ Hugging Face mà không đọc trang mô tả.</p><p>Lưu ý: điều khoản có thể thay đổi giữa các phiên bản mô hình. Luôn đọc bản giấy phép đi kèm đúng phiên bản bạn tải.</p>"},
  {"h2": "Lợi ích của mô hình open weights cho doanh nghiệp", "html": "<p>Với một công ty 20–50 người, open weights mở ra những khả năng mà mô hình đóng khó đáp ứng:</p><ul><li><strong>Dữ liệu không rời khỏi công ty:</strong> hợp đồng, bảng lương, hồ sơ khách hàng được xử lý trên máy chủ nội bộ.</li><li><strong>Chi phí dự đoán được:</strong> đầu tư phần cứng một lần, không phụ thuộc hóa đơn token biến động hàng tháng.</li><li><strong>Kiểm soát phiên bản:</strong> mô hình không tự thay đổi hành vi sau một lần cập nhật từ phía nhà cung cấp.</li><li><strong>Tinh chỉnh theo nghiệp vụ:</strong> có thể fine-tune với dữ liệu ngành, văn phong riêng.</li><li><strong>Chạy offline:</strong> hữu ích cho nhà xưởng, chi nhánh mạng yếu.</li></ul><h3>Ví dụ thực tế</h3><p>Một văn phòng kế toán dịch vụ tại TP.HCM muốn AI đọc và tóm tắt hóa đơn, chứng từ của hàng trăm khách. Khách hàng lo ngại dữ liệu bị gửi ra nước ngoài. Giải pháp là chạy một mô hình open weights cỡ vừa trên máy chủ GPU đặt tại văn phòng, kết hợp RAG để tra cứu quy định nội bộ. Dữ liệu nằm trong mạng LAN, quyền truy cập do quản trị viên quản lý.</p>"},
  {"h2": "Hạn chế và khi nào KHÔNG nên chọn open weights", "html": "<p>Open weights không phải lúc nào cũng là lựa chọn tốt hơn. Hãy cân nhắc các điểm yếu sau:</p><ul><li><strong>Năng lực:</strong> mô hình chạy được trên phần cứng vừa phải thường kém các mô hình thương mại lớn nhất ở bài toán suy luận phức tạp, viết dài, đa ngôn ngữ.</li><li><strong>Chi phí vận hành ẩn:</strong> cần người cài đặt, cập nhật, giám sát, sao lưu; máy GPU tốn điện và cần làm mát.</li><li><strong>Bảo mật là việc của bạn:</strong> nhà cung cấp API lo lớp bảo vệ hạ tầng, còn tự chạy thì mọi lỗ hổng cấu hình là trách nhiệm nội bộ.</li><li><strong>Rủi ro pháp lý giấy phép:</strong> dùng sai điều khoản có thể gây tranh chấp khi sản phẩm lớn lên.</li></ul><p>Không nên chọn open weights khi: lượng dùng ít và không đều, công ty không có ai quản trị máy chủ, hoặc bài toán đòi hỏi chất lượng cao nhất hiện có. Trong các trường hợp đó, dùng API với điều khoản không huấn luyện trên dữ liệu khách hàng thường hợp lý hơn. Nhiều doanh nghiệp chọn cách lai: việc nhạy cảm chạy nội bộ, việc phức tạp gửi API.</p>"},
  {"h2": "Checklist chọn mô hình open weights", "html": "<p>Trước khi tải và đưa một mô hình open weights vào dùng thật, đi qua danh sách sau:</p><ol><li><strong>Đọc giấy phép:</strong> có cho dùng thương mại không, có giới hạn quy mô, lĩnh vực không.</li><li><strong>Đọc model card:</strong> mô hình được huấn luyện cho mục đích gì, ngôn ngữ nào, hạn chế đã biết.</li><li><strong>Kiểm tra tiếng Việt:</strong> thử 20–30 câu hỏi thật của công ty, không chỉ dựa vào điểm benchmark tiếng Anh.</li><li><strong>Ước tính phần cứng:</strong> số tham số, mức lượng tử hóa và độ dài ngữ cảnh quyết định VRAM cần có.</li><li><strong>Nguồn tải chính thức:</strong> chỉ tải từ trang của nhà phát triển hoặc tài khoản đã xác minh, tránh bản sửa đổi không rõ nguồn.</li><li><strong>Kế hoạch cập nhật:</strong> ai theo dõi phiên bản mới, bản vá an toàn.</li><li><strong>Phương án dự phòng:</strong> nếu mô hình không đạt yêu cầu, có thể chuyển sang API hay mô hình khác nhanh không.</li></ol><p>Ghi kết quả từng bước vào một trang tài liệu nội bộ. Khi ban lãnh đạo hoặc khách hàng hỏi vì sao chọn mô hình này, bạn có căn cứ rõ ràng.</p>"}
 ],
 "tip": "Hãy lưu bản giấy phép và model card đúng phiên bản bạn tải về cùng thư mục với tệp trọng số. Khi hãng đổi điều khoản ở phiên bản sau, bạn vẫn chứng minh được mình đang dùng theo điều khoản nào.",
 "faq": [
  {"q": "Mô hình open weights có miễn phí không?", "a": "Thường tải trọng số miễn phí, nhưng 'miễn phí tải' khác 'được dùng tự do'. Bạn vẫn phải tuân theo giấy phép, và chi phí phần cứng, vận hành là có thật."},
  {"q": "Open weights có được dùng cho mục đích thương mại không?", "a": "Tùy giấy phép từng mô hình. Apache 2.0, MIT cho phép; một số giấy phép riêng có điều kiện, còn giấy phép phi thương mại thì không cho phép."},
  {"q": "Tại sao các hãng không công bố dữ liệu huấn luyện?", "a": "Lý do thường gặp gồm bản quyền dữ liệu, lợi thế cạnh tranh và khối lượng dữ liệu quá lớn. Điều này khiến người dùng khó kiểm chứng mô hình đã học từ đâu."},
  {"q": "Chạy mô hình open weights có cần internet không?", "a": "Chỉ cần internet khi tải về. Sau đó mô hình có thể chạy hoàn toàn offline trên máy tính hoặc máy chủ nội bộ."},
  {"q": "Open weights có an toàn hơn mô hình đóng không?", "a": "An toàn hơn về chuyện dữ liệu không gửi ra ngoài, nhưng bạn tự chịu trách nhiệm bảo mật hạ tầng. Mô hình mở cũng có thể bị gỡ bỏ lớp an toàn nếu bị tinh chỉnh sai mục đích."},
  {"q": "Làm sao biết một mô hình là open weights hay mã nguồn mở thật?", "a": "Kiểm tra xem có công bố mã huấn luyện, thông tin dữ liệu và giấy phép có cho phép sửa, phân phối tự do hay không. Có thể đối chiếu với định nghĩa AI mã nguồn mở của OSI."}
 ],
 "sources": [
  {"t": "Open Source Initiative – Open Source AI Definition", "u": "https://opensource.org/ai"},
  {"t": "Hugging Face – Models", "u": "https://huggingface.co/models"},
  {"t": "Apache License 2.0", "u": "https://www.apache.org/licenses/LICENSE-2.0"}
 ],
 "related": ["mo-hinh-ai-ma-nguon-mo-va-dong", "model-card-la-gi", "chay-ai-tren-may-tinh-ca-nhan", "ollama-la-gi", "fine-tuning-la-gi", "quantization-la-gi", "foundation-model-la-gi", "vram-bao-nhieu-de-chay-llm"]
},
{
 "id": 2180,
 "slug": "top-p-top-k-la-gi",
 "title": "Top-p, top-k là gì? Các tham số sinh văn bản của AI",
 "meta_desc": "Top-p, top-k là gì và khác temperature thế nào? Giải thích dễ hiểu cách AI chọn từ, bảng cấu hình gợi ý cho từng loại việc và lỗi thường gặp khi chỉnh tham số.",
 "excerpt": "Khi gọi API hay chạy mô hình AI cục bộ, bạn sẽ gặp các tham số top-p, top-k bên cạnh temperature. Chỉnh đúng giúp câu trả lời ổn định hơn, chỉnh sai làm AI lặp từ hoặc lan man. Bài này giải thích bằng ví dụ đời thường và đưa cấu hình gợi ý.",
 "answer": "Top-p và top-k là hai tham số giới hạn tập từ mà mô hình AI được phép chọn ở mỗi bước sinh văn bản. Top-k chỉ giữ lại k từ có xác suất cao nhất, ví dụ top-k 40 nghĩa là chỉ chọn trong 40 ứng viên đầu. Top-p (nucleus sampling) giữ lại nhóm từ nhỏ nhất có tổng xác suất đạt ngưỡng p, ví dụ 0,9. Cả hai kết hợp với temperature để điều chỉnh độ ổn định và độ đa dạng của câu trả lời. Với đa số việc văn phòng, nên giữ mặc định và chỉ chỉnh một tham số mỗi lần.",
 "kws": ["top-p top-k là gì", "tham số sinh văn bản", "nucleus sampling", "top-p và temperature", "cấu hình tham số LLM"],
 "sections": [
  {"h2": "Top-p, top-k là gì: AI chọn từ tiếp theo ra sao", "html": "<p>Mô hình ngôn ngữ viết câu trả lời từng token một. Ở mỗi bước, nó tính ra một danh sách xác suất cho mọi token có thể xuất hiện tiếp theo. Ví dụ sau cụm 'Cửa hàng mở cửa lúc', mô hình có thể thấy '8' có xác suất 45%, '7' là 30%, '9' là 15%, và hàng nghìn lựa chọn khác chia nhau phần còn lại.</p><p>Nếu luôn chọn token xác suất cao nhất, câu trả lời rất an toàn nhưng dễ khô cứng, đôi khi lặp vòng. Nếu chọn ngẫu nhiên trên toàn bộ danh sách, thỉnh thoảng mô hình sẽ bốc phải một từ vô nghĩa có xác suất rất thấp. Top-k và top-p là hai cách 'cắt đuôi' danh sách, chỉ cho mô hình bốc thăm trong nhóm ứng viên hợp lý.</p><ul><li><strong>Top-k:</strong> cắt theo số lượng. Giữ k ứng viên đầu bảng, bỏ phần còn lại.</li><li><strong>Top-p:</strong> cắt theo tổng xác suất. Cộng dồn từ trên xuống, đủ p thì dừng.</li></ul><p>Quá trình bốc thăm có điều kiện như vậy gọi chung là sampling (lấy mẫu). Đây là lý do cùng một câu hỏi, hỏi hai lần có thể nhận hai câu trả lời hơi khác nhau.</p>"},
  {"h2": "Top-k hoạt động thế nào", "html": "<p>Top-k là cách đơn giản nhất. Bạn đặt một con số k, mô hình sắp xếp các token theo xác suất và chỉ giữ k token đầu. Xác suất của k token này được chuẩn hóa lại để tổng bằng 100%, rồi mô hình bốc thăm trong nhóm đó.</p><h3>Ví dụ</h3><p>Với top-k bằng 3 và câu 'Cửa hàng mở cửa lúc', chỉ '8', '7', '9' được giữ lại. Những lựa chọn như 'nửa', 'khoảng' bị loại dù có thể hợp lý.</p><h3>Điểm yếu của top-k</h3><p>Top-k cố định số lượng, không quan tâm hình dạng phân phối. Khi mô hình rất chắc chắn (một token chiếm 95%), k bằng 40 vẫn giữ lại 39 lựa chọn kém, tăng rủi ro chọn bậy nếu temperature cao. Khi mô hình phân vân giữa rất nhiều lựa chọn tốt, k nhỏ lại cắt mất ứng viên hợp lý, làm văn bản nghèo nàn.</p><p>Vì vậy top-k thường được dùng như một chốt chặn thô, đặt ở mức vừa phải (ví dụ 20–50) để loại bỏ đuôi dài vô nghĩa, còn tinh chỉnh chính giao cho top-p hoặc temperature. Một số API thương mại không cho chỉnh top-k, trong khi công cụ chạy mô hình cục bộ như Ollama, llama.cpp thường có.</p>"},
  {"h2": "Top-p (nucleus sampling) hoạt động thế nào", "html": "<p>Top-p, còn gọi là nucleus sampling, linh hoạt hơn top-k. Thay vì giữ số lượng cố định, mô hình cộng dồn xác suất từ token cao nhất xuống, dừng khi tổng đạt ngưỡng p. Nhóm token đó gọi là 'hạt nhân' (nucleus).</p><p>Quay lại ví dụ: '8' 45%, '7' 30%, '9' 15%, còn lại 10%. Với top-p 0,9, mô hình giữ '8', '7', '9' vì tổng vừa đạt 90%. Với top-p 0,7, chỉ còn '8' và '7'.</p><p>Ưu điểm lớn: khi mô hình chắc chắn, nhóm ứng viên tự thu nhỏ còn 1–2 token; khi mô hình phân vân, nhóm tự nới rộng. Nhờ vậy văn bản vừa tự nhiên vừa ít khi trượt sang từ vô lý.</p><h3>Giá trị thường gặp</h3><ul><li><strong>0,1–0,5:</strong> rất bảo thủ, hợp trích xuất dữ liệu, phân loại.</li><li><strong>0,8–0,95:</strong> vùng phổ biến cho chat, viết nội dung.</li><li><strong>1,0:</strong> không cắt, toàn bộ phân phối được dùng, lúc này temperature quyết định tất cả.</li></ul>"},
  {"h2": "Top-p, top-k và temperature khác nhau và phối hợp ra sao", "html": "<p>Temperature thay đổi hình dạng phân phối: nhiệt độ thấp làm token cao điểm càng nổi trội, nhiệt độ cao làm các token gần bằng nhau. Top-k và top-p thì cắt bớt ứng viên. Trong nhiều thư viện, thứ tự xử lý thường là áp temperature rồi mới lọc top-k, top-p, nhưng chi tiết có thể khác giữa các công cụ.</p><p>Nguyên tắc thực hành được nhiều nhà cung cấp khuyến nghị: <strong>chỉnh temperature hoặc top-p, không chỉnh mạnh cả hai cùng lúc</strong>. Thay đổi đồng thời khiến bạn không biết thay đổi nào tạo ra hiệu ứng.</p>", "table": {"caption": "So sánh ba tham số điều khiển sinh văn bản", "head": ["Tham số", "Tác động", "Giá trị thấp", "Giá trị cao"], "rows": [["Temperature", "Làm phẳng hoặc nhọn phân phối", "Ổn định, lặp lại", "Đa dạng, dễ lan man"], ["Top-k", "Giữ k ứng viên đầu", "Ít lựa chọn, khô cứng", "Nhiều lựa chọn, ít tác dụng lọc"], ["Top-p", "Giữ nhóm đạt tổng xác suất p", "Bảo thủ, chính xác", "Tự nhiên, sáng tạo hơn"]]}},
  {"h2": "Cấu hình gợi ý cho từng loại công việc", "html": "<p>Bảng dưới là điểm khởi đầu tham khảo, không phải công thức cố định. Giá trị mặc định của mỗi mô hình khác nhau, và mô hình suy luận (reasoning) đời mới đôi khi khóa hoặc bỏ qua một số tham số. Hãy kiểm tra tài liệu API trước khi đặt.</p><p>Với công ty 20–50 người dùng AI qua API cho nhiều việc, nên tạo sẵn vài 'hồ sơ cấu hình' thay vì để từng nhân viên tự chỉnh: một hồ sơ 'chính xác' cho kế toán, một hồ sơ 'cân bằng' cho chăm sóc khách hàng, một hồ sơ 'sáng tạo' cho marketing.</p>", "table": {"caption": "Cấu hình tham khảo theo loại việc", "head": ["Loại việc", "Temperature", "Top-p", "Ghi chú"], "rows": [["Trích xuất hóa đơn, phân loại email", "0–0,2", "Mặc định hoặc thấp", "Cần kết quả lặp lại được"], ["Trả lời khách hàng theo tài liệu", "0,2–0,5", "0,8–0,9", "Kết hợp RAG, hạn chế bịa"], ["Soạn email, báo cáo nội bộ", "0,5–0,7", "0,9", "Cân bằng tự nhiên và đúng ý"], ["Ý tưởng quảng cáo, slogan", "0,8–1,0", "0,95", "Sinh nhiều phương án rồi chọn"], ["Sinh code", "0–0,3", "Mặc định", "Ưu tiên đúng cú pháp"]]}},
  {"h2": "Cách thử và chỉnh tham số đúng cách", "html": "<p>Chỉnh tham số theo cảm giác rất dễ sai. Làm theo quy trình nhỏ sau để có kết quả đáng tin:</p><ol><li><strong>Chuẩn bị bộ câu hỏi thử:</strong> 15–30 đầu vào thật của công việc, ví dụ 20 email khách hỏi giá, 10 hóa đơn cần trích xuất.</li><li><strong>Chạy với cấu hình mặc định</strong> và lưu kết quả làm mốc.</li><li><strong>Đổi một tham số mỗi lần</strong>, ví dụ chỉ hạ temperature từ 0,7 xuống 0,3.</li><li><strong>Chạy mỗi đầu vào 2–3 lần</strong> để thấy độ dao động giữa các lần.</li><li><strong>Chấm điểm theo tiêu chí rõ:</strong> đúng thông tin, đúng định dạng, giọng văn phù hợp.</li><li><strong>Ghi lại cấu hình thắng</strong> vào prompt template hoặc tài liệu nội bộ.</li></ol><h3>Kiểm tra kết quả</h3><p>Dấu hiệu cấu hình quá 'lạnh': câu trả lời gần như giống hệt nhau, lặp cụm từ, bỏ qua sắc thái. Dấu hiệu quá 'nóng': thêm thông tin không có trong tài liệu, đổi định dạng tùy tiện, câu dài lan man. Nếu kết quả vẫn sai sau khi chỉnh tham số, vấn đề thường nằm ở prompt hoặc dữ liệu đầu vào chứ không phải sampling.</p>"},
  {"h2": "Lỗi thường gặp khi chỉnh top-p, top-k", "html": "<p>Những sai lầm dưới đây khá phổ biến ở đội mới tích hợp AI:</p><ul><li><strong>Kỳ vọng tham số sửa được ảo giác:</strong> hạ temperature giúp ổn định, nhưng không làm mô hình biết điều nó không biết. Muốn giảm bịa, cần RAG, prompt rõ và kiểm tra đầu ra.</li><li><strong>Đặt top-p bằng 0 hoặc top-k bằng 1 rồi nghĩ là 'tuyệt đối chính xác':</strong> đó là chọn tham lam (greedy), dễ lặp vòng ở văn bản dài.</li><li><strong>Chỉnh cả ba tham số cùng lúc:</strong> không truy được nguyên nhân khi kết quả thay đổi.</li><li><strong>Sao chép cấu hình giữa các mô hình:</strong> cùng giá trị nhưng mỗi mô hình phản ứng khác nhau.</li><li><strong>Quên tham số chống lặp:</strong> với mô hình chạy cục bộ, các tham số như repeat penalty cũng ảnh hưởng mạnh và cần thử cùng.</li><li><strong>Tin rằng temperature 0 cho kết quả giống hệt mọi lần:</strong> thường gần như ổn định, nhưng do cách tính toán song song trên phần cứng, đôi khi vẫn có khác biệt nhỏ.</li></ul><p>Khi nghi ngờ, quay về mặc định của nhà cung cấp. Giá trị mặc định đã được chọn để phù hợp đa số tình huống.</p>"}
 ],
 "tip": "Ở doanh nghiệp, đừng để từng người tự vặn tham số. Hãy chốt 2–3 hồ sơ cấu hình đã thử nghiệm, gắn vào prompt template của từng phòng ban và ghi rõ ngày, mô hình đã kiểm tra.",
 "faq": [
  {"q": "Top-p bao nhiêu là tốt nhất?", "a": "Không có con số chung. Vùng 0,8–0,95 phù hợp đa số việc viết và chat; việc trích xuất dữ liệu nên giữ thấp hoặc để mặc định kết hợp temperature thấp."},
  {"q": "Nên chỉnh temperature hay top-p?", "a": "Nên chọn một trong hai làm tham số chính. Temperature dễ hiểu hơn nên thường được chỉnh trước; top-p dùng khi muốn kiểm soát phần đuôi xác suất."},
  {"q": "ChatGPT trên web có chỉnh được top-p không?", "a": "Giao diện chat thông thường không cho chỉnh. Bạn chỉ chỉnh được khi gọi qua API, dùng playground cho nhà phát triển hoặc chạy mô hình cục bộ."},
  {"q": "Top-k có trong API của mọi nhà cung cấp không?", "a": "Không. Một số API chỉ có temperature và top-p, trong khi Ollama, llama.cpp và nhiều công cụ chạy cục bộ hỗ trợ top-k. Hãy xem tài liệu từng nền tảng."},
  {"q": "Vì sao đặt temperature 0 mà AI vẫn trả lời khác nhau?", "a": "Phần lớn thời gian kết quả sẽ rất gần nhau, nhưng tính toán song song trên GPU và cách hệ thống gom yêu cầu có thể gây khác biệt nhỏ. Muốn ổn định hơn, cố định cả prompt và phiên bản mô hình."},
  {"q": "Tham số này có ảnh hưởng chi phí API không?", "a": "Không trực tiếp, vì chi phí tính theo token. Gián tiếp thì có: cấu hình quá cao dễ làm câu trả lời dài dòng, tốn token hơn."}
 ],
 "sources": [
  {"t": "Holtzman et al., The Curious Case of Neural Text Degeneration – arXiv", "u": "https://arxiv.org/abs/1904.09751"},
  {"t": "Hugging Face Transformers – Text generation", "u": "https://huggingface.co/docs/transformers"},
  {"t": "OpenAI API documentation", "u": "https://platform.openai.com/docs"}
 ],
 "related": ["temperature-trong-ai-la-gi", "token-trong-ai-la-gi", "llm-la-gi", "ai-hallucination-la-gi", "toi-uu-prompt", "api-ai-la-gi", "ollama-la-gi", "prompt-template-la-gi"]
}
]
