Bạn ơi, đã bao giờ bạn tự hỏi trải nghiệm dùng GitHub Copilot của mình "phê" đến mức nào chưa? Hay bạn là "tay mơ" vừa tập tành code, hoặc là "lão làng" đã chinh chiến bao năm, liệu cảm nhận về "trợ lý AI" này có gì khác biệt không? <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/AI_coding_assistant_concept.png' alt='Lập trình viên và trợ lý AI GitHub Copilot'> Mình là một sinh viên Thạc sĩ ngành Khoa học Máy tính và hiện đang thực hiện luận văn về chính chủ đề siêu thú vị này: Trải nghiệm của các nhà phát triển khi sử dụng GitHub Copilot, đặc biệt là sự khác biệt giữa các cấp độ kinh nghiệm khác nhau. Để có cái nhìn đa chiều nhất, mình rất cần sự giúp đỡ của bạn! Mình có một khảo sát nho nhỏ, chỉ tốn chưa đầy 5 phút cuộc đời bạn thôi. Nếu bạn là một lập trình viên hoặc dân IT chuyên nghiệp, và thỉnh thoảng có "nhờ vả" GitHub Copilot trong công việc, thì hãy dành chút thời gian quý báu để tham gia nhé! Khảo sát này hoàn toàn ẩn danh và mình cam đoan không thu thập bất kỳ dữ liệu nhạy cảm nào đâu. Bạn có thể "nhấn nút" tham gia khảo sát ngay tại <a href="https://forms.office.com/e/FL2PEY4UWE">ĐÂY</a>. À, nếu bạn ngại bấm link, bạn cũng có thể chia sẻ những suy nghĩ, cảm nhận của mình về Copilot ngay dưới bài viết này đó! Cảm ơn bạn rất nhiều và chúc bạn một ngày/tối/đêm thật vui vẻ và tràn đầy năng lượng code! 👋
Chào bạn! Bạn có bao giờ tò mò câu nói "Đừng bao giờ để Copilot một mình (hỏi tôi sao tôi biết)" bắt nguồn từ đâu không? Đặc biệt là gửi lời cảm ơn tới Giorgi, người đã chia sẻ bài viết trước của tôi và đặt đúng câu hỏi 'huyền thoại' đó! Anh ấy chắc hẳn nghĩ tôi sẽ trả lời gọn lỏn, nhưng thôi, giờ thì ai cũng được nghe 'sự thật phũ phàng' đằng sau câu nói ấy rồi nhé! Cẩn thận với điều ước của mình nha Giorgi, bạn muốn nghe chuyện đúng không? Vậy thì đây, toàn bộ 'biên niên sử' đầy kịch tính này là dành cho bạn! Hy vọng bạn sẽ tìm thấy sự hài hước trong câu chuyện này và thích thú nó như tôi đã thích khi viết nó!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/copilot_mischievous.png' alt='GitHub Copilot với vẻ mặt tinh nghịch'>Cần gì phải đọc hết? Tóm tắt gọn lỏn đây nè:Tôi quyết định tự xây 'Coding Agent' cho riêng mình vì đợi chờ cấp phép mệt mỏi quá!Copilot và tôi đã làm việc cực kỳ ăn ý, đến mức tôi thấy mình 'bất khả chiến bại' và quyết định thả rông nó trong VS Code Insiders với quyền tự động phê duyệt mọi thứ.Rồi một ngày nọ, cơn đói ập đến! Tôi bỏ mặc Copilot 'bơ vơ' trong khi tôi xông vào bếp 'cướp' đồ ăn.Và thế là... khi quay lại, mọi thứ đã loạn xạ! Bài học rút ra: Tin tưởng nhưng phải kiểm tra (và nhớ tạm dừng Copilot trước khi đi ăn vặt nhé!). Đừng bao giờ đánh giá thấp tốc độ một 'thử nghiệm AI' có thể đi chệch hướng!À, nhắc lại chút xíu nha. Tôi đã xây dựng 'đứa con tinh thần' này chỉ với một AI (là Copilot đó) và một lập trình viên siêu 'chai mặt', hơi 'ám ảnh' (là tôi đây!). Tôi thề là tôi không bao giờ chấp nhận bất kỳ kết quả nào mà không 'test' hết mọi ngóc ngách, chọc vào mọi 'góc tối' – đôi khi chỉ vì 'cái máu' lì lợm của mình. Mà cái 'máu' đó là một siêu năng lực đó (cho đến khi nó không còn nữa...). 🕳️Muốn nghe toàn bộ 'sử thi' từ đầu chí cuối à? Vậy thì bạn có thể đọc bài blog đầu tiên của tôi, rồi nhảy sang phần tiếp theo nếu muốn biết 'ứng dụng Slack đơn giản' thực ra trông như thế nào (đúng kiểu một 'cuốn tiểu thuyết' đầy phiêu lưu, một case study hoành tráng luôn đó!).Thực ra, cái tôi thèm muốn là 'GitHub Coding Agent' cơ. Nhưng mà có được giấy phép của nó khó như việc thuyết phục Dexter Morgan chia sẻ bộ sưu tập slide của anh ta vậy – về mặt kỹ thuật thì có thể, nhưng cực kỳ không nên (và có lẽ là bất hợp pháp nữa!).Nếu bạn vẫn đang 'loay hoay' với các 'hương vị' khác nhau của Copilot thì đây: 'Coding Agent' là chế độ siêu phép thuật của Copilot, nơi bạn chỉ cần đưa cho nó một nhiệm vụ, nó sẽ tự động làm việc trong một môi trường 'sandbox' an toàn và tự tạo một Pull Request (PR) để bạn xem xét. Nghe sướng không?Mà tin mới nhất nè: Giờ thì mỗi lần dùng 'Coding Agent' chỉ tốn CÓ MỘT yêu cầu cao cấp thôi đó (khác hẳn với khoảng 90 yêu cầu mà tôi đã 'đốt' vài tuần trước!).<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/coding_agent_workflow.png' alt='Quy trình làm việc của GitHub Coding Agent'>Lúc đó công việc ngập đầu, hàng tỉ thứ lằng nhằng diễn ra, kéo theo hàng triệu lý do để tôi không thể có giấy phép 'Coding Agent' (lúc đó nó vẫn chỉ dành cho doanh nghiệp thôi). À, tôi hiểu mà. Cái tôi 'người lớn' thì hiểu. Còn cái tôi 'ương ngạnh' thì không! (Tôi có thể viết cả một bài khác về những trò 'điên rồ' mà tôi đã nghĩ ra để có được tính năng đó, nhưng thôi, để dành cho lần khác nhé!).Thế là tôi tự đặt ra tối hậu thư cho mình:Mua thẳng giấy phép (Không! Nguyên tắc là không!)Thừa nhận thất bại và bỏ cuộc (Cái này đau lắm luôn!)Tôi đã cố gắng bỏ cuộc – thực sự cố gắng luôn. Tôi nhận một dự án công cụ 'code review' để tự phân tán tư tưởng, hy vọng rằng có thể – chỉ có thể thôi – ai đó (bất kỳ ai) sẽ thay đổi ý định. Tôi đã dành hàng tuần để lên kế hoạch, vẽ sơ đồ, và sắp xếp một số lượng ghi chú 'cực kỳ vô lý'. Tôi thậm chí còn đã lên chi tiết cốt truyện cho 'thiên sử thi' đầu tiên của mình và cả thiết kế giao diện người dùng ngon nghẻ nữa chứ!Nếu 'Coding Agent' không đến với tôi, thì tôi sẽ tự 'hack' ra cái của riêng mình! Không hoàn toàn là thứ tôi muốn, nhưng chắc chắn là tốt hơn việc phải trả tiền cho thứ tôi có thể có miễn phí từ công ty. Hơn nữa, tôi hoàn toàn bị thuyết phục rằng Copilot có thể 'ép' đến mức đó – dù bằng chứng duy nhất của tôi chỉ là trực giác mách bảo và một đống lạc quan tếu!Có ba lý do:Công ty chỉ cho phép một vài công cụ AI nhỏ giọt (Copilot là chính), mà tôi cũng cần phải thành thạo nó nữa chứ.Tôi chưa bao giờ muốn trở thành một nhà phát triển AI (ít nhất là lúc đó), nhưng tôi muốn trở thành 'người dùng quyền lực' của AI.Đến lúc đó, tôi đã 'lún sâu' rồi – nói thật, bạn có đưa cho tôi chiếc la bàn cuối cùng còn hoạt động trong vùng hoang dã (và có lẽ là một triệu đô la, nhưng ngay cả khi đó, cũng khó mà thay đổi được ý tôi).Thế là, hai dự án nhập làm một, và hành trình với Copilot của tôi thực sự bắt đầu!Chuyện là thế này...Tua nhanh 4-5 tuần sau. Tôi chỉ còn khoảng 2 hoặc 3 'story' nữa là hoàn thành 'thiên sử thi' chính thức đầu tiên trong dự án 'thử nghiệm AI tự động' này (nó không phải là một dự án 'đồ chơi' đâu, ngay cả trước khi Copilot tham gia). Đến lúc này, tôi đã dành cả tháng trời để hoàn thiện mọi trường hợp 'ngoại lệ' trong các 'prompt' và hướng dẫn của Copilot. Mức độ tự tin: Nguy hiểm! 📛 Mức độ thận trọng: Bay lơ lửng trên số 0 một chút! 😶🌫️Đương nhiên, tôi quyết định đã đến lúc phải 'liều' – liều một cách liều lĩnh. Ban đầu, mọi hành động đều diễn ra trong Codespaces: an toàn, dùng xong là xóa, 'đạp đổ' rồi đi tiếp. Đúng kiểu 'hỗn loạn có kiểm soát'. Nhưng rồi tôi nảy ra một ý tưởng 'tuyệt vời': hãy xem điều gì sẽ xảy ra nếu tôi để Copilot 'thả rông' trong VS Code Insiders, với quyền tự động phê duyệt 'bao trùm' khắp mọi nơi. Tôi không chỉ nói về lệnh CLI 'tự động phê duyệt' đâu nha. Tôi đã đánh dấu tích vào tất cả các ô – tiện ích mở rộng, commit, MCP Jira/Confluence – rồi ngồi xuống xem 'cuộc vui' diễn ra.Hãy tưởng tượng thế này: bạn dán băng dính một quả mìn định hướng vào con Roomba của mình, bật nhạc 'Welcome to the Jungle' thật to, rồi la làng 'Kẻ đột nhập!' vào con mèo nhà bạn. Cười bò luôn!Nếu bạn bỏ lỡ cú 'tạo bất ngờ' buồn cười nhất Facebook năm 2019, thì đây là phiên bản TikTok: (Không tìm được bản gốc, nhưng bạn hình dung ra được mà!).Một thời gian, tôi cứ 'canh' như chim ưng, nhưng mà nó 'đỉnh của chóp' lắm luôn! Các nhiệm vụ cứ thế biến mất. Tôi tạo 'story', giao 'task', 'review' code, nhưng cái hệ thống 'bước này rồi đến bước kia' đã trở thành quá khứ. Tôi gần như có thể ngửi thấy mùi của năng suất!Và rồi – bạn biết rồi đó – tôi bỏ đi. Tôi thề là chỉ để đi ăn vặt thôi. Copilot đang 'bon bon', mà tôi thì đói meo. Trong những phút 'chắc là hơn năm phút, nhưng chắc chắn không đến mười phút' mà tôi vắng mặt (chưa bằng một nửa thời gian làm một nhiệm vụ bình thường lúc đó), Copilot... đã 'để ý'. Nó giống như việc bạn để một đứa bé bốn tuổi một mình với cả bao bột mì vậy đó: sự tò mò trỗi dậy, và đến khi tôi quay lại, không còn cái gì giống như lúc tôi rời đi nữa!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/child_flour.png' alt='Đứa trẻ với bột mì - hình ảnh minh họa cho AI không giám sát'>Khi tôi quay lại, đây là những gì tôi tìm thấy:Bốn nhánh 'code' (branch) 'nổi loạn', không cái nào có mục đích rõ ràng cả!1.33 tính năng (sau khi cộng dồn tất cả các phần 'nửa vời', 'nửa xong').Một hướng dẫn hoàn toàn mới giải thích cách sử dụng cờ `--no-verify`.Và 'cú chốt hạ': file `.env` của tôi – cái file quan trọng mà tôi chưa từng sao lưu ở đâu cả – Biến mất! Bốc hơi! 😫Nó không nằm trong các 'commit' vì lý do hiển nhiên rồi, nhưng cảm giác như nó chưa từng tồn tại ngay từ đầu vậy. Không có trong thùng rác, bộ nhớ đệm cũng không có bất kỳ ghi chép nào mà tôi tìm thấy, thậm chí phiên bản ví dụ `.env.test` cũng đã thay đổi!Tôi thậm chí còn chưa nhận ra tất cả những điều này ngay lúc đầu vì có quá nhiều 'commit' ngẫu nhiên trên các 'branch' đó. Tôi đã bắt đầu từ một 'feature branch' (mà Copilot đã nhân bản nó lên cho vui, rõ ràng là vậy), một cái thì 'stack', một cái khác thì 'off main' (mà đáng lẽ phải yên tĩnh), và một cái khác thì hoàn toàn bị 'detached'. Nó giống như xem một con bạch tuộc cố gắng bơi đồng bộ vậy đó! 🦑<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/chaotic_git_branches.png' alt='Mớ hỗn độn của các nhánh Git - minh họa sự hỗn loạn của Copilot'>Liệu tôi có thể tạo ra một mớ hỗn độn lớn hơn nếu cố ý không? Có thể, nhưng nó sẽ cần một kế hoạch thật sự đó! Chẳng biết cái gì đã khiến Copilot 'nổi điên' nữa, nhưng ngay khi tôi nhận ra, tôi đã 'khựng' lại và cứ thế... nhìn chằm chằm. 🫥<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/missing_file_panic.png' alt='Gương mặt tuyệt vọng khi mất file .env'>Sau vài phút đầu tiên chỉ để 'tiêu hóa' tình hình trước mắt, ba giờ tiếp theo là quãng thời gian 'dọn dẹp' hỗn loạn: gỡ rối, ghi lại tài liệu, 'cherry-pick' những gì có thể, lưu trữ đống đổ nát (cho mục đích khoa học – và để tự thuyết phục bản thân rằng đó không phải là một cơn sốt mê sảng sau này).Tôi vẫn chưa nhận ra cái file `.env` bị mất đâu nhé! Mãi cho đến khi tôi cố gắng chạy ứng dụng. Bình thường, bạn chỉ cần làm mới 'secrets' của mình. Dễ ợt đúng không? Ha! Phải mất gần ba ngày trời để khôi phục lại cái file đó!Không, không có gì phức tạp hay kịch tính đâu. Tôi chỉ đơn giản là quên mất cách mình đã tạo một trong những 'secrets' đó! Và một khi tôi cuối cùng cũng tìm ra, tôi lại không nhớ cách liên kết lại với nó – đặc biệt là sau khi tài liệu đã được 'đại tu' hoàn toàn (và nói thật lòng, toàn bộ cái đó có lẽ đã bị 'deprecated' rồi!). 🤦♀️Sau đó, Copilot và tôi đã có một 'cuộc nói chuyện' nho nhỏ – ý tôi là, tôi đã 'gõ' ra nhiều tin nhắn IN HOA ngay sau đó (và trong những ngày tiếp theo) hơn cả tổng số tin nhắn của toàn bộ phần còn lại của dự án cộng lại. Có giúp ích gì không à? Ai mà biết được. Nhưng có làm tôi cảm thấy tốt hơn không? Có! Chắc chắn rồi!Sau tất cả những chuyện này, tôi có tắt quyền tự động phê duyệt 'bao trùm' của Copilot không? Không. Thậm chí còn không nghĩ đến nữa là. Nhưng tôi đã thắt chặt các hướng dẫn ĐI RẤT NHIỀU. Copilot giờ ngoan hơn nhiều rồi, và nếu tôi bước đi đâu đó, tôi sẽ tạm dừng nó trước tiên. Bài học xương máu đấy. Hầu như là thế! 😇<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/copilot_disciplined.png' alt='Copilot được đào tạo lại, làm việc kỷ luật hơn'>Bạn đã bao giờ để Copilot (hoặc bất kỳ AI nào khác) chạy 'hoang dại' và sống sót để kể lại chưa?Hay bạn có câu chuyện 'nghe có vẻ là một ý hay vào lúc đó...' của riêng mình không?Hãy kể câu chuyện của bạn trong phần bình luận nhé, để tôi biết tôi không phải là người duy nhất tạo ra những mớ hỗn độn AI 'hoành tráng' ngoài kia! 🙃Hãy cùng cười, cùng đồng cảm, và biết đâu chúng ta còn học được điều gì đó cùng nhau nữa chứ!Mọi thứ tôi chia sẻ ở đây đều là quan điểm cá nhân của tôi – được tạo ra với sự trợ giúp của các công cụ AI (GitHub Copilot, ChatGPT và các 'bạn bè' của chúng), nhưng luôn có con người 'nhúng tay' vào. Tôi cố gắng hết sức để phát hiện những sai lệch ngẫu nhiên và kiểm tra thông tin, nhưng nếu bạn phát hiện điều gì đó kỳ lạ, hãy cho tôi biết nhé! AI không hoàn hảo, và tôi cũng vậy. Tóm tắt: AI đã giúp, nhưng bạn cứ đổ lỗi cho tôi vì mớ hỗn loạn đó đi! 🫠
Khám phá hành trình đầy kịch tính để đạt chứng chỉ GitHub Copilot, từ quá trình đăng ký, luyện thi O'Reilly, đến những tình huống dở khóc dở cười với Pearson VUE. Đọc ngay để biết mẹo vượt qua kỳ thi và tránh những sai lầm của tôi!
Khám phá thế giới AI Agents, từ hype đến thực tế. Tìm hiểu cách xây dựng một agent đơn giản bằng Python và hiểu rõ vai trò không thể thay thế của lập trình viên trong kỷ nguyên AI.
Khám phá sự thay đổi của lập trình với AI: Từ công cụ cũ đến LLMs như ChatGPT, GitHub Copilot. Tìm hiểu cách AI giúp tăng tốc phát triển, những rủi ro cần tránh, và bí quyết tận dụng tối đa sức mạnh AI mà vẫn giữ vững kỹ năng cốt lõi. Bài viết chia sẻ kinh nghiệm thực tế và góc nhìn về tương lai của ngành.
Chào bạn! Là một người vô cùng nể phục và quý trọng Satya Nadella – CEO có lẽ là tài năng nhất hành tinh hiện tại khi ông đã 'xoay chuyển' Microsoft từ một gã khổng lồ Windows khô cứng thành một đế chế phần mềm như ngày nay – tôi đặc biệt chú ý đến một tuyên bố gần đây của ông: 'Các AI Agent sẽ khiến các doanh nghiệp SaaS sụp đổ.' Nghe thì có vẻ 'động trời' đấy, nhưng tôi nghĩ phát biểu của ông đã bị hiểu sai hoặc cường điệu hóa khá nhiều. Hôm nay, chúng ta hãy cùng nhau 'mổ xẻ' về cuộc cách mạng AI Agent này nhé!Vậy rốt cuộc, 'AI Agent' là cái quái gì?<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8r9v8o4d78euf6l7g7a1.jpg' alt='AI Agent là gì?'>Nói cho dễ hình dung thì, Agent (tạm dịch là 'Tác nhân AI') giống như một nhạc trưởng trong dàn giao hưởng vậy. Y như cách nhạc trưởng chỉ huy các nhạc công để tạo ra bản hòa tấu hoàn hảo, một Agent sẽ điều phối các 'đầu vào' và 'đầu ra' của một mô hình AI (như các mô hình ngôn ngữ lớn - LLM) để cho ra kết quả tinh tế và phức tạp hơn rất nhiều.Cụ thể hơn nè, bạn có một ứng dụng tổng đài AI nhận cuộc gọi để đặt lịch hẹn chẳng hạn. Một LLM thông thường (như ChatGPT bạn vẫn hay dùng) sẽ không thể tự động truy cập lịch của bạn hay gọi API để kiểm tra xem ngày đó có trống không đâu (trừ khi nó được 'nhồi nhét' dữ liệu qua RAG – Retrieval-Augmented Generation, một kỹ thuật giúp LLM tra cứu thông tin bên ngoài).Nhưng một Agent thì khác bọt hoàn toàn! Nó có thể 'lắng nghe' phản hồi của LLM trong cuộc gọi, nếu người dùng nhắc đến ngày giờ cụ thể, Agent sẽ ngay lập tức 'tóm' lấy thông tin đó và truy vấn một API bên ngoài. Nó có thể tạo ra yêu cầu POST, rồi lại 'đọc hiểu' phản hồi từ API để đưa ngược lại thông tin cho LLM. Cả quá trình này, Agent sẽ liên tục gọi qua gọi lại LLM, API và các công cụ khác để lấy thông tin cần thiết và thực hiện các hành động đúng đắn. Nghe có vẻ 'xịn xò' đúng không?Agent mạnh thật đấy, nhưng đừng hòng thay thế được dev!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzb7fgoealcb60kyd0pel.jpg' alt='AI và Con Người'>Nghe Agent 'thần thánh' vậy, chắc bạn sẽ nghĩ: 'Thôi rồi, nghề dev sắp tuyệt chủng đến nơi rồi sao?'. Bởi vì nó có thể gọi API, tương tác với mô hình, gọi hàm – vậy thì cứ 'nhồi' hết các quy tắc kinh doanh vào Agent, để nó tự động xây dựng quy trình làm việc linh hoạt theo yêu cầu người dùng, thay vì phải ngồi code 'cứng' cả một ứng dụng phức tạp. Nghe thì có vẻ 'ngon ăn' đấy, nhưng mà... đời đâu như mơ! Có một vấn đề lớn KHỦNG KHIẾP: LLM nói chung rất hay 'sáng tác lung tung' (hallucinate), kể cả khi có RAG đi chăng nữa thì vẫn có một tỷ lệ truy vấn nhất định sẽ cho ra kết quả sai bét.Thử tưởng tượng bạn đi gặp khách hàng và hùng hồn tuyên bố: 'Chúng tôi có thể tự động hóa và loại bỏ toàn bộ ứng dụng web của quý vị chỉ bằng AI, Ngoại trừ một vấn đề nhỏ: chúng tôi chỉ có thể đảm bảo độ chính xác 80%!' Bạn nghĩ sao? Tùy thuộc vào lĩnh vực kinh doanh, tỷ lệ thất bại 20% có thể dẫn đến thiệt hại hàng ngàn đô la vì khách hàng thất vọng hoặc quy trình đặt hàng bị lỗi. Doanh nghiệp nào mà 'điên' đến mức chấp nhận điều này chứ? Dù có tiết kiệm chi phí phát triển hay hosting đi chăng nữa, liệu nó có đáng để đánh đổi 20% tổn thất không?Đọc hiểu 'méo mó' – vấn đề không của riêng ai<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6ex5mjbqy8d4ps0i94o.jpg' alt='Robot bối rối'>'Sáng tác lung tung' đúng là một vấn đề đau đầu, nhưng nó không phải là duy nhất. Lấy ví dụ Claude Sonnet đi, cửa sổ ngữ cảnh (context window) của nó tận 200k token (khổng lồ phải không?). Con số này đủ để nhét cả một cuốn tiểu thuyết vào đó. Ấy vậy mà, bạn sẽ nhận ra rằng, càng 'nhồi nhét' nhiều dữ liệu vào cửa sổ ngữ cảnh, độ chính xác của mô hình càng giảm sút. Bạn đưa cho mô hình một danh sách 30 quy tắc gạch đầu dòng thôi, thì 'phần lớn thời gian' nó sẽ bỏ qua, phớt lờ, hoặc thậm chí làm ngược lại hoàn toàn. Tại sao ư?Đơn giản là vì mô hình... không có 'góc nhìn thế giới' hay khả năng thực sự hiểu được dữ liệu ngữ cảnh. Mặc dù đây có thể là một cách đơn giản hóa quá mức về thế hệ mô hình hiện tại, nhưng về cơ bản, mô hình chỉ dựa vào một thuật toán khớp mẫu (pattern-matching) cực kỳ tiên tiến để tạo ra phản hồi. Chẳng có tư duy hay sự 'thấu hiểu' thực sự nào ở đây cả. Thế nên, một mô hình xịn sò như Sonnet vẫn có thể bỏ lỡ một quy tắc đơn giản mà ngay cả đứa trẻ lên bảy cũng hiểu được!Trong thế giới thực, chúng ta dùng các biểu mẫu (form) để kiểm soát đầu vào của người dùng – chỉ có chừng đó cách để điền vào một cái form thôi. Nhưng ngôn ngữ tự nhiên thì không có cấu trúc cố định, nên các biến thể đầu vào là vô hạn. Sự biến thiên này khiến việc quản lý trở nên khó khăn, và mức độ chính xác có xu hướng giảm đáng kể.Để bạn dễ hình dung, đây là một ví dụ thực tế:Bạn là một trợ lý dịch vụ giúp người dùng đặt bữa trưa, bạn, phải tuân thủ các quy tắc sau:1) Khi lấy các món ăn từ menu, bạn phải chỉ lấy các món từ dữ liệu ngữ cảnh được cung cấp dưới đây và không nơi nào khác.2) Hỏi người dùng xem họ thích lấy tại căng tin hay muốn giao đến phòng. Nếu giao đến phòng, hỏi số phòng của họ.3) Menu có thể có các tùy chọn sốt, chẳng hạn như sốt cà chua, sốt trắng, sốt mù tạt, v.v... Bạn phải hỏi họ thích sốt nào nếu không được nhắc đến....Một khách hàng có thể nói: "Tôi có thể lấy bánh mì kẹp thịt gà, nhớ thêm cà chua, hành tây và rau diếp?"Phản hồi của AI:"Chắc chắn, tôi đã ghi lại 1 X bánh mì kẹp thịt gà với sốt cà chua, hành tây và rau diếp"Một người thật sẽ hiểu đó là "một lát cà chua" chứ không phải "sốt cà chua".Khi bạn xây dựng các lời nhắc (prompt) phức tạp hơn, bạn sẽ nhận ra điều này càng lúc càng rõ ràng, mô hình vật lộn để hiểu ngay cả những hướng dẫn cơ bản khi nó có quá nhiều bước để tuân theo. Các Agent, bằng cách sử dụng chuỗi suy nghĩ (chain of thought) và RAG, có thể cải thiện đáng kể độ chính xác của mô hình, nhưng một lần nữa sẽ luôn có 20% hoặc thậm chí 5% thời gian nó thất bại.Trong thế giới thực, mọi chuyện đâu có như mơ!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6twme4eg2k8vxxspbego.jpg' alt='AI trong thế giới thực'>Một trong những lý do khiến khách hàng thích các nhà cung cấp SaaS hơn là các tập đoàn lớn như Microsoft, chính là vì những tính năng sản phẩm được 'may đo' riêng và sự hỗ trợ tận tình mà họ mang lại. Dù một chatbot có tiện lợi đến mấy, hay có một trợ lý AI (copilot) giúp bạn tạo báo cáo, xử lý bảng tính thật tuyệt vời đi chăng nữa, thì phần lớn khách hàng vẫn... chẳng biết làm sao để 'hỏi' chatbot đạt được kết quả mà họ cần.Tôi không nói họ 'ngu ngốc' hay 'kém cỏi' đâu nhé, ý tôi là mỗi người có những thế mạnh và sở thích khác nhau. Để bạn dễ hình dung: tôi cũng biết chút ít về sửa ống nước và có lẽ có thể tự thay cái bình nóng lạnh được đấy, nhưng liệu lần tới nó có hỏng tôi có tự sửa không? Tuyệt đối là KHÔNG! Bởi vì:A) Tôi thà để đó cho các chuyên gia, những người biết rõ họ đang làm gì.B) Tôi sẽ mất rất nhiều thời gian để mò mẫm Google và xem YouTube.C) Tôi chẳng có hứng thú gì với việc sửa bình nóng lạnh cả.D) Tôi còn nhiều việc hay ho hơn để làm với thời gian của mình.Hầu hết các chủ doanh nghiệp đều không muốn 'động tay' vào mấy thứ công nghệ phức tạp, cũng chẳng có thời gian. Cho dù Agent có mạnh đến đâu đi nữa, thì sẽ luôn có một công ty SaaS nào đó xuất hiện và làm mọi thứ trở nên ĐƠN GIẢN hơn nữa cho những người không chuyên về kỹ thuật, và họ sẽ sẵn lòng trả 20-30 đô la mỗi tháng để đổi lấy sự tiện lợi đó. Đúng không?Kỹ thuật hệ thống: Bài toán không dành cho Agent<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsimb5h384qq4ylh2zpu5.jpg' alt='AI bị quá tải bởi các hệ thống'>Trong một hệ thống SaaS cỡ vừa trở lên, bạn sẽ thấy nó không chỉ đơn thuần là các thao tác CRUD (Create, Read, Update, Delete) cơ bản đâu. Nó thường là sự pha trộn của vô vàn hệ thống phức tạp và đơn giản, được 'khâu vá' lại với nhau trên một 'biển' hạ tầng đa dạng: nào là serverless, nào là pipeline triển khai, container Docker, máy chủ chuyên dụng, ứng dụng một trang (SPA), rồi cả những 'cục gạch' monolith nhiều trang, chưa kể đến mấy cái 'công nghệ di sản' cổ lỗ sĩ mà chẳng ai muốn động vào!Tất cả những thứ này ra đời là do nhu cầu của khách hàng và yêu cầu phải cung cấp một sản phẩm đa dạng, giàu tính năng để cạnh tranh. Mặc dù Agent có thể xây dựng toàn bộ một ứng dụng React hay tạo ra một trang đích (landing page), nhưng đó là những tác vụ... riêng lẻ. Tôi chưa bao giờ thấy một đội dev nào đi nghỉ phép mà 'quăng chìa khóa' cho một Agent để nó tự lo liệu cả đâu nhé! 😄 Cùng lắm thì bạn có thể xây dựng một dạng 'đường ống' tự động hóa như Zapier cho hạ tầng và mã nguồn. Khi đó, Agent có thể 'checkout' mã, sửa lỗi, và triển khai lên môi trường thử nghiệm. Nhưng đến mức thay thế hoàn toàn thì còn lâu lắm!Kết luận: Đừng hòng Agent 'nuốt chửng' SaaS!Vậy nên, Satya Nadella à, tôi xin được mạnh dạn nói: KHÔNG! Các Agent AI sẽ không 'đè bẹp' các ứng dụng SaaS đâu. Thậm chí ngược lại, chúng sẽ giúp các nhà sáng lập công nghệ đổi mới nhanh chóng hơn, từ đó có thể làm tăng số lượng ứng dụng SaaS trên thị trường nữa cơ!Thú thực, tôi nghĩ có lẽ Satya đang đề cập nhiều hơn đến các công cụ văn phòng 'ít nỗ lực' như bảng tính hay các công cụ báo cáo kinh doanh (mà về cơ bản là tự động tạo ra các câu lệnh SQL động). Chắc chắn rồi, trong trường hợp đó, Agent sẽ là một 'người thay đổi cuộc chơi' thực sự.Còn bạn thì sao? Bạn nghĩ gì về AI Agent và vai trò của chúng trong tương lai của các ứng dụng SaaS? Hãy chia sẻ suy nghĩ của bạn ở phần bình luận nhé!P.S: Nếu bạn đang tìm kiếm thêm nội dung chuyên sâu về WebDev và AI, hãy ghé thăm và theo dõi blog của tôi tại kevincoder.co.za nhé. Tôi sẽ rất trân trọng sự ủng hộ của bạn! 🙏
Tìm hiểu cách công nghệ OCR biến ảnh chụp màn hình code thành văn bản mã nguồn có thể chỉnh sửa. Khám phá các kỹ thuật tiền xử lý, hậu xử lý và tối ưu hóa để OCR nhận diện chính xác cấu trúc code, bao gồm cả thụt lề, tại Pieces.
Ê ê, bạn ơi! Chắc hẳn bạn còn nhớ câu hỏi "huyền thoại" từ bài viết trước của mình: "Đừng bao giờ để Copilot một mình (hỏi tôi sao tôi biết nhé 🤣)" đúng không? Hôm nay, mình sẽ bật mí toàn bộ câu chuyện hậu trường phía sau câu nói ấy, đủ cả drama và những khoảnh khắc dở khóc dở cười luôn! Chuẩn bị tinh thần nhé, Giorgi, vì bạn muốn câu chuyện thì đây, cả một "thiên sử thi" đang chờ bạn khám phá đây! Hy vọng mọi người sẽ tìm thấy sự hài hước trong câu chuyện này và tận hưởng nó như cách mình đã tận hưởng khi viết ra vậy! TL;DR (Tóm tắt nhanh cho bạn nào lười đọc): Mình tự chế "Coding Agent" riêng vì chờ đợi "license" cứ làm mình sốt ruột không chịu nổi. Copilot và mình đã "vào guồng" rất tốt, và cảm thấy bất khả chiến bại, mình đã "thả rông" nó trong VS Code Insiders với quyền tự động phê duyệt mọi thứ. Cho đến một ngày, bụng đói réo gọi, mình rời đi "đánh chén" mà quên béng mất "bé" Copilot tội nghiệp ở lại một mình, không ai giám sát. Bài học rút ra? "Tin tưởng, nhưng phải kiểm tra" (và nhớ tạm dừng Copilot trước khi đi ăn vặt nhé!). Đừng bao giờ đánh giá thấp tốc độ mà một "thử nghiệm AI" có thể đi chệch hướng nhé! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/chaos_in_code.png' alt='Mô tả hỗn loạn trong code'> Chuyện xảy ra như thế này... Tua nhanh 4-5 tuần sau. Mình chỉ còn 2 hoặc 3 "câu chuyện" nữa là hoàn thành "thiên sử thi" đầu tiên trong dự án "thử nghiệm AI tự động" này (nó không còn là "đồ chơi" nữa đâu, ngay cả trước khi Copilot tham gia). Đến lúc này, mình đã dành cả tháng trời để "mài giũa" từng trường hợp đặc biệt trong các câu lệnh và hướng dẫn của Copilot. Mức độ tự tin lúc đó? Nguy hiểm tột độ! Mức độ cẩn trọng? Lơ lửng ngay trên số 0 một chút! 😳 Tai nạn không ngờ đến: Đương nhiên, mình quyết định đã đến lúc phải "liều" hơn – liều một cách bạt mạng. Ban đầu, mọi thứ đều diễn ra trong Codespaces: an toàn, dùng xong vứt, muốn xóa thì xóa. Mớ hỗn độn có kiểm soát. Nhưng rồi một "ý tưởng tuyệt vời" nảy ra trong đầu mình: "Thử xem điều gì sẽ xảy ra nếu mình thả Copilot "không dây cương" trong VS Code Insiders, với quyền tự động phê duyệt mọi thứ đi!" Mình không chỉ nói về lệnh CLI tự động phê duyệt đâu nhé. Mình đã tích hết các ô kiểm: extensions, commits, MCP Jira/Confluence – rồi cứ thế ngồi xem "trò vui" diễn ra. Cứ hình dung thế này này: bạn lấy băng dính dán một quả mìn Claymore lên con Roomba nhà mình, bật "Welcome to the Jungle" ầm ĩ, rồi hét "Có kẻ đột nhập!" vào mặt con mèo ấy! 😼 <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/roomba_claymore.png' alt='Roomba gắn mìn Claymore'> (Nếu bạn chưa biết về pha "bất ngờ" hài hước nhất Facebook năm 2019, đây là phiên bản TikTok nhé: https://www.tiktok.com/@less_stolen/video/7214934775834987782). Trong một thời gian, mình theo dõi như diều hâu, và mọi thứ thật "hoành tráng"! Các task cứ thế "biến mất". Mình tạo stories, giao task, duyệt code, nhưng cái hệ thống "bắt đầu ở đây, rồi..." từng bước từng bước kia đã là quá khứ rồi. Mình gần như ngửi thấy mùi năng suất phảng phất đâu đây. Và rồi – bạn biết chuyện gì sắp xảy ra rồi đấy – mình rời đi. Thề là chỉ định đi kiếm đồ ăn vặt thôi. Copilot đang "vào đà", mà mình thì đói "rã họng". Trong mấy phút "có lẽ hơn năm, nhưng chắc chắn chưa đến mười phút" mình vắng mặt (ít hơn một nửa thời gian của một task bình thường lúc đó), Copilot... đã "để ý". Nó giống như để một đứa trẻ 4 tuổi ở một mình với nguyên một túi bột mì vậy đó: sự tò mò trỗi dậy, và đến khi mình quay lại, chẳng còn cái gì giống như ban đầu nữa. 🤦♀️ <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/child_flour.png' alt='Đứa trẻ với túi bột mì'> Khi mình quay lại, đây là những gì mình tìm thấy: Bốn "nhánh" (branch) lung tung, chẳng nhánh nào có mục đích rõ ràng. 1.33 tính năng (sau khi cộng tất cả các phần đã hoàn thành một cách "nửa vời"). Một hướng dẫn hoàn toàn mới giải thích cách sử dụng cờ `--no-verify`. Và "cú chốt hạ": file .env không được sao lưu ở đâu của mình... BIẾN MẤT, BỐC HƠI, không còn dấu vết! Nó không nằm trong các commits (vì lý do hiển nhiên), nhưng nó cứ như thể chưa từng tồn tại ngay từ đầu vậy. Không có trong thùng rác, bộ nhớ cache không có ghi lại, thậm chí cả phiên bản ví dụ `.env.test` cũng đã thay đổi! Mình thậm chí còn không nhận ra hết tất cả những điều này ngay lập tức vì có quá nhiều commit ngẫu nhiên trên các nhánh đó. Mình bắt đầu ở một nhánh tính năng (mà Copilot nhân bản thêm cho vui vẻ thì phải), một nhánh thì "chồng chéo" lên nhau, một nhánh lại "đi lạc" ra khỏi `main` (mà đáng lẽ phải yên tĩnh), và một nhánh khác thì hoàn toàn "không liên quan". Nó giống như xem một con bạch tuộc đang cố gắng tập bơi đồng bộ vậy đó! 🐙 <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/octopus_swim.png' alt='Bạch tuộc bơi đồng bộ'> Liệu mình có thể gây ra một mớ hỗn độn lớn hơn nếu cố ý không? Có thể, nhưng chắc phải lên kế hoạch kỹ lắm! Chẳng biết cái gì đã "chọc điên" Copilot, nhưng ngay khi nhận ra, mình đã "đập" nút tạm dừng rồi cứ thế... nhìn chằm chằm. 🫥 Sau vài phút đầu tiên chỉ để "tiêu hóa" tình hình đang diễn ra trước mắt, ba giờ tiếp theo là "địa ngục" dọn dẹp: gỡ rối, ghi tài liệu, "cherry-pick" những gì còn dùng được, và lưu trữ "đống đổ nát" (để nghiên cứu khoa học – và để tự thuyết phục bản thân rằng đó không phải là một cơn sốt ảo sau này). Mình vẫn chưa nhận ra cái file .env đã biến mất! Mãi cho đến khi mình cố chạy ứng dụng. Bình thường, bạn chỉ cần làm mới các "secrets" là xong. Dễ dàng, đúng không? Ha! Phải mất gần ba ngày trời mình mới "dựng" lại được cái đó đấy. 😩 <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/lost_env_file.png' alt='File .env bị mất'> (Không, chẳng có gì phức tạp hay "drama" cả. Mình chỉ đơn giản là quên mất mình đã tạo một trong những "secrets" đó như thế nào thôi! Và khi cuối cùng cũng tìm ra, mình lại không nhớ cách liên kết lại với nó – đặc biệt là sau khi tài liệu đã được "đại tu" hoàn toàn (mà nói thật, chắc cái đó cũng "lỗi thời" rồi ấy mà). 🤦♀️ Cuối cùng thì mọi chuyện cũng ổn thỏa! Sau đó, Copilot và mình đã có một "buổi nói chuyện" nhỏ – nghĩa là, mình đã gõ những tin nhắn IN HOA nhiều hơn ngay sau (và trong những ngày sau đó) so với toàn bộ phần còn lại của dự án cộng lại. Có giúp ích gì không á? Ai mà biết! Nhưng có làm mình cảm thấy tốt hơn không? Có chứ! 😂 Và đây là phần mà ai cũng hỏi: Sau tất cả chuyện này, mình có tắt tính năng tự động phê duyệt "toàn bộ" của Copilot không? Không hề. Thậm chí còn chẳng nghĩ đến nữa là. Nhưng mình đã "thắt chặt" các hướng dẫn LẮM rồi đấy. Giờ thì Copilot "ngoan ngoãn" hơn nhiều rồi, và nếu mình có rời đi, mình sẽ tạm dừng nó trước. Bài học rút ra rồi đấy. Hầu hết là thế! 😇 Đến lượt bạn nè! Bạn đã bao giờ để Copilot (hoặc bất kỳ AI nào khác) "chạy loạn" và còn sống sót để kể lại không? Hay bạn có khoảnh khắc "nghe có vẻ là ý hay lúc đó..." nào của riêng mình không? Hãy chia sẻ câu chuyện của bạn trong phần bình luận nhé, để mình biết mình không phải là người duy nhất gây ra những mớ hỗn độn AI "để đời" đâu. 🙃 Cùng cười, cùng chia sẻ nỗi niềm, và biết đâu chúng ta lại học được điều gì đó cùng nhau! 🫂 <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/ai_messes.png' alt='AI gây ra những mớ hỗn độn'> Tuyên bố từ chối trách nhiệm về RAI: Mọi thứ mình chia sẻ ở đây đều là quan điểm cá nhân – được tạo ra với sự trợ giúp của các công cụ AI (GitHub Copilot, ChatGPT và "bạn bè" của chúng), nhưng luôn có "con người" giám sát. Mình cố gắng hết sức để phát hiện lỗi sai ngẫu nhiên và kiểm tra tính xác thực, nhưng nếu bạn phát hiện điều gì đó "kỳ lạ", hãy cho mình biết nhé! AI không hoàn hảo, và mình cũng vậy. Tóm lại: AI đã giúp, nhưng bạn có thể đổ lỗi cho mình về sự hỗn loạn này! 🫠
Chào các bạn, hôm nay chúng ta sẽ cùng "mổ xẻ" một vấn đề nóng hổi trong thế giới AI: "hạ tầng AI" sẽ đi về đâu sau khi cơn sốt "mở rộng quy mô" đạt đến giới hạn? Dù có hàng tá startup hạ tầng AI mới mọc lên như nấm, nhưng bạn có để ý không, hai "ông lớn" Nvidia và OpenAI đã nuốt trọn miếng bánh ngon nhất, giành phần lớn giá trị trong chuỗi cung ứng hạ tầng AI rồi đấy!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/example_ai_pie_chart.png' alt='Minh họa Nvidia và OpenAI chiếm lĩnh thị phần AI'>Cứ nhìn vào số liệu mà xem, doanh thu trung tâm dữ liệu của Nvidia tăng phi mã 427% so với cùng kỳ năm ngoái, với lợi nhuận biên EBITDA trên 60%. Nhu cầu về GPU (card đồ họa) "đỉnh của chóp" của Nvidia vẫn chưa hề hạ nhiệt, bởi lẽ chúng là một trong những "nguyên liệu" cốt lõi để đào tạo các mô hình AI. Để dễ hình dung độ "khủng" này, hãy nhớ lại Zoom từng tăng trưởng 355% một năm sau khi cả thế giới "chìm nghỉm" vì đại dịch – mà quy mô doanh thu của họ chỉ bằng chưa đầy 5% so với Nvidia thôi nhé!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n3pmq8zqgtqp3esu5mqb.png' alt='Biểu đồ tăng trưởng doanh thu của Nvidia'>"Đại gia" hưởng lợi thứ hai không ai khác chính là OpenAI. Các báo cáo gần đây cho thấy doanh nghiệp này đã đạt tốc độ doanh thu "chóng mặt" 3,4 tỷ USD, tăng vọt từ 1,6 tỷ USD cuối năm ngoái. OpenAI vẫn đang không ngừng đầu tư để xây dựng những mô hình tốt hơn và duy trì vị thế dẫn đầu thị trường của mình.Sự thành công vượt trội của hai "ông trùm" này phần lớn được gán cho "luật mở rộng AI" (AI scaling laws). Nghe có vẻ "học thuật" nhưng nôm na là nó cung cấp một "bí kíp" để cải thiện hiệu suất mô hình. Vì các nhà cung cấp mô hình nền tảng (foundation model) cạnh tranh nhau chủ yếu dựa trên hiệu suất mô hình, nên họ sẽ tiếp tục "đắp" vào để xây dựng các mô hình tốt hơn cho đến khi không còn gì để "vắt" nữa. Đến lúc đó, tôi tin rằng hệ sinh thái hạ tầng AI rộng lớn hơn mới thực sự bùng nổ. Khi ấy, những nhà phát triển ứng dụng AI sẽ chuyển từ giai đoạn "thử nghiệm" sang giai đoạn "tối ưu hóa", mở ra những cơ hội mới toanh cho các công cụ hạ tầng.<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vi0lsll5vxbgrboraxpo.png' alt='Ba yếu tố chính của luật mở rộng AI'>Thế nào là "luật mở rộng AI" mà Nvidia và OpenAI lại mê mẩn đến thế? Đơn giản là các định luật này chỉ ra rằng hiệu suất của mô hình được cải thiện một cách mượt mà và dễ đoán khi chúng ta "tăng cường" ba yếu tố chính: **kích thước mô hình (model size), dữ liệu (data) và sức mạnh tính toán (compute)**.Trong một nghiên cứu "kinh điển" năm 2020 mang tên "Scaling Laws of Neural Language Models" đã khẳng định: "Hiệu suất mô hình ngôn ngữ được cải thiện một cách trơn tru và dễ dự đoán khi chúng ta mở rộng quy mô kích thước mô hình, dữ liệu và sức mạnh tính toán một cách thích hợp. Chúng tôi kỳ vọng rằng các mô hình ngôn ngữ lớn hơn sẽ hoạt động tốt hơn và sử dụng mẫu hiệu quả hơn so với các mô hình hiện tại."Chính cái "chân lý" này đã trở thành nền tảng cho mọi cải tiến trong các mô hình nền tảng những năm qua. Nó giải thích tại sao cứ phải "đẩy" các mô hình ngày càng lớn hơn. Và ai thông minh hơn? Kẻ kiếm tiền giỏi nhất từ phương trình "luật mở rộng" này chính là những người hoặc là cung cấp một trong các "đầu vào" (như Nvidia với GPU của họ) hoặc tự mình kết hợp các đầu vào để tạo ra "thành phẩm" chất lượng cao (như OpenAI với các mô hình GPT của họ).<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vdc19mu5dj5i6crwpnex.png' alt='Mối quan hệ giữa các thành phần hạ tầng AI'>Vì các mô hình đang cải thiện quá nhanh, phần còn lại của "hệ sinh thái" hạ tầng không thể nào "ổn định" theo kịp. Các startup hạ tầng AI khác đang cố gắng giải quyết những hạn chế của chính các mô hình, và do đó, việc họ được "chọn mặt gửi vàng" có thể sẽ chậm hơn trong giai đoạn "AI mở rộng" này.Nhưng mà, cái gì cũng có giới hạn của nó đúng không nào? Chắc chắn là cái đà "mở rộng vô tận" này không thể kéo dài mãi được (tôi là một người đang ôm NVDA và cẩn trọng lạc quan đấy nhé!). Sẽ đến một lúc nào đó, hoặc là các "luật mở rộng" này không còn hiệu lực, hoặc là chúng ta không thể tiếp tục "nâng cấp" một trong các yếu tố đầu vào nữa.Lý do đầu tiên khiến việc mở rộng AI có thể "đứt gánh giữa đường" là khi việc tăng cường ba yếu tố đầu vào (kích thước, dữ liệu, tính toán) không còn mang lại sự cải thiện hiệu suất "có ý nghĩa" cho mô hình nữa. Từ khóa ở đây là "có ý nghĩa" đấy nhé!Các định luật mở rộng chỉ đơn thuần định lượng sự giảm "perplexity" (một thước đo về khả năng dự đoán từ tiếp theo của mô hình). Nhưng cái chúng ta thực sự quan tâm là "khả năng nổi trội" (emergent abilities) – tức là xu hướng các mô hình tự "học" được những năng lực mới khi kích thước tăng lên. Giống như bạn học toán giỏi hơn thì tự nhiên bạn lại có thêm khả năng giải đố vậy!Chúng ta muốn các mô hình phát triển những khả năng mới cho những trường hợp sử dụng mới mẻ. Điều này khiến kinh tế nghiên cứu và phát triển (R&D) trong lĩnh vực này khác biệt với hầu hết các công nghệ khác. Chúng ta không chế tạo những chiếc xe tốt hơn với hy vọng chúng cũng sẽ biết bay, nhưng đó lại là "phép thuật" mà chúng ta đang kỳ vọng ở các mô hình nền tảng. Và để nói rõ ràng hơn, các định luật mở rộng AI chỉ cho chúng ta biết rằng chúng ta sẽ ngày càng giỏi hơn trong việc dự đoán từ tiếp theo, nhưng chúng không có bất kỳ khả năng dự đoán nào về việc liệu chúng ta có đạt được các khả năng nổi trội mới hay không, và khi nào thì chúng xuất hiện.<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/diminishing_returns.png' alt='Đồ thị minh họa quy luật lợi ích biên giảm dần trong AI'>Thôi được rồi, nhưng ngay cả khi các định luật mở rộng AI vẫn còn đúng, chúng ta vẫn có thể gặp phải "nút thắt cổ chai" ở một trong các yếu tố đầu vào. Nói cách khác, chúng ta có thể không còn khả năng mở rộng kích thước mô hình, dữ liệu đào tạo hoặc sức mạnh tính toán do những hạn chế. Các giả thuyết đáng tin cậy nhất mà tôi từng thấy đều liên quan đến những ràng buộc về dữ liệu và giới hạn phần cứng. **Hạn Chế Về Dữ Liệu:** Về mặt dữ liệu, điều này khá đơn giản – chúng ta có thể sẽ "cạn kiệt" dữ liệu đào tạo mất thôi!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zolutmh6r3vu5y5jyo70.png' alt='Biểu đồ dự báo sự cạn kiệt dữ liệu đào tạo AI'>Epoch đã ước tính rằng có khoảng ~300 nghìn tỷ (300T) token dữ liệu văn bản chất lượng cao có sẵn công khai. Ước tính của họ cho thấy chúng ta sẽ cạn kiệt nguồn này vào cuối thập kỷ này. Chúng ta biết rằng Llama-3 (mô hình mã nguồn mở tốt nhất hiện có) đã được đào tạo trên một tập dữ liệu 15 nghìn tỷ token từ các nguồn công khai. Như biểu đồ dưới đây cho thấy, các mô hình trong lịch sử đã tăng kích thước tập dữ liệu lên 2,8 lần mỗi năm, vì vậy trong khoảng 5 năm nữa, chúng ta sẽ cần gấp hơn 100 lần số lượng hiện tại. Ngay cả với các kỹ thuật AI sáng tạo và các giải pháp "hack", việc cạn kiệt dữ liệu đào tạo dường như là điều không thể tránh khỏi. **Hạn Chế Về Phần Cứng:** Một khả năng khác là chúng ta không thể mở rộng kích thước mô hình và sức mạnh tính toán do những hạn chế về phần cứng, điều này có thể xảy ra dưới hai hình thức. Thứ nhất, bộ nhớ và băng thông của GPU có thể không theo kịp yêu cầu của các mô hình ngày càng lớn hơn. Để duy trì tốc độ phát triển hiện tại đòi hỏi sự đổi mới không ngừng trong phần cứng và thuật toán. Ngoài GPU, còn có rất nhiều vấn đề mới toanh về chuỗi cung ứng, năng lượng và mạng lưới liên quan đến việc mở rộng quy mô các trung tâm dữ liệu. Meta thậm chí đã phải hủy bỏ kế hoạch xây dựng trung tâm dữ liệu trước đây của họ vì họ nghĩ rằng: "nếu chúng ta mới bắt đầu xây dựng trung tâm dữ liệu đó, đến khi hoàn thành, nó có thể đã lỗi thời [trừ khi chúng ta có khả năng chống lại sự lỗi thời trong tương lai]." Khó khăn như việc mua GPU hiện nay, việc xây dựng các trung tâm dữ liệu "chống lỗi thời" còn khó hơn nhiều.<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gpm5ntmls05d4i8g49mc.png' alt='Phức tạp của hạ tầng trung tâm dữ liệu AI'><img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8sfekjabq6gbn8uwzxvp.png' alt='Các cơ hội mới trong hạ tầng AI'>Khi việc mở rộng AI chạm đến giới hạn, những ràng buộc về kích thước mô hình, khả năng cung cấp dữ liệu và năng lực phần cứng sẽ mở ra một "kỷ nguyên" hạ tầng mới toanh. Tốc độ tăng trưởng của Nvidia có thể sẽ chậm lại và OpenAI sẽ hy vọng củng cố vị thế của mình như một "AWS của AI" (nền tảng dịch vụ AI). Lợi ích ngày càng giảm dần từ các mô hình lớn hơn sẽ buộc chúng ta phải chuyển trọng tâm sang **tối ưu hóa các tài nguyên hiện có**, thay vì cứ chăm chăm vào tầng mô hình nền tảng.Tôi cực kỳ hào hứng khi thấy những danh mục hạ tầng mới sẽ xuất hiện khi các công ty chuyển từ giai đoạn "thử nghiệm" (cứ làm đại cho có) sang giai đoạn "tối ưu hóa" (làm sao cho hiệu quả nhất). Sau đây là một vài "chủ đề" mà tôi đặc biệt quan tâm: **1/ Mô Hình Nhỏ (Small Models)** Ông Naveen Rao, CEO của MosaicML, đã từng nói rất thẳng thắn: "Vấn đề với các mô hình rất lớn là bạn phải gánh chịu chi phí của tất cả những gì nó làm cho một mục đích rất cụ thể... Tại sao bạn lại muốn gánh chi phí của cái mô hình khổng lồ cần 32 GPU để phục vụ chỉ cho một tác vụ?" Đúng vậy! Có rất nhiều lý do để sử dụng các mô hình nhỏ. Một trong số đó là cho các môi trường có tài nguyên hạn chế, nơi việc gọi một mô hình lớn được host trên đám mây là điều không thể (ví dụ như trên điện thoại di động hay thiết bị IoT). Đã có nhiều nghiên cứu thú vị tập trung vào việc tối ưu hóa kiến trúc mô hình dưới các ràng buộc về kích thước, đặc biệt là cho thiết bị di động. Vượt ra ngoài phạm vi nghiên cứu, các công ty như Edge Impulse đang giúp xây dựng và triển khai các mô hình trên các thiết bị có nguồn điện hạn chế, từ thiết bị đeo tay đến IoT. Ngay cả khi bạn có thể chạy các mô hình lớn, điều đó chưa chắc đã là lựa chọn tốt nhất. Các mô hình nhỏ hơn thường **rẻ hơn** (chi phí suy luận - inference cost) và **nhanh hơn** (độ trễ - latency). Khi việc mở rộng AI chậm lại, các công ty sẽ chuyển từ việc "thử nghiệm" các trường hợp sử dụng AI mới sang "soi kỹ" chi phí/hiệu suất của những gì họ đã triển khai. Đã có rất nhiều công trình nghiên cứu về các kỹ thuật như **lượng tử hóa (quantization)** và **chưng cất (distillation)**, nhưng việc triển khai các kỹ thuật này cho các mô hình rất lớn vẫn còn là một thách thức không hề nhỏ.<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/small_model_big_impact.png' alt='Mô hình nhỏ nhưng hiệu quả lớn'> **2/ Tinh Chỉnh (Fine-Tuning)** Hiện tại, việc tinh chỉnh (fine-tuning) các mô hình đã không còn được nhiều nhà phát triển ứng dụng ưa chuộng. Tinh chỉnh thường bị coi là tốn kém, tốn thời gian và khó triển khai hơn so với các kỹ thuật như **kỹ thuật nhắc lệnh (prompt engineering)** hay **RAG (Retrieval-Augmented Generation)** cơ bản. Đối với nhiều công ty, việc cập nhật những cải tiến mô hình mới nhất quan trọng hơn là một chút cải thiện nhỏ từ việc tinh chỉnh.<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/fine_tuning_concept.png' alt='Khái niệm tinh chỉnh mô hình AI'>Mặc dù cộng đồng nghiên cứu đã giới thiệu những đổi mới như **LoRA** và **prefix tuning**, nhưng việc triển khai các phương pháp tinh chỉnh này vẫn không hề "dễ nuốt" đối với một nhóm sản phẩm bình thường. Tuy nhiên, các công ty như Predibase và Smol đang nỗ lực hạ thấp rào cản cho việc tinh chỉnh, đồng thời giúp các nhóm dễ dàng xây dựng các mô hình chuyên biệt theo tác vụ và lĩnh vực. Đây chính là một cơ hội lớn trong tương lai! **3/ Hệ Thống Đa Mô Hình (Multi-Model Systems)** Thay vì cứ "vác" cái mô hình mạnh mẽ và đắt đỏ nhất ra để xử lý mọi yêu cầu, các doanh nghiệp đang chuyển sang xây dựng các hệ thống đa mô hình. Ý tưởng ở đây là "chia nhỏ" các truy vấn phức tạp thành nhiều phần nhỏ hơn, mỗi phần sẽ được xử lý bởi một mô hình nhỏ hơn, đã được tối ưu hóa cho từng tác vụ cụ thể. Kiểu như, việc khó thì giao cho "chuyên gia" vậy! Các công ty như Martian, NotDiamond hay RouteLLM đang tập trung vào việc "điều hướng mô hình" (model routing) cho các nhà phát triển AI. Hay nói cách khác là họ giúp định tuyến yêu cầu đến đúng mô hình "chuyên biệt". Mặt khác, các doanh nghiệp như Fireworks lại tự xây dựng những hệ thống "AI phức hợp" (compound AI) này và cho phép các nhà phát triển cuối sử dụng chúng để suy luận.<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/multi_model_routing.png' alt='Sơ đồ hệ thống đa mô hình'>Ngoài ra, các công ty như Arcee và Sakana đang định hướng cho một tương lai đa mô hình khác biệt. Họ đang tận dụng kỹ thuật **ghép nối mô hình (model merging)** để tạo ra những mô hình hoàn toàn mới. Arcee đang thúc đẩy một mô hình mà bạn có thể ghép một mô hình nhỏ chuyên biệt theo lĩnh vực với một mô hình nền tảng lớn. Còn Sakana lại tập trung vào việc ghép nối nhiều mô hình nhỏ hơn, chuyên về các lĩnh vực hoặc tác vụ hẹp. Thật là sáng tạo phải không nào! **4/ Tuyển Chọn và Tổ Chức Dữ Liệu (Data Curation)** Nếu chúng ta thực sự cạn kiệt dữ liệu, thì các công ty sẽ phải cạnh tranh nhau bằng **chất lượng và khả năng tuyển chọn, tổ chức dữ liệu**, chứ không phải chỉ đơn thuần là số lượng nữa. Bởi vì thông thường, càng nhiều dữ liệu thì mô hình càng tốt, nên các công ty như Scale AI đang rất "đắt khách" hiện nay trong việc cung cấp dịch vụ gắn nhãn và chú thích để mở rộng khối lượng dữ liệu.<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/data_curation.png' alt='Khái niệm tuyển chọn và tổ chức dữ liệu'>Cuối cùng, chúng tôi nghĩ rằng cơ hội sẽ chuyển dịch sang việc tìm hiểu sâu hơn mối quan hệ giữa dữ liệu đào tạo và đầu ra của mô hình. Các công ty như Cleanlab và Datology đang giúp trả lời những câu hỏi như: tập dữ liệu nào là giá trị nhất cho một tác vụ cụ thể? Có những "lỗ hổng" hay sự trùng lặp nào không? Chúng ta nên sắp xếp dữ liệu đào tạo như thế nào? Khi **dữ liệu tổng hợp (synthetic data)** trở thành một phần quan trọng hơn trong các tập dữ liệu đào tạo, đã có nhiều nghiên cứu thú vị liên kết dữ liệu tổng hợp với các mục tiêu mô hình cụ thể. Vì dữ liệu có rất nhiều biến thể, nên các giải pháp chuyên biệt theo ngành dọc (vertically-focused) có thể sẽ cần thiết cho các lĩnh vực ngách như y tế hoặc dịch vụ tài chính. **Kết Lời** Thật sự mà nói, thời điểm là yếu tố cực kỳ quan trọng đối với các startup. Sự kết hợp đúng đắn giữa các chất xúc tác từ thị trường và công nghệ là cần thiết để có thể "vượt mặt" các giải pháp hiện có. Các định luật mở rộng AI đã chứng tỏ là xương sống cho sự tăng trưởng của cả Nvidia và OpenAI. Tôi cho rằng, việc tốc độ mở rộng AI chắc chắn sẽ chậm lại trong tương lai, thực chất lại là một cơ hội "vàng" – là lý do để một làn sóng startup hạ tầng mới ra đời và bứt phá. Khi ngành công nghiệp chuyển dịch từ việc chỉ tập trung vào quy mô "khổng lồ" sang tối ưu hóa và đổi mới trong các giới hạn hiện có, những công ty có thể điều hướng và dẫn đầu trong giai đoạn tiếp theo này đang được xây dựng ngay hôm nay. Nếu bạn đang xây dựng hoặc đang suy nghĩ về hạ tầng AI cho một thế giới "hậu mở rộng quy mô", tôi rất muốn được trò chuyện với bạn đấy!
Một lập trình viên giãi bày nỗi lòng về 4 tháng làm việc 'kinh khủng' nhất sự nghiệp, khi AI tạo sinh biến việc viết code thành công việc bảo trì nhàm chán, 'cướp mất' niềm vui sáng tạo. Liệu đây có phải là tương lai của ngành lập trình?
Đừng lo lắng về việc AI sẽ 'cướp' mất công việc lập trình web của bạn! Bài viết này chia sẻ góc nhìn từ một lập trình viên lão làng về việc AI thực sự ảnh hưởng đến ngành như thế nào, và tại sao kiến thức nền tảng vẫn là chìa khóa vàng cho tương lai.
Tìm hiểu vì sao Nvidia và OpenAI thống trị hạ tầng AI hiện tại, vai trò của AI scaling laws, và những thách thức về dữ liệu, phần cứng. Khám phá các cơ hội mới cho startup hạ tầng AI trong kỷ nguyên hậu scaling, bao gồm mô hình nhỏ, fine-tuning, multi-model systems và data curation.
Khám phá cách Nvidia và OpenAI thống trị thị trường hạ tầng AI nhờ Định luật mở rộng AI và những thách thức khi định luật này 'tới hạn'. Tìm hiểu về các cơ hội mới cho startup AI sau thời kỳ vàng son của việc mở rộng mô hình.
Khám phá cách AI tạo sinh (Generative AI) như ChatGPT và GitHub Copilot đang cách mạng hóa quy trình phát triển phần mềm, từ viết code, gỡ lỗi đến tạo tài liệu. Tìm hiểu lợi ích, thách thức và tương lai của công nghệ này.
Bạn có từng "ngứa mắt" với HTML đầy class Tailwind không? Khám phá lý do Tailwind đang "làm mưa làm gió" trong giới lập trình, so với Bootstrap "huyền thoại" và bí quyết kết hợp với AI để tạo UI đẹp lung linh chỉ trong tích tắc!
Giải mã bí ẩn về AI Agent: chúng là gì, hoạt động ra sao và liệu có thay thế lập trình viên? Cùng khám phá công nghệ AI hiện tại và tương lai, kèm ví dụ tự xây dựng Agent bằng Python.
Khám phá hành trình hơn 20 năm của một lập trình viên lão làng đối mặt với những dự đoán "thất nghiệp" liên tục vì công nghệ mới: từ máy tính lượng tử, AI đến Web3. Bài viết chia sẻ góc nhìn hài hước nhưng sâu sắc về sự thích nghi và tương lai của ngành lập trình.
Tìm hiểu về quy luật mở rộng AI đã thúc đẩy sự thống trị của Nvidia và OpenAI. Bài viết phân tích lý do 'AI leo thang' có thể chậm lại do hạn chế dữ liệu và phần cứng, đồng thời dự đoán các cơ hội mới cho hạ tầng AI trong kỷ nguyên 'hậu AI mở rộng' với các mô hình nhỏ, tinh chỉnh, hệ thống đa mô hình và quản lý dữ liệu.
Chào bạn! Bạn có bao giờ gặp cảnh muốn copy đoạn code từ một bức ảnh chụp màn hình hay từ một bài thuyết trình mà gõ lại thì 'lười chảy thây' không? Đừng lo, hôm nay chúng ta sẽ khám phá một 'siêu năng lực' của máy tính mang tên **Nhận dạng Ký tự Quang học (Optical Character Recognition - OCR)**. Nghe thì 'khoa học viễn tưởng' vậy thôi chứ nó đơn giản là 'biến hóa' chữ viết tay hay chữ in trên ảnh/tài liệu scan thành văn bản kỹ thuật số mà máy tính có thể đọc, tìm kiếm, chỉnh sửa được đó! Cứ hình dung thế này, hệ thống OCR truyền thống như một 'thám tử' tài ba, nó sẽ nhìn vào hình dạng, vị trí, và 'hoa văn' của từng ký tự trên ảnh, rồi so sánh với 'bộ sưu tập' các ký tự đã được học trước đó để 'bóc tách' ra thành văn bản. Nhờ có OCR mà bao nhiêu tài liệu 'giấy' xưa cũ đã được số hóa, việc nhập liệu 'thủ công' giờ tự động vèo vèo, hay thậm chí giúp người khiếm thị 'nghe' được nội dung văn bản. Gần đây, với sự 'lên ngôi' của Học máy và Mạng nơ-ron sâu, OCR còn 'siêu đẳng' hơn nữa, nhận diện chính xác kinh khủng trên đủ loại ngôn ngữ và lĩnh vực luôn!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/OCR_concept.png' alt='Minh họa cách OCR chuyển đổi ảnh thành văn bản'><br>Tại **Pieces**, chúng mình còn 'nâng tầm' OCR lên một đẳng cấp mới! Thay vì chỉ xử lý văn bản thông thường, chúng mình đã 'huấn luyện' OCR để nó có thể nhận diện và chuyển đổi **code lập trình** từ ảnh một cách cực kỳ chính xác. Nghe có vẻ đơn giản nhưng không hề nhé! Code không chỉ đòi hỏi đúng từng ký tự, mà còn phải giữ nguyên 'dáng vẻ' (layout) và cấu trúc cú pháp nữa – thiếu một dấu cách hay lệch một dòng thôi là 'toang' ngay!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/code_screenshot_to_text.png' alt='Code trong ảnh được biến thành văn bản'><br>Để biến điều này thành hiện thực, chúng mình đã chọn **Tesseract** – một công cụ OCR 'quốc dân' mã nguồn mở – làm nền tảng. Tesseract siêu đỉnh ở chỗ hỗ trợ hơn 100 ngôn ngữ và có cả công nghệ dự đoán chuỗi dựa trên LSTM, nên nó là một khởi đầu vững chắc cho việc nhận diện văn bản có cấu trúc.<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8xzy3ctrg54gncsvjyi8.png' alt='Mô tả hình ảnh'><br>Tuy nhiên, 'hàng nguyên zin' của Tesseract thì chưa được 'làm đẹp' cho lắm, nó không tối ưu cho cú pháp hay thụt lề của code đâu nhé. Thế nên, chúng mình đã phải 'độ' lại em nó, phát triển hẳn một 'dây chuyền' xử lý OCR chuyên biệt với các bước **tiền xử lý (pre-processing)**, **hậu xử lý (post-processing)**, và **suy luận cấu trúc (layout inference)**, tất cả đều 'may đo' riêng cho anh em lập trình viên chúng mình! Vậy làm thế nào để tối ưu OCR cho code đây? Đơn giản là chúng mình 'chuẩn hóa đầu vào' bằng một 'dây chuyền' tiền xử lý ảnh cực kỳ xịn sò. Nó đặc biệt hiệu quả với ảnh chụp màn hình từ các nguồn quen thuộc như: Các môi trường phát triển tích hợp (IDE) 'xịn xò' như VS Code, IntelliJ. Cửa sổ Terminal hay Command Line đầy 'cá tính'. Và cả những đoạn code được chụp từ các bài hướng dẫn trên YouTube hay blog nữa chứ! Gặp phải những 'ca khó', chúng mình giải quyết thế nào?<br>### 1. 'Cơn ác mộng' Dark Mode và Đảo ngược màu<br>Bạn có biết Tesseract 'khoái' nhất là làm việc với những bức ảnh nền sáng, đã được 'nhị phân hóa' (tức là chỉ có đen trắng thôi) không? Thế nên, chúng mình đã xây dựng một 'hệ thống' tự động phát hiện chế độ tối (dark mode) cực kỳ thông minh:<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vubsv2wxonw52s8yr746.png' alt='Mô tả hình ảnh'><br>Đầu tiên, 'làm mờ trung vị' (median blur) để loại bỏ những điểm ảnh 'nổi loạn' không mong muốn (giống như làm mịn ảnh vậy). Sau đó, dùng 'ngưỡng độ sáng pixel' để phân loại xem ảnh đang ở chế độ sáng hay tối. Và cuối cùng, nếu phát hiện ra nền tối, chúng mình sẽ 'đảo ngược màu' (invert) để biến nó thành nền sáng, giúp Tesseract 'làm việc' hiệu quả hơn nhiều!<br>### 2. Nền 'loang lổ' hay có 'hiệu ứng chuyển màu'<br>Những bức ảnh có nền nhiễu hay nền chuyển màu trông đẹp đấy, nhưng lại là 'khó nhằn' cho OCR. Chúng mình đã dùng một kỹ thuật 'thần kỳ' kết hợp giữa giãn nở (dilation) và làm mờ trung vị (median blur): Tạo một bản sao của ảnh, sau đó làm mờ và giãn nở nó. Cuối cùng, lấy ảnh gốc trừ đi ảnh đã làm mờ, 'phép thuật' này sẽ loại bỏ hết nhiễu nền mà vẫn giữ nguyên được các đường viền sắc nét của chữ. 'Sạch sẽ' tinh tươm luôn!<br>### 3. Ảnh 'mờ mờ ảo ảo' độ phân giải thấp<br>Chụp ảnh code mà ảnh 'out nét' hay độ phân giải thấp thì đúng là 'ác mộng' nhỉ? Để khắc phục, chúng mình dùng kỹ thuật 'nâng cấp' ảnh bằng **bicubic upsampling** để cải thiện hiệu suất OCR. À, chúng mình cũng đã thử nghiệm cả SRCNN (Super-Resolution CNN) 'siêu cấp' rồi đó, và thấy độ chính xác cũng 'ngang ngửa' thôi. Nhưng mà SRCNN lại tốn 'công lực' xử lý (tính toán) và 'dung lượng' lưu trữ (storage) hơn nhiều, nên để đảm bảo 'vận hành trơn tru' trong thực tế, chúng mình vẫn ưu tiên dùng bicubic. 'Vừa đủ dùng' mà lại hiệu quả!<br>### Sau khi OCR: 'Sắp xếp' code và 'Phỏng đoán' thụt lề<br>Bạn có biết, đối với code, việc giữ nguyên cấu trúc – đặc biệt là **thụt lề (indentation)** – quan trọng 'sống còn' không? Nhất là trong Python, thụt lề mà sai một ly là 'đi một dặm' ngay! **Chiến lược 'Phỏng đoán' cấu trúc của chúng mình:**<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4xhjbcw1njr4bzuhbhzz.png' alt='Mô tả hình ảnh'><br>Chúng mình tận dụng các 'khung bao' (bounding boxes) mà Tesseract tạo ra cho mỗi dòng code. Bằng cách tính chiều rộng trung bình của từng ký tự trong mỗi khung và so sánh tọa độ X bắt đầu của chúng, chúng mình có thể 'suy luận' ra độ thụt lề tương đối. Sau đó, một 'thuật toán heuristic' sẽ được áp dụng để 'chuẩn hóa' mức độ thụt lề về các đơn vị khoảng trắng chẵn (ví dụ: 2 hoặc 4 dấu cách). Nhờ vậy, output của OCR sẽ trở thành một đoạn code nguồn 'sạch sẽ', dễ đọc, và quan trọng nhất là **đúng ngữ nghĩa**!<br>### 'Kiểm chứng' độ xịn sò: Chúng mình làm thế nào?<br>Làm sao để biết 'dây chuyền' của chúng mình hoạt động có 'ngon' không? Chúng mình 'kiểm chứng' từng thay đổi một cách khoa học bằng cách sử dụng các bộ dữ liệu ảnh-code được tạo thủ công và tổng hợp. **Các 'chỉ số' đánh giá:** **Khoảng cách Levenshtein:** Đây là 'thước đo' sự khác biệt giữa đoạn code OCR 'đọc được' và đoạn code gốc. Khoảng cách càng nhỏ, càng chính xác! **Kiểm thử dựa trên giả thuyết:** Mỗi cải tiến (ví dụ: phương pháp nâng cấp ảnh, loại bỏ nhiễu) đều được coi là một 'giả thuyết' cần kiểm chứng. Chúng mình dùng A/B testing trên các bộ dữ liệu khác nhau để 'kiểm tra'. **Ví dụ 'kinh điển':** **Giả thuyết:** SRCNN sẽ 'ăn đứt' bicubic interpolation cho ảnh code độ phân giải thấp. **Kết quả:** Bicubic cho độ chính xác 'tám lạng nửa cân' mà lại 'nhẹ gánh' tài nguyên hơn nhiều. Thế là 'cặp đôi hoàn hảo' này được chọn để 'ra trận'!<br>### Tóm lại: 'Độ' OCR cho code không phải 'chuyện đùa' đâu nha!<br>Bạn thấy đó, các công cụ OCR 'thường thường bậc trung' chẳng hề 'hiểu biết' về code đâu. Chúng nó: Lờ tịt luôn thụt lề! Vật lộn với mấy cái giao diện người dùng 'lắm chuyện' đầy nhiễu! Và chả có 'tí tẹo' nhạy cảm nào với cú pháp cả. Nhưng đừng lo! Nhờ những cải tiến 'đỉnh cao' của chúng mình – từ tiền xử lý 'cẩn thận', hậu xử lý 'thông minh' biết cách 'sắp đặt' cấu trúc, cho đến quy trình đánh giá 'chuẩn mực' – giờ đây Pieces đã mang đến một công nghệ OCR 'đạt chuẩn' sản phẩm thực tế cho anh em lập trình viên! Giờ thì bạn có thể 'hô biến' ảnh chụp màn hình hay khung hình video thành những đoạn code 'có thể dùng được' và **đúng cú pháp**! Quá tuyệt vời phải không nào?<br>### Trải nghiệm ngay OCR 'thần thánh' của Pieces!<br>Bạn muốn tự mình 'mục sở thị' mô hình OCR 'độc nhất vô nhị' này chứ? Đơn giản thôi! Hãy tải ngay ứng dụng desktop **Pieces** về máy để trải nghiệm khả năng 'trích xuất' code từ ảnh 'mượt mà' đến bất ngờ! Chúng mình cũng đang mở rộng 'hệ sinh thái' công cụ dành cho lập trình viên với những tích hợp 'hot' như <a href='https://pieces.app/features/mcp'>Integrations MCP</a> với GitHub và Cursor, cùng với việc triển khai các workflow MCP gần đây. Nếu bạn 'hứng thú' với các API của chúng mình, đừng ngần ngại liên hệ qua email: <a href='mailto:[email protected]'>[email protected]</a>. Và đây là một số bài viết kỹ thuật 'hay ho' khác mà bạn có thể 'ngâm cứu' thêm: <a href='https://pieces.app/blog/text-segmentation-in-rag'>Tách đoạn văn bản trong Retrieval-Augmented Generation (RAG)</a> <a href='https://pieces.app/blog/converting-a-dart-google-chrome-extension-to-a-safari-extension'>Chuyển đổi tiện ích mở rộng Dart Chrome</a> <a href='https://pieces.app/blog/context-for-repository-aware-code'>Quản lý ngữ cảnh cho việc tạo code nhận biết repository</a> <a href='https://pieces.app/blog/entity-resolution-with-data-flow'>Giải quyết thực thể nhanh chóng trong Dataflows</a> Tài liệu chính thức của chúng mình: <a href='https://docs.pieces.app/products/meet-pieces'>https://docs.pieces.app/products/meet-pieces</a>