22 điểm bởi xguru 2024-10-28 | 10 bình luận | Chia sẻ qua WhatsApp

Hình dung hóa và giải thích các xu hướng mới nhất trong các lĩnh vực kỹ thuật/công cụ/nền tảng/ngôn ngữ lập trình và framework theo 4 giai đoạn Hold/Assess/Trial/Adopt

Phản mẫu trong trợ lý lập trình

  • Không có gì ngạc nhiên khi trong kỳ Radar lần này, các cuộc thảo luận chủ yếu xoay quanh AI tạo sinh và LLM mà các nhà phát triển đang sử dụng phổ biến
  • Các mẫu hình tất yếu dẫn đến phản mẫu, tức là những tình huống theo ngữ cảnh mà nhà phát triển cần tránh
  • Trong không gian AI đang quá nóng, một số phản mẫu đã bắt đầu xuất hiện:
    • Quan niệm sai lầm rằng con người có thể thay thế hoàn toàn pair programming với AI như một người đồng hành
    • Phụ thuộc quá mức vào các đề xuất hỗ trợ lập trình
    • Vấn đề chất lượng mã trong mã được tạo sinh
    • Tốc độ tăng trưởng nhanh hơn của codebase
  • AI có xu hướng giải quyết vấn đề theo cách brute-force thay vì sử dụng trừu tượng hóa
    • Ví dụ: dùng hàng chục câu lệnh điều kiện thay cho Strategy design pattern
  • Đặc biệt, vấn đề chất lượng mã nhấn mạnh đây là lĩnh vực mà nhà phát triển và kiến trúc sư cần liên tục chú ý để không rơi vào loại mã “chạy được nhưng khủng khiếp”
  • Vì vậy, các thành viên trong nhóm cần tập trung hơn nữa vào các thực hành kỹ thuật tốt như unit test, hàm kiểm tra mức độ phù hợp kiến trúc và các kỹ thuật quản trị, xác minh đã được chứng minh khác
    • Mục đích là để bảo đảm AI đang hỗ trợ nỗ lực thay vì mã hóa codebase bằng sự phức tạp

Rust is anything but rusty - Rust không hề lỗi thời

  • Rust đang dần trở thành ngôn ngữ lập trình hệ thống được ưa chuộng
  • Trong mỗi phiên Radar, Rust liên tục xuất hiện trong các cuộc trò chuyện
  • Nhiều công cụ được thảo luận được viết bằng Rust
  • Rust là ngôn ngữ được ưu tiên khi thay thế các tiện ích cấp hệ thống cũ hoặc khi viết lại một phần hệ sinh thái để cải thiện hiệu năng
  • Cụm mô tả phổ biến nhất dành cho các công cụ dựa trên Rust có vẻ là “cực kỳ nhanh”
  • Chẳng hạn, trong hệ sinh thái Python có nhiều công cụ có lựa chọn thay thế dựa trên Rust để hỗ trợ hiệu năng tốt hơn rõ rệt
  • Các nhà thiết kế ngôn ngữ và cộng đồng đã thành công trong việc tạo ra một hệ sinh thái SDK cốt lõi, thư viện và công cụ phát triển rất được yêu thích, đồng thời mang lại tốc độ thực thi vượt trội với ít cạm bẫy hơn nhiều so với các ngôn ngữ đi trước
  • Nhiều người trong nhóm là fan của Rust, và có vẻ như phần lớn nhà phát triển sử dụng Rust đều đánh giá rất cao ngôn ngữ này

Sự trỗi dậy dần dần của WASM

  • WASM(WebAssembly) là định dạng lệnh nhị phân cho máy ảo dựa trên stack
  • Với phần lớn mối quan tâm của nhà phát triển, nó nghe có vẻ quá bí hiểm và ở mức quá thấp, nhưng mọi người vẫn nhìn ra ý nghĩa của nó: khả năng chạy các ứng dụng phức tạp trong sandbox của trình duyệt
  • WASM có thể chạy bên trong các máy ảo JavaScript hiện có, cho phép nhà phát triển nhúng vào trình duyệt những ứng dụng mà trước đây chỉ có thể triển khai bằng framework và extension native
  • 4 trình duyệt lớn (Chrome, Firefox, Safari, Edge) hiện đều hỗ trợ WASM 1.0, mở ra những khả năng thú vị cho phát triển tinh vi, portable và đa nền tảng
  • Trong vài năm qua, chúng tôi đã theo dõi tiêu chuẩn này với sự quan tâm lớn, và giờ rất vui khi thấy nó bắt đầu thể hiện năng lực như một mục tiêu triển khai hợp pháp

Vụ nổ Cambri của các công cụ AI tạo sinh

  • Nếu theo quỹ đạo đã được nêu trong vài kỳ Radar gần đây, chúng tôi đã dự đoán rằng AI tạo sinh sẽ được bàn luận nổi bật
  • Dù vậy, chúng tôi vẫn ngạc nhiên trước sự bùng nổ của hệ sinh thái công nghệ hỗ trợ các mô hình ngôn ngữ:
    • guardrail, đánh giá, công cụ xây dựng agent, framework cho tác vụ đầu ra có cấu trúc, vector database, dịch vụ đám mây và công cụ observability
  • Sự tăng trưởng nhanh và đa dạng này ở nhiều khía cạnh là hoàn toàn dễ hiểu
  • Trải nghiệm ban đầu, tức sự đơn giản của việc đưa prompt văn bản thuần vào mô hình ngôn ngữ, đã dẫn tới kỹ nghệ hóa sản phẩm phần mềm
  • Điều này có thể chưa đạt tới những giấc mơ và tuyên bố cường điệu xuất hiện sau khi mọi người gửi prompt đầu tiên cho ChatGPT, nhưng chúng tôi thấy việc sử dụng AI tạo sinh một cách khôn ngoan và hiệu quả ở nhiều khách hàng, và tất cả những công cụ, nền tảng, framework này đều đóng vai trò quan trọng trong việc đưa các giải pháp dựa trên LLM vào production
  • Cũng giống trường hợp bùng nổ hệ sinh thái JavaScript vào khoảng năm 2015, chúng tôi kỳ vọng sự tăng trưởng hỗn loạn này sẽ còn tiếp diễn trong một thời gian

[Techniques]

Adopt

  • 1% canary

    • Khuyến khích phản hồi sớm và giảm rủi ro đối với phiên bản phần mềm mới bằng cách sử dụng canary deployment
    • Kỹ thuật rollout tính năng mới cho 1% người dùng, cho phép nhóm thu thập phản hồi, quan sát tác động và ứng phó khi cần
    • Quan trọng đối với các đợt triển khai quy mô lớn như ứng dụng di động, thiết bị edge computing hoặc xe định nghĩa bằng phần mềm
  • Component testing

    • Tự động hóa kiểm thử là nền tảng của phát triển phần mềm hiệu quả
    • Tập trung vào kiểm thử frontend để bảo đảm độ ổn định và tốc độ
    • Sử dụng jsdom cho component testing để thực hiện trong bộ nhớ
    • Với kiểm thử end-to-end thì dùng công cụ trình duyệt
  • Continuous deployment

    • Nên áp dụng continuous deployment bất cứ khi nào có thể
    • Tự động triển khai lên môi trường vận hành mọi thay đổi đã vượt qua kiểm thử tự động
    • Cho phép vòng lặp phản hồi nhanh và mang lại giá trị kịp thời cho khách hàng
    • Tham khảo cuốn sách "Continuous Deployment" của Valentina Servile, trong đó đưa ra lộ trình để đạt được mức độ trưởng thành cần thiết
  • Retrieval-augmented generation (RAG)

    • Là mẫu hình được ưu tiên để cải thiện chất lượng phản hồi của mô hình ngôn ngữ lớn
    • Đã được sử dụng thành công trong các dự án như nền tảng Jugalbandi AI
    • Lưu thông tin về các tài liệu liên quan và đáng tin cậy vào cơ sở dữ liệu
    • Truy xuất và bổ sung các tài liệu liên quan vào prompt để cung cấp ngữ cảnh phong phú
    • Tạo ra chất lượng đầu ra tốt hơn và giảm đáng kể hallucination

Trial

  • Domain storytelling

    • Domain-driven design (DDD) đã trở thành nền tảng cho cách tiếp cận phát triển phần mềm của chúng tôi
    • Nhiều nhóm gặp khó khăn khi bắt đầu với DDD
    • Domain storytelling là một lựa chọn thay thế hoặc bổ sung cho việc phát triển domain model ban đầu
    • Làm rõ sự thấu hiểu chung bằng cách sơ đồ hóa phần mô tả hoạt động từ các chuyên gia nghiệp vụ
  • Fine-tuning embedding models

    • Khi xây dựng ứng dụng LLM dựa trên retrieval-augmented generation, chất lượng của embedding ảnh hưởng trực tiếp đến truy xuất và phản hồi
    • Có thể cải thiện độ chính xác và mức độ phù hợp của embedding cho tác vụ hoặc miền cụ thể
    • Trong các ứng dụng LLM theo miền, khi việc trích xuất thông tin chính xác là quan trọng, nhóm chúng tôi đã thực hiện fine-tuning embedding
    • Cần cân nhắc ưu và nhược điểm của cách tiếp cận này
  • Function calling with LLMs

    • Khả năng để LLM xác định và gọi hàm phù hợp dựa trên truy vấn được đưa ra và các tài liệu liên quan
    • Mở rộng để LLM có thể làm nhiều hơn việc tạo văn bản
    • Thông qua việc kích hoạt hàm hoặc API, LLM có thể thực hiện các tác vụ vốn trước đây nằm ngoài phạm vi chức năng độc lập của nó
    • LLM cũng có thể kết nối hệ thống nội bộ, cơ sở dữ liệu hoặc tìm kiếm Internet qua trình duyệt
    • Đây là một mẫu hình trừu tượng cần được hiểu trong bối cảnh retrieval-augmented generation và kiến trúc agent
  • LLM as a judge

    • Chúng tôi xây dựng các hệ thống có thể đưa ra câu trả lời dựa trên câu hỏi đối với tập dữ liệu lớn, nhưng khó theo dõi cách chúng đi đến câu trả lời
    • Dùng LLM để đánh giá phản hồi của một hệ thống khác (cũng có thể dựa trên LLM)
    • Được sử dụng để đánh giá mức độ liên quan của kết quả tìm kiếm trong catalog sản phẩm và hướng dẫn người dùng của chatbot dựa trên LLM
    • Cần cấu hình và hiệu chỉnh cẩn thận hệ thống đánh giá
    • Có thể giúp nâng cao hiệu quả và giảm chi phí
  • Passkeys

    • Được liên minh FIDO dẫn dắt và có sự hỗ trợ của Apple, Google, Microsoft, đang tiến gần tới khả năng sử dụng đại trà
    • Khi thiết lập đăng nhập mới sẽ tạo một cặp khóa - website nhận khóa công khai, người dùng giữ khóa riêng
    • Xử lý đăng nhập bằng mã hóa bất đối xứng
    • Chứng minh quyền sở hữu khóa riêng được lưu trên thiết bị người dùng và không gửi tới website
    • Quyền truy cập vào Passkey được bảo vệ bằng sinh trắc học hoặc mã PIN
    • Với người dùng đa nền tảng, có thể lưu Passkey trên thiết bị khác ngoài thiết bị cần tạo khóa hoặc đăng nhập thông qua CTAP
  • Small language models

    • Mô hình ngôn ngữ lớn (LLM) hữu ích, nhưng có thể phát sinh vấn đề do kích thước của chúng
      • Cần nhiều tài nguyên tính toán cho phản hồi prompt nên chậm và tốn kém
      • Do mô hình độc quyền và có kích thước lớn, thường phải được lưu trữ trên đám mây của bên thứ ba, gây ra vấn đề với dữ liệu nhạy cảm
      • Trong đa số trường hợp, việc huấn luyện mô hình là quá đắt đỏ
    • Mẫu RAG có thể giải quyết nhu cầu huấn luyện và fine-tuning mô hình nền tảng, nhưng vấn đề chi phí và quyền riêng tư vẫn còn
    • Mối quan tâm đến mô hình ngôn ngữ nhỏ (SLM) đang gia tăng
      • Có ít trọng số và độ chính xác thấp hơn (thường từ 3,5 tỷ đến 10 tỷ tham số)
      • Nếu được thiết lập đúng trong ngữ cảnh phù hợp, có thể đạt hiệu năng ngang bằng hoặc vượt LLM
      • Nhờ kích thước nhỏ, có thể chạy trên thiết bị biên
      • Đây là lĩnh vực đang phát triển nhanh, với Google Gemini Nano và dòng Microsoft Phi-3 là ví dụ
  • Synthetic data for testing and training models

    • Bao gồm việc tạo dữ liệu nhân tạo có thể mô phỏng các kịch bản thực tế mà không phụ thuộc vào nguồn dữ liệu nhạy cảm hoặc bị hạn chế truy cập
    • Dữ liệu tổng hợp cho các tập dữ liệu có cấu trúc đã được nghiên cứu rộng rãi
    • Việc tái sử dụng dữ liệu tổng hợp cho dữ liệu phi cấu trúc đang gia tăng
    • Đặc biệt ở các doanh nghiệp đối mặt với tình trạng thiếu dữ liệu theo miền có gắn nhãn để huấn luyện hoặc fine-tuning LLM
    • Các công cụ như Bonito và Microsoft AgentInstruct có thể tạo dữ liệu điều chỉnh chỉ dẫn tổng hợp từ các nguồn thô như tài liệu văn bản và tệp mã nguồn
    • Giúp tăng tốc huấn luyện mô hình đồng thời giảm chi phí và sự phụ thuộc vào việc tuyển chọn dữ liệu thủ công
    • Tạo dữ liệu tổng hợp để giải quyết vấn đề dữ liệu mất cân bằng hoặc thưa thớt cũng là một trường hợp sử dụng quan trọng
      • Thường gặp trong các tác vụ như phát hiện gian lận hoặc phân khúc khách hàng
    • Các kỹ thuật như SMOTE cân bằng tập dữ liệu bằng cách tạo nhân tạo các mẫu của lớp thiểu số
    • Trong các ngành như tài chính, GAN được dùng để mô phỏng các giao dịch hiếm, giúp mô hình vững hơn trong việc phát hiện các trường hợp biên và cải thiện hiệu năng tổng thể
  • Using GenAI to understand legacy codebases

    • AI tạo sinh (GenAI) và mô hình ngôn ngữ lớn (LLM) giúp lập trình viên viết và hiểu mã
    • Đặc biệt hữu ích với các codebase legacy có tài liệu kém, lỗi thời hoặc gây hiểu nhầm
    • Các kỹ thuật và sản phẩm dùng GenAI để hiểu codebase legacy đang tiếp tục phát triển
    • Đã được sử dụng thành công, đặc biệt để hỗ trợ các tác vụ reverse engineering cho hiện đại hóa mainframe
    • Cách tiếp cận retrieval-augmented generation (RAG), trong đó việc truy xuất thông tin được thực hiện trên knowledge graph của codebase, tỏ ra đầy hứa hẹn
    • Knowledge graph có thể lưu giữ thông tin cấu trúc về codebase vượt ngoài những gì LLM có thể suy ra từ mã nguồn dạng văn bản
    • Đặc biệt hữu ích với các codebase legacy thiếu tính tự mô tả và độ gắn kết
    • Ngoài ra còn có cơ hội làm giàu thêm đồ thị bằng tài liệu hiện có và tài liệu do AI tạo ra, các phụ thuộc bên ngoài, kiến thức miền nghiệp vụ và những yếu tố khác có thể hỗ trợ công việc của AI

Assess

  • AI team assistants

    • Các công cụ hỗ trợ lập trình bằng AI chủ yếu được bàn đến trong bối cảnh hỗ trợ và nâng cao công việc của từng cá nhân đóng góp
    • Tuy nhiên, phát triển phần mềm vốn là công việc theo nhóm và sẽ tiếp tục như vậy, nên cần tìm cách tạo ra các trợ lý AI cho nhóm nhằm giúp hình thành đội ngũ mạnh gấp 10 lần thay vì kỹ sư gấp 10 lần
    • Những phát triển gần đây của thị trường công cụ đã đưa điều này tiến gần hơn một bước tới thực tế
      • Unblocked là nền tảng hợp nhất mọi nguồn tri thức của nhóm và tích hợp chúng một cách thông minh vào các công cụ của thành viên trong nhóm
      • Atlassian Rovo mang AI vào nền tảng cộng tác nhóm phổ biến, cung cấp kiểu tìm kiếm và truy cập tài liệu mới
    • Chúng tôi cũng trực tiếp khám phá tiềm năng của AI trong việc khuếch đại tri thức và hỗ trợ thực hành làm việc nhóm
      • Nhóm Haiven đã phát hành trợ lý nhóm dưới dạng mã nguồn mở và bắt đầu học hỏi từ việc hỗ trợ bằng AI cho các tác vụ không phải lập trình như phân tích yêu cầu
  • Dynamic few-shot prompting

    • Dựa trên few-shot prompting để đưa động các ví dụ cụ thể vào prompt nhằm định hướng phản hồi của mô hình
    • Bằng cách điều chỉnh số lượng và mức độ liên quan của các ví dụ này, có thể tối ưu độ dài ngữ cảnh và tính liên quan, qua đó cải thiện hiệu suất và hiệu năng của mô hình
    • Các thư viện như scikit-llm triển khai kỹ thuật này bằng cách dùng tìm kiếm láng giềng gần nhất để lấy ra các ví dụ phù hợp nhất với truy vấn của người dùng
    • Giúp tận dụng tốt hơn cửa sổ ngữ cảnh hạn chế của mô hình và giảm mức tiêu thụ token
    • Trình tạo SQL mã nguồn mở vanna sử dụng dynamic few-shot prompting để cải thiện độ chính xác của phản hồi
  • GraphQL for data products

    • Kỹ thuật sử dụng GraphQL làm output port cho các data product để client tiêu thụ sản phẩm
    • Sử dụng GraphQL để tạo một lớp API hợp nhất, trừu tượng hóa độ phức tạp của dữ liệu nền và cung cấp cho client một giao diện nhất quán, dễ quản lý hơn
    • Khi dùng GraphQL cho data product, bên tiêu thụ có thể dễ dàng khám phá định dạng dữ liệu và các mối quan hệ qua GraphQL schema, đồng thời sử dụng các công cụ client quen thuộc
    • Nhóm của chúng tôi đang khám phá kỹ thuật này trong một trường hợp sử dụng cụ thể nhằm tìm hiểu và khám phá insight từ dữ liệu lớn với sự hỗ trợ của LLM
      • LLM xây dựng truy vấn GraphQL dựa trên prompt của người dùng và GraphQL schema dùng để tham chiếu
  • LLM-powered autonomous agents

    • Với sự xuất hiện của các framework như Autogen và CrewAI, lĩnh vực này đang phát triển vượt ra ngoài các hệ thống một tác nhân và đa tác nhân tĩnh
    • Đây là kỹ thuật phân rã các hoạt động phức tạp thành nhiều tác vụ nhỏ hơn và giao cho mỗi tác nhân một vai trò cụ thể để thực hiện
    • Lập trình viên có thể dùng các công cụ được cấu hình sẵn để thực hiện tác vụ, còn các tác nhân có thể trò chuyện với nhau và điều phối luồng công việc
    • Vẫn đang ở giai đoạn phát triển ban đầu, và nhóm của chúng tôi đã gặp các vấn đề như tác nhân rơi vào vòng lặp liên tiếp hoặc có hành vi mất kiểm soát
    • Các thư viện như LangGraph cung cấp khả năng kiểm soát tốt hơn đối với tương tác giữa các tác nhân nhờ tính năng định nghĩa luồng dưới dạng đồ thị
    • Khi sử dụng kỹ thuật này, chúng tôi khuyến nghị triển khai các cơ chế an toàn khi lỗi xảy ra, bao gồm timeout và giám sát của con người
  • Observability 2.0

    • Sự chuyển dịch từ các công cụ giám sát truyền thống, rời rạc sang cách tiếp cận hợp nhất tận dụng dữ liệu sự kiện có cấu trúc, độ phân biệt cao trong một kho dữ liệu duy nhất
    • Thu thập các sự kiện phong phú, thô cùng siêu dữ liệu chi tiết để cung cấp một nguồn sự thật duy nhất cho việc phân tích toàn diện
    • Lưu trữ sự kiện ở dạng thô để đơn giản hóa việc tương quan, hỗ trợ phân tích thời gian thực và điều tra hậu kiểm, đồng thời cho phép hiểu sâu hơn về các hệ thống phức tạp, phân tán
    • Cung cấp khả năng giám sát độ phân giải cao và điều tra động
    • Ưu tiên thu thập dữ liệu có độ phân biệt cao và đa chiều để kiểm tra chi tiết mà không gây ra nút thắt hiệu năng
    • Kho dữ liệu hợp nhất giúp giảm độ phức tạp, cung cấp cái nhìn nhất quán về hành vi hệ thống và gắn chặt hơn cách thực hành observability với vòng đời phát triển phần mềm
  • On-device LLM inference

    • Giờ đây có thể chạy mô hình ngôn ngữ lớn (LLM) trên trình duyệt web và các thiết bị biên như smartphone, laptop
    • Có thể xử lý an toàn dữ liệu nhạy cảm mà không cần truyền lên đám mây, cung cấp độ trễ rất thấp cho các tác vụ như edge computing và xử lý hình ảnh/video thời gian thực, giảm chi phí nhờ thực hiện tính toán cục bộ, và vẫn cung cấp chức năng ngay cả khi kết nối Internet không ổn định hoặc không khả dụng
    • Đây là lĩnh vực nghiên cứu và phát triển sôi động; trước đó đã nhấn mạnh MLX, framework mã nguồn mở cho machine learning hiệu quả trên Apple silicon
    • Các công cụ mới như Transformers.js và Chatty đang xuất hiện
      • Transformers.js cho phép chạy transformer trong trình duyệt bằng ONNX Runtime (hỗ trợ các mô hình được chuyển đổi từ PyTorch, TensorFlow, JAX)
      • Chatty tận dụng WebGPU để chạy LLM trực tiếp và riêng tư trong trình duyệt, mang lại trải nghiệm AI giàu tính năng
  • Structured output từ LLM

    • Chỉ thực hành giới hạn phản hồi của mô hình ngôn ngữ vào một schema đã được định nghĩa
    • Có thể đạt được bằng cách hướng dẫn mô hình tổng quát phản hồi theo một định dạng cụ thể hoặc fine-tune mô hình cho đầu ra “mặc định” như JSON
    • OpenAI hiện đã hỗ trợ structured output, cho phép nhà phát triển cung cấp JSON schema, pydantic hoặc đối tượng Zod để giới hạn phản hồi của mô hình
    • Đặc biệt hữu ích khi độ chính xác và việc tuân thủ định dạng là quan trọng, chẳng hạn trong function calling, tương tác API và tích hợp bên ngoài
    • Không chỉ cải thiện cách giao tiếp với code mà còn hỗ trợ nhiều trường hợp sử dụng rộng hơn như tạo markup để render biểu đồ
    • Cũng giúp giảm khả năng hallucination trong đầu ra của mô hình

Hold

  • Tự mãn với mã do AI tạo ra

    • Các trợ lý lập trình AI như GitHub Copilot và Tabnine đang rất phổ biến
    • Theo khảo sát nhà phát triển năm 2024 của StackOverflow, “72% tổng số người tham gia khảo sát có thiện cảm hoặc rất thiện cảm với các công cụ AI cho phát triển phần mềm”
    • Chúng tôi cũng ghi nhận những lợi ích đó, nhưng vẫn cảnh giác với tác động trung và dài hạn tới chất lượng mã, đồng thời nhắc các nhà phát triển cẩn trọng với sự tự mãn đối với mã do AI tạo ra
    • Sau vài trải nghiệm tích cực, rất dễ buông lỏng cảnh giác khi rà soát các gợi ý từ AI
    • Nghiên cứu của GitClear cho thấy xu hướng codebase tăng trưởng nhanh hơn, và họ nghi ngờ điều này trùng khớp với các pull request lớn hơn
    • Nghiên cứu này của GitHub cũng đặt câu hỏi liệu mức tăng 15% về tỷ lệ merge pull request được nhắc đến có thực sự là điều tốt hay chỉ là việc mọi người tin tưởng quá mức vào kết quả từ AI nên merge các pull request lớn hơn nhanh hơn
    • Chúng tôi vẫn đang dùng lời khuyên “bắt đầu” cơ bản đã đưa ra cách đây một năm, và cần lưu ý đến automation bias, ngụy biện chi phí chìm, fixation và review fatigue
    • Đồng thời, nên xây dựng một khung tư duy tốt về những nơi và thời điểm lập trình viên nên dùng AI và không nên tin tưởng nó
  • Môi trường kiểm thử tích hợp trên toàn doanh nghiệp

    • Đây là một thực hành phổ biến nhưng lãng phí, khiến mọi thứ chậm lại
    • Chúng thường trở thành tài nguyên quý hiếm, khó sao chép và gây nút thắt trong phát triển
    • Chúng tạo ra cảm giác an toàn giả tạo do sự khác biệt dữ liệu không thể tránh khỏi giữa các môi trường và overhead cấu hình
    • Lý do phản đối phổ biến với các lựa chọn thay thế (môi trường tạm thời hoặc nhiều môi trường kiểm thử on-premises) trớ trêu thay lại là chi phí
    • Tuy nhiên, điều đó không tính đến chi phí do độ trễ mà môi trường kiểm thử tích hợp toàn doanh nghiệp gây ra
      • Điều này xảy ra khi các nhóm phát triển phải chờ nhóm khác hoàn thành hoặc chờ phiên bản mới của hệ thống phụ thuộc được triển khai
    • Thay vào đó, các nhóm nên dùng môi trường tạm thời và sử dụng fake stub thay cho bản sao thực để khởi tạo và hủy các bộ kiểm thử do nhóm phát triển sở hữu với chi phí thấp
    • Các kỹ thuật khác hỗ trợ lựa chọn thay thế này bao gồm contract testing, tách biệt deployment và release, tập trung vào mean time to recovery và production testing
  • Cấm LLM

    • Thay vì ban hành lệnh cấm LLM toàn diện tại nơi làm việc, hãy tập trung vào việc cung cấp quyền truy cập vào một bộ công cụ AI đã được phê duyệt
    • Các lệnh cấm chỉ khiến nhân viên tìm đến những cách lách không được phê duyệt và có khả năng không an toàn
    • Tương tự thời kỳ đầu của máy tính cá nhân, con người sẽ hoàn thành công việc bằng những công cụ họ cảm thấy hiệu quả, bất kể rào cản là gì
    • Nếu không cung cấp các lựa chọn thay thế an toàn và đáng tin cậy, doanh nghiệp sẽ đối mặt với rủi ro nhân viên dùng các LLM không được phê duyệt, kéo theo nguy cơ về sở hữu trí tuệ, rò rỉ dữ liệu và trách nhiệm pháp lý
    • Ngược lại, cung cấp các LLM hoặc công cụ AI an toàn và được doanh nghiệp phê duyệt sẽ đảm bảo cả an toàn lẫn năng suất
    • Với cách tiếp cận được quản trị tốt, tổ chức có thể trao cho nhân viên năng lực mà LLM mang lại đồng thời kiểm soát các vấn đề về quyền riêng tư dữ liệu, bảo mật, tuân thủ và chi phí
    • Trong trường hợp tốt nhất, quyền truy cập vào công cụ AI được quản lý tốt còn có thể thúc đẩy nhanh quá trình học hỏi của tổ chức về cách tốt nhất để sử dụng AI tại nơi làm việc
  • Thay pair programming bằng AI

    • Khi nói về các trợ lý lập trình, chủ đề pair programming gần như chắc chắn sẽ xuất hiện
    • Nghề của chúng ta có mối quan hệ yêu-ghét với pair programming
      • Có người tuyệt đối tin vào nó, có người lại không thể chịu nổi
    • Giờ đây, các trợ lý lập trình đặt ra câu hỏi liệu con người có thể ghép cặp với AI thay vì với người khác mà vẫn đạt được kết quả tương tự cho cả đội hay không
    • GitHub Copilot thậm chí còn tự gọi mình là “AI pair programmer của bạn”
    • Chúng tôi cho rằng trợ lý lập trình có thể mang lại một phần lợi ích của pair programming, nhưng không khuyến nghị thay thế hoàn toàn pair programming bằng AI
    • Nếu xem trợ lý lập trình như pair programmer, bạn sẽ bỏ qua một trong những lợi ích chính của việc pairing: giúp cả nhóm tiến bộ hơn chứ không chỉ từng cá nhân đóng góp
    • Trợ lý lập trình có thể giúp gỡ điểm nghẽn, học công nghệ mới, onboarding hoặc thực hiện các công việc mang tính chiến thuật nhanh hơn để tập trung vào thiết kế chiến lược
    • Tuy nhiên, chúng không giúp ích cho các lợi ích cộng tác của nhóm như giữ lượng công việc đang làm ở mức thấp, giảm handoff và học lại, cho phép continuous integration và cải thiện quyền sở hữu mã tập thể

[Platforms]

Adopt : Không có

Trial

  • Databricks Unity Catalog

    • Là giải pháp data governance cho các tài sản như file, bảng và mô hình ML trong lakehouse
    • Là giải pháp managed mã nguồn mở có thể dùng để quản lý và truy vấn dữ liệu trong external storage hoặc dữ liệu do Databricks quản lý
    • Ưu điểm là hỗ trợ tích hợp governance, quản lý metastore và khám phá dữ liệu, giúp giảm nhu cầu phải quản lý nhiều công cụ
    • Thiếu cơ chế disaster recovery tự động trong Unity Catalog bản managed của Databricks được xác nhận là một nhược điểm
      • Nhóm đã phải tự cấu hình tính năng backup và recovery
    • Dù là giải pháp tập trung, nó vẫn cho phép ủy quyền để từng nhóm tự quản lý tài sản của mình
  • FastChat

    • Là nền tảng mở để huấn luyện, serving và đánh giá large language model
    • Có thể host nhất quán nhiều mô hình (Llama 3.1, Mistral 7B, Llama-SQL, v.v.) theo định dạng OpenAI API
    • Sử dụng kiến trúc controller-worker để host nhiều mô hình khác nhau trên nhiều worker
    • Hỗ trợ nhiều loại worker khác nhau như vLLM, LiteLLM và MLX
    • Có thể tạo và mở rộng các loại model worker FastChat khác nhau tùy theo use case
      • Gợi ý code trong IDE cho nhà phát triển cần độ trễ thấp nên được mở rộng ra nhiều worker
      • Text-to-SQL có nhu cầu thấp nên không cần nhiều worker
    • Có thể dùng cho A/B testing
      • Thiết lập các giá trị hyperparameter khác nhau cho cùng một mô hình để xác định giá trị tối ưu
      • Có thể xác minh việc migration không gián đoạn khi chuyển mô hình trong dịch vụ đang chạy
  • GCP Vertex AI Agent Builder

    • Là nền tảng linh hoạt cho phép tạo AI agent bằng cách tiếp cận natural language hoặc code-first
    • Tích hợp liền mạch với dữ liệu doanh nghiệp thông qua third-party connector
    • Cung cấp đầy đủ công cụ cần thiết để xây dựng, tạo prototype và triển khai AI agent
    • Cho phép nhà phát triển nhanh chóng tạo prototype cho agent với thiết lập tối thiểu và xử lý các tác vụ dữ liệu phức tạp
    • Hữu ích để xây dựng knowledge base hoặc hệ thống hỗ trợ tự động quản lý hiệu quả dữ liệu có cấu trúc và phi cấu trúc
  • Langfuse

    • Là công cụ cho quan sát, giám sát và đánh giá các ứng dụng dựa trên LLM
    • Thông qua các tính năng tracing, phân tích và đánh giá, có thể phân tích hiệu năng và độ chính xác của completion
    • Có thể cải tiến dựa trên dữ liệu bằng cách quản lý chi phí và độ trễ, đồng thời hiểu được các mẫu sử dụng trong production
    • Tận dụng dữ liệu instrumentation cung cấp khả năng truy vết đầy đủ luồng request-response và các bước trung gian
    • Có thể dùng cùng với RAG và các autonomous agent dựa trên LLM
    • Có thể phân tích dấu vết của các cuộc hội thoại có điểm thấp để xác định phần nào của kiến trúc cần được cải thiện
  • Qdrant

    • Là cơ sở dữ liệu và công cụ tìm kiếm độ tương đồng vector mã nguồn mở viết bằng Rust
    • Hỗ trợ nhiều mô hình embedding vector dày đặc cho văn bản và đa phương thức
    • Có thể tận dụng các embedding mã nguồn mở như MiniLM-v6 và BGE cho nhiều knowledge base sản phẩm
    • Được dùng như vector store doanh nghiệp hỗ trợ multi-tenancy
    • Lưu vector embedding thành các collection riêng biệt để cô lập knowledge base của từng sản phẩm
    • Chính sách truy cập người dùng được quản lý ở lớp ứng dụng
  • Vespa

    • Là công cụ tìm kiếm mã nguồn mở và nền tảng xử lý dữ liệu lớn
    • Phù hợp với các ứng dụng cần độ trễ thấp và thông lượng cao
    • Có thể triển khai tìm kiếm lai bằng nhiều kỹ thuật tìm kiếm khác nhau
    • Hỗ trợ lọc và sắp xếp hiệu quả nhiều loại metadata
    • Có thể triển khai xếp hạng nhiều tầng
    • Có thể lập chỉ mục nhiều vector cho mỗi tài liệu mà không bị trùng lặp
    • Có thể truy xuất dữ liệu từ nhiều trường đã được lập chỉ mục cùng lúc

Assess

  • Azure AI Search

    • Là dịch vụ tìm kiếm trên nền tảng đám mây để xử lý dữ liệu có cấu trúc/phi cấu trúc cho các ứng dụng như knowledge base
    • Hỗ trợ nhiều kiểu tìm kiếm như từ khóa, vector và tìm kiếm lai
    • Có thể tự động thu thập các định dạng dữ liệu phi cấu trúc phổ biến như PDF, DOC, PPT để tạo nội dung có thể tìm kiếm
    • Tích hợp với các dịch vụ Azure khác như Azure OpenAI, cho phép xây dựng ứng dụng với mức tích hợp thủ công tối thiểu
    • Phù hợp với các dự án được lưu trữ trong môi trường Azure và cho thấy hiệu năng ổn định
    • Có thể định nghĩa các bước xử lý dữ liệu cụ thể thông qua custom skill
  • Databricks Delta Live Tables

    • Là framework khai báo để xây dựng các pipeline xử lý dữ liệu đáng tin cậy, dễ bảo trì và có thể kiểm thử
    • Định nghĩa việc biến đổi dữ liệu theo cách tiếp cận khai báo và tự động quản lý hạ tầng nền tảng cũng như luồng dữ liệu
    • Cung cấp khả năng giám sát mạnh mẽ và biểu diễn trực quan DAG của toàn bộ pipeline dữ liệu
    • Hữu ích cho việc theo dõi data lineage và phụ thuộc
    • Được tích hợp sâu với hệ sinh thái Databricks nên có thể có hạn chế trong việc tùy biến giao diện
  • Elastisys Compliant Kubernetes

    • Là bản phân phối Kubernetes chuyên biệt cho các ngành bị quản lý chặt chẽ như y tế, tài chính và chính phủ
    • Cung cấp các quy trình bảo mật tự động hóa
    • Hỗ trợ đa đám mây và on-premise
    • Được xây dựng trên kiến trúc bảo mật zero trust
    • Tích hợp sẵn khả năng tuân thủ các quy định như GDPR, HIPAA và các kiểm soát như ISO27001
  • FoundationDB

    • Là cơ sở dữ liệu đa mô hình được Apple mua lại vào năm 2015 và mã nguồn mở hóa vào năm 2018
    • Cốt lõi là kho khóa-giá trị phân tán cung cấp các giao dịch tuần tự hóa nghiêm ngặt
    • Đã có những cải tiến lớn như phân phối dữ liệu thông minh để tránh write hotspot và các storage engine mới
    • Kiến trúc unbundled cho phép mở rộng độc lập các phần khác nhau của cụm
    • Dù có nhiều tính năng, việc vận hành các cụm quy mô lớn vẫn tương đối dễ dàng
  • Golem

    • Là nền tảng điện toán phân tán sử dụng kiến trúc state machine tường minh cho điện toán bền bỉ
    • Phù hợp với workflow của saga microservice chạy dài hạn hoặc orchestration AI agent
    • Có thể viết WebAssembly component bằng bất kỳ ngôn ngữ nào được hỗ trợ
    • Có tính xác định và hỗ trợ thời gian khởi động nhanh
  • Iggy

    • Là nền tảng streaming thông điệp bền vững được viết bằng Rust
    • Hỗ trợ nhiều stream, topic và partition
    • Cung cấp tính năng at-most-once delivery, hết hạn thông điệp, hỗ trợ TLS cho các giao thức QUIC/TCP/HTTP, v.v.
    • Đạt thông lượng đọc/ghi cao chỉ với một máy chủ
    • Clustering và hỗ trợ io_uring đang được lên kế hoạch, nên có thể trở thành lựa chọn thay thế cho Kafka
  • Iroh

    • Là hệ thống lưu trữ tệp phân tán và phân phối nội dung phát triển từ IPFS
    • Không có giới hạn kích thước khối tối đa và cung cấp cơ chế đồng bộ dữ liệu thông qua range-based set reconciliation
    • Hỗ trợ trình duyệt qua WASM nằm trong roadmap
    • Có thể sử dụng dịch vụ đám mây qua iroh.network
    • Cung cấp SDK cho nhiều ngôn ngữ và thân thiện với người dùng hơn IPFS
  • Large vision model (LVM) platforms

    • Là các nền tảng mô hình thị giác quy mô lớn có thể phân đoạn, tổng hợp, tái cấu trúc và phân tích luồng video cùng hình ảnh
    • Có thể được sử dụng kết hợp với diffusion model hoặc CNN tiêu chuẩn
    • Vẫn tồn tại các thách thức liên quan đến việc áp dụng trong môi trường production
      • như thu thập dữ liệu huấn luyện, phân đoạn và gắn nhãn đối tượng, tinh chỉnh mô hình, v.v.
    • Các công cụ như V7, Nvidia Deepstream SDK và Roboflow đã xuất hiện để giải quyết những thách thức này
    • Deepstream và Roboflow tích hợp cả GUI và API để quản lý luồng video
  • OpenBCI Galea

    • Là nền tảng công nghệ không xâm lấn cho giao diện não-máy tính (BCI)
    • Sử dụng các tín hiệu điện sinh lý như EEG để cung cấp giải pháp thay thế ít rủi ro hơn so với cấy ghép não
    • Là sản phẩm mới nhất của OpenBCI kết hợp chức năng kính thực tế ảo với BCI
    • Cung cấp các luồng dữ liệu sinh lý được đồng bộ theo thời gian cùng cảm biến vị trí không gian và theo dõi ánh nhìn
    • Có thể sử dụng dữ liệu cảm biến trong Unity hoặc Unreal
    • Được cung cấp dưới dạng nền tảng mã nguồn mở để hỗ trợ đổi mới của các nhà nghiên cứu
  • PGLite

    • Là bản dựng WASM của cơ sở dữ liệu PostgreSQL
    • Có thể chạy trực tiếp trong trình duyệt web mà không cần máy ảo Linux
    • Cung cấp cơ sở dữ liệu tạm thời trong bộ nhớ hoặc khả năng lưu trữ bền vững trên đĩa thông qua indexedDB
    • Có thể xây dựng các ứng dụng local-first phản ứng dựa trên PostgreSQL cùng với Electric
  • SpinKube

    • Là runtime serverless mã nguồn mở cho WebAssembly trên Kubernetes
    • Cung cấp giải pháp serverless linh hoạt và năng động hơn cho các workload theo yêu cầu nhờ thời gian khởi động tính bằng mili giây của WebAssembly
    • Đơn giản hóa việc phát triển và triển khai các workload dựa trên WebAssembly
  • Unblocked

    • Là công cụ tìm kiếm tài sản và artifact SDLC
    • Tích hợp với các công cụ ALM và cộng tác để giúp hiểu codebase và các tài nguyên liên quan
    • Cung cấp ngữ cảnh tức thời và có liên quan về mã, giúp dễ dàng điều hướng và hiểu các hệ thống phức tạp
    • Cho phép các nhóm kỹ thuật truy cập an toàn vào các cuộc thảo luận, tài sản và tài liệu liên quan đến công việc
    • Ghi lại và chia sẻ kiến thức của các thành viên giàu kinh nghiệm để mọi thành viên đều có thể tận dụng

Hold : Không có

[Tools]

Adopt

  • Bruno

    • Bruno là lựa chọn thay thế desktop mã nguồn mở cho Postman và Insomnia, dùng cho kiểm thử, phát triển và gỡ lỗi API
    • Hướng tới việc cung cấp khả năng cộng tác, quyền riêng tư và bảo mật vượt trội với thiết kế đơn giản, chỉ hoạt động ngoại tuyến
    • Collection được viết bằng Bru Lang, một ngôn ngữ markup thuần văn bản tùy chỉnh, được lưu trực tiếp trên hệ thống tệp và có thể chia sẻ qua Git hoặc công cụ quản lý phiên bản mà người dùng lựa chọn để cộng tác
    • Có thể sử dụng dưới dạng ứng dụng desktop và công cụ CLI, cung cấp extension VS Code chính thức và đang lên kế hoạch hỗ trợ thêm các IDE khác
    • Đã trở thành lựa chọn mặc định của nhiều nhóm Thoughtworks, nhưng cần thận trọng vì đã có báo cáo về các request thất bại ngoài dự kiến khi làm việc trong môi trường VPN và proxy
  • K9s

    • K9s đã cải thiện khả năng trực quan hóa bằng cách tích hợp các biểu đồ và chế độ xem chi tiết hơn
    • Giờ đây công cụ thể hiện log và metric tốt hơn, đồng thời hiển thị tài nguyên tùy chỉnh (CRD) linh hoạt hơn
    • Các thao tác với pod đã được mở rộng, tích hợp với công cụ gỡ lỗi (ví dụ: kubectl debug) được tăng cường và hỗ trợ cho môi trường đa cụm cũng được cải thiện
    • Hỗ trợ cho CRD đã được cải thiện đáng kể, giờ đây có thể duyệt và quản lý tốt hơn các tài nguyên này, đồng thời việc tương tác với custom resource cũng trở nên mượt mà hơn
    • Bảng phím tắt cũng được cải thiện, giúp các nhà phát triển chưa quen với kubectl dễ tiếp cận hơn
    • Đây là một cải tiến quan trọng vì K9s ban đầu chủ yếu tập trung vào các nhóm DevOps
  • SOPS

    • SOPS là trình chỉnh sửa tệp được mã hóa, hỗ trợ nhiều định dạng tệp khác nhau được mã hóa bằng KMS
    • Trong quản lý bí mật, lời khuyên của chúng tôi luôn là tách chúng khỏi mã nguồn
    • Tuy nhiên, theo tinh thần của hạ tầng như mã, khi phải lựa chọn giữa tự động hóa hoàn toàn và một số bước thủ công để quản lý, khởi tạo và luân chuyển seed secret — như sử dụng các công cụ kiểu vault — các nhóm thường phải đối mặt với sự đánh đổi
    • Ví dụ, nhóm của chúng tôi sử dụng SOPS để quản lý thông tin xác thực seed cho quá trình bootstrap hạ tầng
    • Tuy nhiên, trong một số tình huống, không thể loại bỏ bí mật khỏi kho mã legacy
    • Trong những trường hợp đó, chúng tôi dùng SOPS để mã hóa bí mật trong các tệp văn bản
    • SOPS tích hợp với các kho khóa do đám mây quản lý như AWS và GCP Key Management Service (KMS) hoặc Azure Key Vault làm nguồn khóa mã hóa
    • Ngoài ra, nó hoạt động đa nền tảng và hỗ trợ khóa PGP
    • Khi cần quản lý bí mật trong kho mã, nhiều nhóm của chúng tôi mặc định sử dụng SOPS
  • Visual regression testing tools

    • Trước đây chúng tôi đã nhấn mạnh các công cụ kiểm thử hồi quy trực quan và quan sát thấy các thuật toán đã tiến hóa từ so sánh ở mức pixel thô sang đối sánh mẫu tinh vi và nhận dạng ký tự quang học (OCR)
    • Các công cụ kiểm thử hồi quy trực quan ban đầu tạo ra rất nhiều dương tính giả và chỉ hữu ích ở giai đoạn muộn của quá trình phát triển, khi giao diện đã ổn định
    • BackstopJS tránh được vấn đề này bằng cách cấu hình selector và viewport để thực hiện kiểm thử trực quan chính xác trên các phần tử cụ thể của trang
    • Tuy nhiên, machine learning đã giúp việc phát hiện và so sánh các phần tử trực quan chính xác hơn trở nên dễ dàng hơn, ngay cả khi các phần tử đó bị di chuyển hoặc chứa nội dung động
    • Những công cụ này ngày càng hữu ích hơn và đang ở vị thế tốt để tận dụng các phát triển mới nhất trong AI và machine learning
    • Một số công cụ thương mại như Applitools và Percy hiện tuyên bố sử dụng AI trong kiểm thử hồi quy trực quan
    • Một trong các nhóm của chúng tôi đã sử dụng rộng rãi Applitools Eyes và hài lòng với kết quả
    • Kiểm thử hồi quy trực quan không thể thay thế các bài kiểm thử chức năng end-to-end được viết tốt, nhưng là một phần bổ sung có giá trị cho bộ công cụ kiểm thử
    • Chúng tôi đang áp dụng chúng vì chúng đã trở thành lựa chọn mặc định an toàn như một thành phần trong chiến lược kiểm thử UI toàn diện
  • Wiz

    • Wiz đã trở thành nền tảng bảo mật đám mây được lựa chọn trong nhiều dự án
    • Các nhóm của chúng tôi đánh giá cao việc nó liên tục kiểm tra thay đổi, giúp phát hiện rủi ro và mối đe dọa nhanh hơn các công cụ tương tự
    • Wiz có thể phát hiện và cảnh báo về cấu hình sai, lỗ hổng và bí mật bị rò rỉ cả trong các artifact chưa được triển khai lên môi trường chạy thực tế (container image, hạ tầng như mã) lẫn trong các workload đang chạy thực tế (container, VM và dịch vụ đám mây)
    • Chúng tôi cũng đánh giá cao khả năng báo cáo mạnh mẽ cho cả đội ngũ phát triển lẫn lãnh đạo
    • Phân tích này giúp hiểu một lỗ hổng có thể ảnh hưởng đến một dịch vụ cụ thể như thế nào để có thể xử lý vấn đề trong bối cảnh đó

Trial

  • AWS Control Tower

    • AWS Control Tower vẫn là lựa chọn hàng đầu để quản lý tài khoản AWS trong môi trường nhiều nhóm
    • Nó cung cấp một cơ chế thuận tiện để cấu hình trước các biện pháp kiểm soát bảo mật và tuân thủ sẽ tự động được áp dụng cho các landing zone mới
    • Đây là một ví dụ của "tuân thủ tại thời điểm thay đổi", trong đó các biện pháp kiểm soát được áp dụng và xác minh mỗi khi hạ tầng mới được tạo ra, nên không cần các bước kiểm tra tuân thủ thủ công về sau
    • AWS Control Tower Account Factory for Terraform (AFT) đã tiếp tục phát triển kể từ tập trước và hiện có thể sử dụng ở nhiều AWS Region hơn
    • Với AFT, có thể provisioning các tài khoản Control Tower bằng pipeline hạ tầng như mã
    • Chúng tôi thích việc AFT có thể được tùy biến để gửi webhook hoặc thực hiện các hành động cụ thể nhằm tích hợp an toàn với các công cụ bên ngoài như GitHub Actions
    • Các nhóm của chúng tôi đã đạt được thành công lớn khi dùng AWS Control Tower để quản lý tài khoản, nhưng hy vọng AWS sẽ chấp nhận các đóng góp từ cộng đồng cho dự án khi có cơ hội cải thiện
  • CCMenu

    • Với các nhóm thực hành tích hợp liên tục, việc nhận biết trạng thái của build trung tâm từ hệ thống continuous integration (CI) là rất quan trọng
    • Trước đại dịch, dashboard trên màn hình TV lớn trong phòng làm việc nhóm từng cung cấp thông tin này chỉ trong nháy mắt
    • Khi làm việc từ xa tiếp diễn, cần có một giải pháp hoạt động trên máy trạm của từng lập trình viên
    • Trên Mac, khoảng trống đó được lấp đầy bởi một ứng dụng nhỏ tên là CCMenu do một Thoughtworker viết
    • Ban đầu là một phần của CruiseControl, ứng dụng này hoạt động với mọi máy chủ có thể cung cấp thông tin theo định dạng cctray, bao gồm Jenkins và TeamCity
    • Gần đây nó đã được viết lại, bổ sung hỗ trợ cho GitHub Actions và mở đường cho việc tích hợp sâu hơn với nhiều máy chủ CI cũng như các kiểu xác thực khác
  • ClickHouse

    • ClickHouse là cơ sở dữ liệu OLAP mã nguồn mở dạng cột cho phân tích thời gian thực
    • Bắt đầu như một dự án thử nghiệm vào năm 2009, nó đã trưởng thành thành một cơ sở dữ liệu phân tích có hiệu năng cao và khả năng mở rộng tuyến tính
    • Nhờ engine xử lý truy vấn hiệu quả và khả năng nén dữ liệu, nó rất phù hợp để chạy các truy vấn tương tác mà không cần tổng hợp trước
    • ClickHouse là một lựa chọn tốt để lưu trữ dữ liệu OpenTelemetry
    • Tích hợp với Jaeger cho phép lưu trữ lượng lớn dữ liệu truy vết và phân tích chúng một cách hiệu quả
  • Devbox

    • Bất chấp sự phát triển của các công cụ phát triển, việc duy trì một môi trường phát triển cục bộ nhất quán vẫn là thách thức với nhiều nhóm
    • Việc onboarding kỹ sư mới thường đòi hỏi chạy các lệnh hoặc script tùy chỉnh có thể thất bại khó lường trên các hệ thống khác nhau, từ đó dẫn đến sự thiếu nhất quán
    • Để giải quyết vấn đề này, các nhóm của chúng tôi ngày càng phụ thuộc vào Devbox
    • Devbox là công cụ dòng lệnh cung cấp giao diện dễ tiếp cận để tạo môi trường phát triển cục bộ có thể tái tạo, theo từng dự án, bằng cách tận dụng trình quản lý gói Nix mà không dùng máy ảo hay container
    • Khi đã cấu hình một lần cho codebase, chỉ cần một lệnh CLI duy nhất (devbox shell) để tái tạo môi trường đã định nghĩa trên thiết bị mới, qua đó đơn giản hóa đáng kể quy trình onboarding
    • Devbox hỗ trợ shell hook, script tùy chỉnh và tạo devcontainer.json để tích hợp với VSCode
  • Difftastic

    • Difftastic là công cụ làm nổi bật sự khác biệt giữa các tệp mã theo cách nhận biết cú pháp
    • Điều này khá khác với các công cụ so sánh khác biệt văn bản như lệnh Unix diff
    • Ví dụ, Difftastic bỏ qua các dấu ngắt dòng được chèn vào để chia nhỏ các câu lệnh dài trong các ngôn ngữ phân tách bằng dấu chấm phẩy như Java hay TypeScript
    • Công cụ này chỉ làm nổi bật những thay đổi ảnh hưởng đến cú pháp của chương trình
    • Để làm điều đó, trước tiên nó phân tích các tệp thành cây cú pháp trừu tượng, sau đó dùng thuật toán Dijkstra để tính khoảng cách giữa các cây
    • Chúng tôi nhận thấy Difftastic đặc biệt hữu ích trong việc hiểu thay đổi khi rà soát các codebase lớn
    • Difftastic có thể được dùng cho mọi ngôn ngữ lập trình có parser khả dụng và mặc định hỗ trợ hơn 50 ngôn ngữ lập trình cũng như các định dạng văn bản có cấu trúc như CSS và HTML
    • Đây không phải là một công cụ mới, nhưng chúng tôi cho rằng nó đáng được chú ý trong kỷ nguyên các trợ lý lập trình LLM, khi việc rà soát có con người trong vòng lặp ngày càng trở nên quan trọng
  • LinearB

    • LinearB, một nền tảng software engineering intelligence, cung cấp các insight dựa trên dữ liệu để hỗ trợ các lãnh đạo kỹ thuật thúc đẩy cải tiến liên tục
    • Nền tảng này giúp đồng bộ các lĩnh vực trọng yếu như benchmarking, tự động hóa workflow và đầu tư có mục tiêu nhằm cải thiện trải nghiệm lập trình viên cũng như năng suất
    • Trải nghiệm khi sử dụng LinearB nhấn mạnh khả năng nuôi dưỡng văn hóa cải tiến và hiệu quả trong các nhóm kỹ thuật
    • Nhóm của chúng tôi đã sử dụng nền tảng này để theo dõi các chỉ số kỹ thuật cốt lõi, xác định những lĩnh vực cần cải thiện và triển khai các hành động dựa trên bằng chứng
    • Những khả năng này rất phù hợp với đề xuất giá trị cốt lõi của LinearB: benchmarking, tự động hóa việc thu thập metric và thúc đẩy cải tiến dựa trên dữ liệu
    • LinearB tích hợp với mã nguồn, vòng đời ứng dụng, CI/CD và các công cụ giao tiếp, đồng thời cung cấp insight định lượng toàn diện về trải nghiệm lập trình viên, năng suất và hiệu quả của nhóm bằng các metric kỹ thuật dựng sẵn và metric tùy chỉnh
    • Với tư cách là những người ủng hộ DORA, chúng tôi đánh giá cao việc LinearB nhấn mạnh các metric cụ thể này và nâng cao khả năng đo lường những khía cạnh chính của hiệu suất phân phối phần mềm vốn thiết yếu để cải thiện hiệu quả
    • Trong lịch sử, các nhóm đã gặp khó khăn khi thu thập các metric riêng của DORA và thường phải dựa vào dashboard tùy chỉnh phức tạp hoặc quy trình thủ công
    • LinearB tiếp tục cung cấp một giải pháp hấp dẫn bằng cách tự động hóa việc theo dõi các metric này và cung cấp dữ liệu thời gian thực để hỗ trợ ra quyết định chủ động về trải nghiệm lập trình viên, năng suất và khả năng dự đoán
  • pgvector

    • pgvector là một extension tìm kiếm độ tương đồng vector mã nguồn mở cho PostgreSQL, cho phép lưu trữ vector cùng với dữ liệu có cấu trúc trong một cơ sở dữ liệu đơn lẻ được thiết lập tốt
    • Dù thiếu một số tính năng nâng cao của các cơ sở dữ liệu vector chuyên dụng, nó vẫn được hưởng lợi từ khả năng tuân thủ ACID, khôi phục theo thời điểm và các tính năng mạnh mẽ khác của PostgreSQL
    • Cùng với sự gia tăng của các ứng dụng dựa trên AI tạo sinh, chúng tôi nhận thấy mô hình lưu trữ và truy xuất hiệu quả các vector embedding cho mục đích tương đồng đang gia tăng, và pgvector giải quyết điều này một cách hiệu quả
    • Xét đến việc pgvector ngày càng được sử dụng nhiều hơn trong môi trường production, đặc biệt ở các nhóm đã dùng nhà cung cấp cloud có hỗ trợ PostgreSQL được quản lý, cùng với năng lực đã được chứng minh trong việc đáp ứng các nhu cầu tìm kiếm vector thông thường mà không cần một kho vector riêng biệt, chúng tôi tin tưởng vào tiềm năng của pgvector
    • Nhóm của chúng tôi đã sử dụng nó hiệu quả trong các dự án so sánh dữ liệu có cấu trúc và phi cấu trúc, qua đó cho thấy khả năng được áp dụng rộng hơn
    • Vì vậy, chúng tôi đang chuyển pgvector sang giai đoạn thử nghiệm
  • Snapcraft build tool

    • Snapcraft là một công cụ dòng lệnh mã nguồn mở để build và đóng gói các ứng dụng tự chứa gọi là snap trên Ubuntu, các bản phân phối Linux khác và macOS
    • Snap có thể được triển khai và bảo trì dễ dàng trên nhiều nền tảng phần cứng, bao gồm máy tính Linux, môi trường ảo và hệ thống máy tính gắn trên xe
    • Snapcraft cung cấp một app store công khai để phát hành snap, nhưng nhóm của chúng tôi dùng công cụ build này để đóng gói các hệ thống tự hành thành snap mà không phát hành lên app store công khai
    • Điều này cho phép build, kiểm thử và debug các hệ thống phần mềm nhúng tại chỗ, đồng thời phát hành chúng lên kho artifact nội bộ
  • Spinnaker

    • Spinnaker là một nền tảng continuous delivery mã nguồn mở do Netflix tạo ra
    • Nó triển khai các tính năng hạng nhất cho quản lý cluster và triển khai các baked image lên cloud
    • Chúng tôi thích cách tiếp cận có tính định hướng rõ ràng của Spinnaker đối với việc triển khai microservice
    • Trước đây, chúng tôi từng chỉ ra rằng các phiên bản cũ không cho phép cấu hình pipeline dưới dạng code, nhưng vấn đề này đã được giải quyết nhờ bổ sung spin CLI
    • Chúng tôi không khuyến nghị Spinnaker cho các kịch bản CD đơn giản, nhưng trong các tình huống phức tạp, nó đã trở thành công cụ được nhiều người lựa chọn cùng với những pipeline triển khai phức tạp tương ứng
  • TypeScript OpenAPI

    • TypeScript OpenAPI (hoặc tsoa) là một lựa chọn thay thế cho Swagger để tạo đặc tả OpenAPI từ code
    • Công cụ này theo hướng code-first, sử dụng controller và model TypeScript làm nguồn chân lý duy nhất, và dùng annotation hoặc decorator của TypeScript thay vì cần các tệp và cấu hình phức tạp hơn khi dùng công cụ OpenAPI từ TypeScript
    • Nó tạo được cả đặc tả API 2.0 và 3.0, đồng thời có thể tạo route cho Express, Hapi và Koa
    • Nếu bạn đang viết API bằng TypeScript, đây là một dự án đáng để xem xét
  • Unleash

    • Dù cách tiếp cận mà chúng tôi khuyến nghị vẫn là sử dụng feature toggle đơn giản nhất có thể, việc mở rộng quy mô nhóm và phát triển nhanh hơn đã khiến việc quản lý toggle thủ công trở nên phức tạp hơn
    • Unleash là một lựa chọn được các nhóm của chúng tôi sử dụng rộng rãi để giải quyết sự phức tạp này và hỗ trợ CI/CD
    • Có thể dùng dưới dạng dịch vụ hoặc tự host
    • Nó cung cấp SDK cho nhiều ngôn ngữ và có UI thân thiện cho trải nghiệm lập trình viên và quản trị
    • Chưa có hỗ trợ chính thức cho đặc tả OpenFeature, nhưng có thể tìm thấy các provider do cộng đồng duy trì cho Go và Java
    • Unleash có thể được dùng không chỉ cho feature toggle đơn giản mà còn cho phân khúc và phát hành dần, khiến nó trở thành một lựa chọn phù hợp để quản lý tính năng ở quy mô lớn

Assess

  • Astronomer Cosmos

    • Astronomer Cosmos là một plugin Airflow được thiết kế để cung cấp hỗ trợ gốc nhiều hơn cho workflow dbt core trong Airflow
    • Sau khi plugin được cài đặt, DbtDag sẽ chuyển các node dbt thành các task/task group của Airflow khi bọc workflow dbt, cho phép kỹ sư trực quan hóa trực tiếp đồ thị phụ thuộc dbt và tiến độ thực thi trong UI của Airflow
    • Nó cũng cho phép sử dụng kết nối Airflow thay cho hồ sơ dbt, từ đó giảm sự phân tán cấu hình
    • Chúng tôi đang thử nghiệm công cụ này vì tiềm năng giúp các tác vụ dbt trong Airflow trở nên liền mạch hơn
  • ColPali

    • ColPali là một công cụ mới để truy xuất tài liệu PDF bằng mô hình vision-language, giải quyết khó khăn trong việc xây dựng các ứng dụng retrieval-augmented generation (RAG) mạnh mẽ có thể trích xuất dữ liệu từ các tài liệu đa phương tiện chứa hình ảnh, sơ đồ và bảng biểu
    • Khác với các phương pháp hiện có vốn dựa vào embedding dựa trên văn bản hoặc công nghệ nhận dạng ký tự quang học (OCR), ColPali xử lý toàn bộ trang PDF và tận dụng visual transformer để tạo embedding có tính đến cả nội dung văn bản lẫn hình ảnh
    • Cách tiếp cận toàn diện này không chỉ mang lại khả năng truy xuất tốt hơn mà còn cho phép suy luận vì sao một tài liệu cụ thể được truy xuất, từ đó cải thiện đáng kể hiệu năng RAG cho các PDF giàu dữ liệu
    • Chúng tôi đã thử nghiệm ColPali với nhiều khách hàng và thấy kết quả đầy hứa hẹn, dù công nghệ này vẫn còn ở giai đoạn đầu
    • Đây là công nghệ đáng để đánh giá, đặc biệt với các tổ chức có dữ liệu tài liệu trực quan phức tạp
  • Cursor

    • Cuộc cạnh tranh trong lĩnh vực công cụ lập trình có hỗ trợ AI vẫn tiếp diễn, và nổi bật nhất là Cursor
    • Cursor là một trình biên tập mã theo hướng AI-first, được thiết kế để tích hợp AI sâu vào workflow lập trình nhằm nâng cao năng suất của lập trình viên
    • Chúng tôi đã chú ý đến Cursor trong lần đánh giá Radar trước, nhưng hiện đã rõ rằng những cải tiến liên tục gần đây của Cursor đã tạo ra một bước nhảy vọt về chất
    • Trong quá trình sử dụng, Cursor cho thấy khả năng suy luận ngữ cảnh mạnh mẽ dựa trên codebase hiện có
    • Trong khi các công cụ mã AI khác như GitHub Copilot có xu hướng tạo ra các đoạn mã và hỗ trợ cộng tác, khả năng chỉnh sửa nhiều dòng và nhiều tệp của Cursor khiến nó nổi bật hơn
    • Cursor được fork từ VSCode và phát triển dựa trên đó, cung cấp cách tương tác nhanh và trực quan phù hợp với trực giác của lập trình viên
    • Các tác vụ mạnh mẽ có thể được hoàn thành bằng ctrl/cmd+Kctrl/cmd+L
    • Cursor đang dẫn đầu làn sóng cạnh tranh mới giữa các công cụ lập trình AI về tương tác với lập trình viên và khả năng hiểu codebase
  • Data Mesh Manager

    • Data Mesh Manager cung cấp lớp siêu dữ liệu của một nền tảng data mesh điển hình
    • Đặc biệt, công cụ này tập trung vào định nghĩa của data product và đặc tả data contract bằng sáng kiến OpenContract, đồng thời có thể tích hợp vào pipeline build bằng DataContract CLI đi kèm
    • Ứng dụng này cũng cung cấp data catalog để tìm kiếm và khám phá data product cùng siêu dữ liệu của chúng, đồng thời cho phép quản trị liên hiệp, bao gồm định nghĩa chỉ số chất lượng dữ liệu và quản lý quy tắc chất lượng dữ liệu
    • Đây là một trong những công cụ gốc đầu tiên xuất hiện trong không gian này, thay vì cố gắng cải tạo các nền tảng hiện có cho phù hợp với mô hình data mesh
  • GitButler

    • Giao diện dòng lệnh của Git mạnh mẽ và hữu ích, nhưng cũng nổi tiếng là rất phức tạp khi quản lý nhiều nhánh và staging commit trong đó
    • GitButler là một Git client cung cấp giao diện đồ họa với mục tiêu đơn giản hóa quy trình này
    • Nó thực hiện điều đó bằng cách theo dõi các thay đổi tệp chưa được commit một cách độc lập với Git, sau đó staging các thay đổi đó vào các nhánh ảo
    • Có thể lập luận rằng đây là lời giải cho một vấn đề lẽ ra không nên tồn tại ngay từ đầu. Nếu thực hiện các thay đổi nhỏ thường xuyên và push lên trunk, thì sẽ không cần nhiều nhánh
    • Tuy nhiên, nếu workflow có bao gồm pull request, đặc biệt khi có chu kỳ review dài trước khi merge PR, cấu trúc phân nhánh có thể trở nên phức tạp
    • Để giải quyết điều này, GitButler tích hợp với GitHub để nhóm các thay đổi thành pull request một cách chọn lọc và phát hành trực tiếp từ công cụ
    • GitButler là một mục bổ sung nữa trong nhóm blip đang phát triển nhằm quản lý sự phức tạp vốn có của quy trình PR
  • JetBrains AI Assistant

    • JetBrains AI Assistant là một coding assistant được thiết kế để tích hợp liền mạch với mọi JetBrains IDE nhằm hỗ trợ hoàn thành mã, tạo test và tuân thủ style guide
    • Được xây dựng trên các mô hình như OpenAI và Google Gemini, công cụ này nổi bật nhờ khả năng ghi nhớ phong cách lập trình cho các phiên sau, từ đó bảo đảm đầu ra nhất quán
    • Các lập trình viên của chúng tôi thấy tính năng tạo test đặc biệt hữu ích và ghi nhận khả năng xử lý đầu ra dài hơn mà không gặp vấn đề về độ ổn định
    • Tuy nhiên, không giống một số đối thủ, JetBrains không tự host mô hình riêng, vì vậy có thể không phù hợp với những khách hàng lo ngại về việc bên thứ ba xử lý dữ liệu
    • Dù vậy, việc công cụ này được tích hợp với JetBrains IDE khiến nó trở thành một lựa chọn đầy hứa hẹn cho các nhóm đang khám phá coding assistant dựa trên AI
  • Mise

    • Các lập trình viên làm việc trong môi trường polyglot thường phải đối mặt với tình huống cần quản lý nhiều phiên bản của các ngôn ngữ và công cụ khác nhau
    • mise hướng tới giải quyết vấn đề này bằng cách cung cấp một công cụ duy nhất có thể thay thế nvm, pyenv, rbenv, rustup và hơn thế nữa, đồng thời cũng có thể thay thế asdf
    • Mise được viết bằng Rust để tăng tốc độ tương tác với shell, và không giống asdf dùng shim dựa trên shell, mise sửa trước biến môi trường PATH để thời gian chạy công cụ tương đương với việc gọi trực tiếp
    • Đây là một trong những lý do khiến mise nhanh hơn asdf
    • Với các lập trình viên đã quen thuộc với asdf, mise cung cấp cùng chức năng nhưng có một vài khác biệt quan trọng
    • Nó được viết bằng Rust nên nhanh hơn và có một số tính năng mà asdf không có. Ví dụ, có thể cài đồng thời nhiều phiên bản của cùng một công cụ và cung cấp các lệnh linh hoạt hơn, bao gồm fuzzy matching
    • Ngoài ra, nó còn cung cấp task runner tích hợp, hữu ích để chạy linter, test, builder, server và các tác vụ khác dành riêng cho dự án
    • Nếu bạn đã hơi chán việc phải dùng nhiều công cụ để quản lý môi trường phát triển cũng như cú pháp đôi lúc khá gượng gạo của các công cụ khác, thì mise rõ ràng rất đáng để xem xét
  • Mockoon

    • Mockoon là một công cụ mô phỏng API mã nguồn mở
    • Nó cung cấp giao diện trực quan, các route có thể tùy biến, phản hồi động, cũng như khả năng tự động hóa việc tạo bộ dữ liệu giả lập
    • Mockoon tương thích với OpenAPI và có thể tạo ra nhiều kịch bản khác nhau để kiểm thử cục bộ và tích hợp với pipeline phát triển
    • Bạn cũng có thể chặn request và chỉ giả lập các lệnh gọi được định nghĩa trong Mockoon để tạo ra "mô phỏng một phần"
    • Mô phỏng một phần giúp mô phỏng các route hoặc endpoint API cụ thể và chuyển các request khác tới máy chủ thực
    • Mô phỏng một phần có thể hữu ích trong một số kịch bản nhất định, nhưng nếu lạm dụng thì có nguy cơ dẫn tới độ phức tạp không cần thiết
    • Ngoài ra, Mockoon vẫn là một công cụ hữu ích để nhanh chóng thiết lập API giả lập cũng như cải thiện và tự động hóa workflow phát triển
  • Raycast

    • Raycast là launcher cao cấp cho macOS, cho phép khởi chạy ứng dụng nhanh từ bàn phím, thực thi lệnh, tìm kiếm tệp và tự động hóa tác vụ
    • Nhóm của chúng tôi đánh giá cao các tính năng tích hợp sẵn cho lập trình viên và khả năng mở rộng dễ dàng để tương tác với các ứng dụng và dịch vụ bên thứ ba như VSCode, Slack, Jira, Google và nhiều hơn nữa
    • Raycast tập trung vào năng suất, là công cụ hữu ích cho những ai muốn đơn giản hóa công việc hằng ngày bằng cách giảm thiểu việc chuyển đổi ngữ cảnh
    • Người dùng Pro có thể truy cập Raycast AI, một trợ lý tìm kiếm chuyên biệt dựa trên AI
  • ReadySet

    • ReadySet là bộ nhớ đệm truy vấn cho MySQL và PostgreSQL
    • Khác với các giải pháp caching truyền thống dựa vào việc vô hiệu hóa thủ công, ReadySet tận dụng luồng sao chép của cơ sở dữ liệu để cập nhật bộ nhớ đệm theo từng bước
    • Thông qua materialization khung nhìn một phần, ReadySet đạt được độ trễ đuôi thấp hơn so với các read replica hiện có
    • ReadySet tương thích ở cấp wire protocol với MySQL và PostgreSQL, nên có thể được triển khai phía trước cơ sở dữ liệu mà không cần thay đổi ứng dụng để mở rộng theo chiều ngang khối lượng công việc đọc
  • Rspack

    • Nhiều nhóm trong số các nhóm của chúng tôi làm việc trên frontend nền web đã chuyển từ các công cụ bundling cũ hơn như Webpack sang Vite
    • Một tân binh mới trong lĩnh vực này là Rspack, đã phát hành phiên bản 1.0 sau 18 tháng phát triển
    • Nó được thiết kế như một sản phẩm thay thế cho Webpack và tương thích với plugin cùng loader của hệ sinh thái Webpack
    • Đây có thể là lợi thế so với Vite khi di chuyển các cấu hình Webpack phức tạp
    • Lý do chính khiến các nhóm của chúng tôi chuyển sang những công cụ hiện đại như Vite và Rspack là trải nghiệm lập trình viên, đặc biệt là tốc độ
    • Không gì phá vỡ luồng phát triển hơn việc phải chờ khoảng 1–2 phút trước khi nhận được phản hồi cho thay đổi mã gần nhất
    • Được viết bằng Rust, Rspack mang lại hiệu năng nhanh hơn rất nhiều so với Webpack, và trong nhiều trường hợp còn nhanh hơn cả Vite
  • Semantic Router

    • Khi xây dựng các ứng dụng dựa trên LLM, điều quan trọng là phải xác định ý định của người dùng trước khi định tuyến request tới agent phù hợp hoặc kích hoạt một luồng cụ thể
    • Semantic Router đóng vai trò như một lớp ra quyết định siêu nhanh cho LLM và agent, cho phép định tuyến request hiệu quả và đáng tin cậy dựa trên ý nghĩa ngữ nghĩa
    • Bằng cách sử dụng vector embedding để suy luận ý định, Semantic Router giảm các lệnh gọi LLM không cần thiết, mang lại một cách tiếp cận đơn giản hơn và tiết kiệm chi phí hơn để hiểu ý định
    • Tiềm năng của nó còn vượt ra ngoài suy luận ý định, mở rộng thành một thành phần đa dụng cho nhiều tác vụ ngữ nghĩa khác nhau
    • Nhờ tốc độ và tính linh hoạt mà nó mang lại, công cụ này trở thành một đối thủ nặng ký trong những môi trường cần ra quyết định nhanh, thời gian thực mà không phải gánh overhead của LLM
  • Tác nhân kỹ thuật phần mềm

    • Hiện nay, một trong những chủ đề nóng nhất trong không gian GenAI là khái niệm tác nhân kỹ thuật phần mềm
    • Các công cụ hỗ trợ lập trình này làm được nhiều hơn việc giúp kỹ sư viết các đoạn mã rải rác ở đây đó. Chúng mở rộng quy mô vấn đề có thể giải quyết, lý tưởng là có thể thực hiện công việc một cách tự chủ với sự can thiệp tối thiểu từ con người
    • Ý tưởng là các công cụ này có thể lấy GitHub issue hoặc Jira ticket, rồi đề xuất kế hoạch và thay đổi mã, thậm chí tạo pull request để con người xem xét
    • Đây là bước tiếp theo hợp lý để gia tăng tác động của hỗ trợ lập trình bằng AI, nhưng mục tiêu về một tác nhân tổng quát có thể xử lý phạm vi rộng các tác vụ lập trình như thường được quảng bá là rất tham vọng, và tình trạng công cụ hiện tại chưa cho thấy điều đó một cách thuyết phục
    • Tuy vậy, chúng tôi cho rằng trong tương lai gần điều này có thể hoạt động đối với các tác vụ đơn giản hơn trong phạm vi hẹp hơn, nhằm giải phóng thời gian của lập trình viên cho các vấn đề phức tạp hơn
    • Các công cụ đã phát hành phiên bản beta của tác nhân gồm có GitHub Copilot Workspace, qodo flow, Tabnine agent cho JIRA, Amazon Q Developer và các công cụ khác
    • Benchmark SWE Bench liệt kê thêm nhiều công cụ trong không gian này, nhưng cần lưu ý rằng các benchmark trong lĩnh vực AI nên được tiếp nhận với một mức độ hoài nghi nhất định
  • uv

    • Rust phù hợp để viết công cụ dòng lệnh nhờ hiệu năng khởi động nhanh, và chúng tôi đang thấy mọi người viết lại một số toolchain bằng Rust
    • Trong Radar trước đó, chúng tôi đã đề cập đến Ruff, trình lint Python được viết bằng Rust
    • Trong tập này, chúng tôi đã đánh giá uv, công cụ quản lý gói Python được viết bằng Rust
    • Giá trị mà uv đưa ra là “cực kỳ nhanh”, và trong các benchmark nó vượt trội đáng kể so với những công cụ quản lý gói Python khác
    • Tuy nhiên, trong quá trình đánh giá Radar, chúng tôi đã thảo luận liệu việc tối ưu ở mức từng giây cho công cụ build có phải chỉ là cải thiện cận biên hay không
    • So với hiệu năng, những yếu tố quan trọng hơn đối với một hệ thống quản lý gói là hệ sinh thái, cộng đồng trưởng thành và hỗ trợ dài hạn
    • Dù vậy, phản hồi từ các nhóm dự án cho thấy cải thiện hiệu năng nhỏ này có thể giúp đáng kể trong việc cải thiện vòng phản hồi và trải nghiệm tổng thể của lập trình viên - chúng ta thường có xu hướng làm cho việc caching CI/CD thủ công trở nên rất phức tạp để đạt được cải thiện hiệu năng nhỏ này; uv đơn giản hóa việc quản lý môi trường Python
    • Xét đến việc quản lý package và env cho phát triển Python vẫn còn nhiều dư địa để cải thiện, chúng tôi cho rằng uv là một lựa chọn đáng để đánh giá
  • Warp

    • Warp là một terminal cho macOS và Linux
    • Nó chia đầu ra lệnh thành các khối để tăng khả năng đọc
    • Warp bao gồm các tính năng dùng AI như gợi ý lệnh thông minh và xử lý ngôn ngữ tự nhiên
    • Nó cũng có chức năng notebook, cho phép người dùng tổ chức lệnh và đầu ra, đồng thời thêm chú thích và giải thích
    • Bằng cách tận dụng các tính năng này, có thể tạo README hoặc tài liệu onboarding, cũng như trình bày và quản lý quy trình làm việc terminal theo cách có cấu trúc và tương tác
    • Warp cũng dễ dàng tích hợp với Starship, prompt đa shell linh hoạt, để tùy biến trải nghiệm terminal bằng cách truy xuất thông tin về tiến trình đang chạy, phiên bản cụ thể của công cụ đang dùng, chi tiết Git hoặc người dùng Git hiện tại, v.v.
  • Zed

    • Sau khi dự án trình soạn thảo văn bản Atom kết thúc, những người tạo ra nó đã làm ra một trình soạn thảo mới tên là Zed
    • Được viết bằng Rust và tối ưu để tận dụng phần cứng hiện đại, Zed cho cảm giác rất nhanh
    • Nó có mọi tính năng mà bạn kỳ vọng ở một trình soạn thảo hiện đại, như hỗ trợ nhiều ngôn ngữ lập trình, terminal tích hợp và chỉnh sửa multi-buffer
    • Hỗ trợ lập trình bằng AI có thể sử dụng thông qua tích hợp với nhiều nhà cung cấp LLM
    • Là những người rất nhiệt tình với pair programming, chúng tôi bị cuốn hút bởi tính năng cộng tác từ xa tích hợp sẵn trong Zed
    • Các nhà phát triển có thể tìm nhau thông qua GitHub ID rồi cộng tác theo thời gian thực trong cùng một workspace
    • Còn quá sớm để đánh giá liệu các nhóm phát triển có thể và có muốn thoát khỏi sức hút của hệ sinh thái Visual Studio Code hay không
    • Tuy nhiên, Zed là một lựa chọn thay thế đáng để khám phá

Hold

  • CocoaPods
    • CocoaPods là công cụ quản lý phụ thuộc từ lâu đã được yêu thích trong các dự án Cocoa dùng Swift và Objective-C
    • Trong hơn 10 năm, nó đã là một công cụ quan trọng với các nhà phát triển iOS và macOS
    • Nhóm CocoaPods hiện đã thông báo rằng dự án sẽ chuyển sang chế độ bảo trì và việc phát triển tích cực sẽ dừng lại
    • Công cụ CocoaPods và các tài nguyên liên quan sẽ vẫn tiếp tục khả dụng, nhưng sẽ không có phát triển tính năng mới hay cải tiến nào nữa
    • Các nhà phát triển được khuyến nghị chuyển sang Swift Package Manager
    • Swift Package Manager cung cấp tích hợp gốc với Xcode và có thể nhận được hỗ trợ dài hạn từ Apple

[Ngôn ngữ và Framework]

Adopt

  • dbt

    • tiếp tục được xem là một lựa chọn mạnh mẽ và sáng suốt để triển khai chuyển đổi dữ liệu trong các pipeline ELT
    • Chúng tôi đánh giá cao việc nó giúp áp dụng tính kỷ luật trong kỹ thuật và cho phép các thực hành như tính mô-đun, khả năng kiểm thử và khả năng tái sử dụng của các phép chuyển đổi dựa trên SQL
    • Nó tích hợp tốt với nhiều cloud data warehouse, lakehouse và cơ sở dữ liệu như Snowflake, BigQuery, Redshift, Databricks, Postgres và có một hệ sinh thái gói cộng đồng xung quanh khá lành mạnh
    • Hỗ trợ gốc gần đây cho unit test (dbt core 1.8+ và trải nghiệm dbt Cloud “versionless” mới được giới thiệu) càng củng cố vị trí của nó trong bộ công cụ
    • Với tính năng unit test mới, có thể dễ dàng định nghĩa dữ liệu kiểm thử tĩnh, đặt kỳ vọng đầu ra và kiểm thử cả chế độ incremental lẫn full refresh của pipeline, điều mà các nhóm rất đánh giá cao
    • Trong nhiều trường hợp, điều này đã cho phép loại bỏ các script tự xây mà vẫn duy trì cùng mức chất lượng
  • Testcontainers

    • Testcontainers được xem là lựa chọn mặc định hữu ích để tạo ra môi trường đáng tin cậy cho việc chạy kiểm thử
    • Đây là thư viện được port sang nhiều ngôn ngữ, Docker hóa các phụ thuộc kiểm thử phổ biến, bao gồm nhiều loại cơ sở dữ liệu, công nghệ hàng đợi, dịch vụ đám mây và phụ thuộc kiểm thử UI như trình duyệt web, đồng thời có thể chạy Dockerfile tùy chỉnh khi cần
    • Gần đây đã có phiên bản desktop cung cấp khả năng quản lý trực quan các phiên kiểm thử và quản lý những kịch bản phức tạp hơn, và các nhóm đánh giá điều này là rất hữu ích

Trial

  • CAP

    • Thư viện .NET triển khai mẫu Outbox để thực hiện cập nhật cơ sở dữ liệu và phát hành sự kiện một cách nguyên tử trong các hệ thống nhắn tin phân tán
    • Nó giải quyết vấn đề bằng cách ghi lại ý định phát hành sự kiện trong cùng một giao dịch cơ sở dữ liệu
    • Hỗ trợ một số cơ sở dữ liệu và nền tảng nhắn tin, đồng thời đảm bảo cơ chế giao ít nhất một lần, nên khá hữu ích
  • CARLA

    • Trình mô phỏng nghiên cứu lái xe tự hành mã nguồn mở dùng để kiểm thử các hệ thống tự lái trước khi triển khai production
    • Nó cho phép tạo và tái sử dụng linh hoạt các mô hình 3D của xe cộ, địa hình, con người, động vật, v.v., nhờ đó có thể mô phỏng nhiều kịch bản khác nhau
    • Hệ thống tự lái phải nhận diện được các đối tượng động này và thực hiện hành động phù hợp như phanh xe
    • Nó được sử dụng cho việc phát triển và kiểm thử liên tục các hệ thống tự lái
  • Databricks Asset Bundles

    • Được GA vào tháng 4/2024, DABs đã trở thành công cụ đóng gói và triển khai tài sản Databricks giúp thúc đẩy các nhóm dữ liệu áp dụng thực hành kỹ thuật phần mềm
    • Nó đóng gói workflow, cấu hình job và đoạn mã sẽ chạy trong các job đó thành bundle để có thể triển khai qua pipeline CI/CD tới nhiều môi trường
    • Hỗ trợ template cho các loại tài sản phổ biến cũng như template tùy chỉnh, cho phép tạo template dịch vụ phù hợp cho các dự án data engineering và ML
    • Công cụ này đang ngày càng được áp dụng nhiều hơn như một phần quan trọng của workflow kỹ thuật
    • Dù nó bao gồm template notebook và hỗ trợ triển khai lên production, chúng tôi không khuyến nghị đưa notebook vào production
    • Thay vào đó, nó khuyến khích việc chủ đích viết mã production theo các thực hành kỹ thuật hỗ trợ yêu cầu về khả năng bảo trì, độ bền bỉ và khả năng mở rộng
  • Instructor

    • Thư viện hữu ích khi yêu cầu câu trả lời có cấu trúc (JSON, YAML, v.v.) bằng cách sử dụng LLM, sau đó phân tích cú pháp để dùng trong ứng dụng
    • Vì LLM có tính không xác định, nên có thể không phải lúc nào cũng hoạt động đúng như yêu cầu
    • Có thể định nghĩa cấu trúc đầu ra mong muốn và cấu hình thử lại nếu LLM không trả về đúng cấu trúc được yêu cầu
    • Cũng cung cấp khả năng phân tích cấu trúc từng phần từ luồng, cho phép truyền kết quả theo dòng mà không cần chờ toàn bộ phản hồi
  • Kedro

    • Đã được cải thiện đáng kể như một công cụ MLOps, đồng thời vẫn giữ trọng tâm vào tính mô-đun và các thực hành kỹ thuật
    • Nhấn mạnh tính mô-đun, chẳng hạn như việc giới thiệu gói kedro-datasets độc lập để tách mã và dữ liệu
    • Cải thiện CLI, mẫu dự án khởi tạo và tính năng telemetry
    • Gần đây đã phát hành tiện ích mở rộng VS Code, giúp nâng cao trải nghiệm nhà phát triển
  • LiteLLM

    • Thư viện tích hợp trơn tru với API của nhiều nhà cung cấp LLM khác nhau, chuẩn hóa cách tương tác thông qua định dạng API của OpenAI
    • Hỗ trợ phạm vi rộng các nhà cung cấp và mô hình, đồng thời cung cấp giao diện hợp nhất cho completions, embeddings và tạo ảnh
    • Đơn giản hóa việc tích hợp bằng cách chuyển đổi đầu vào để phù hợp với các yêu cầu endpoint riêng của từng nhà cung cấp
    • Cung cấp framework để triển khai các chức năng vận hành cần thiết cho ứng dụng production như caching, logging, giới hạn tốc độ và cân bằng tải
    • Giúp dễ dàng thay thế giữa các mô hình khác nhau, một khả năng cần thiết trong bối cảnh mô hình đang tiến hóa rất nhanh hiện nay
    • Cần nhận thức rằng vì phản hồi của mô hình với cùng một prompt có thể rất đa dạng, nên chỉ một phương thức gọi nhất quán có thể không đủ để tối ưu hiệu năng completions
    • Mỗi mô hình triển khai các tính năng bổ sung theo cách riêng, nên một giao diện duy nhất có thể khó đáp ứng toàn bộ tính năng
  • LlamaIndex

    • Bao gồm một engine cho phép thiết kế các ứng dụng LLM chuyên biệt theo miền và dựa trên ngữ cảnh, hỗ trợ các tác vụ như thu thập dữ liệu, lập chỉ mục vector và hỏi đáp ngôn ngữ tự nhiên trên tài liệu
    • Có thể sử dụng LlamaIndex để tự động hóa việc thu thập tài liệu, lập chỉ mục embedding của tài liệu và xây dựng pipeline RAG (Retrieval-Augmented Generation) truy vấn các embedding này dựa trên đầu vào của người dùng
    • Có thể dùng LlamaHub để mở rộng hoặc tùy biến các mô-đun của LlamaIndex, đồng thời xây dựng ứng dụng LLM với LLM, embedding và nhà cung cấp vector store mà bạn ưa thích
  • LLM Guardrails

    • Tập hợp các hướng dẫn, chính sách hoặc bộ lọc nhằm ngăn LLM tạo ra nội dung có hại, gây hiểu lầm hoặc không liên quan
    • Cũng có thể dùng để bảo vệ ứng dụng LLM khỏi người dùng độc hại muốn lạm dụng hệ thống bằng các kỹ thuật như thao túng đầu vào
    • Đóng vai trò như lưới an toàn bằng cách đặt ra ranh giới cho cách mô hình xử lý và tạo nội dung
    • Các framework đang nổi lên trong lĩnh vực này như NeMo Guardrails, Guardrails AI và Aporia Guardrails rất hữu ích
    • Khuyến nghị triển khai guardrails cho mọi ứng dụng LLM và liên tục cải thiện các quy tắc cũng như chính sách
    • Đây là yếu tố quan trọng để xây dựng các ứng dụng chat LLM có trách nhiệm và đáng tin cậy
  • Medusa

    • Phần lớn các giải pháp thương mại điện tử để xây dựng website mua sắm có xu hướng rơi vào cái bẫy 80/20
    • Medusa là một nền tảng thương mại mã nguồn mở có khả năng tùy biến cao và cân bằng tốt, cho phép nhà phát triển tạo ra trải nghiệm mua sắm độc đáo và tùy chỉnh
    • Được xây dựng trên Next.js và PostgreSQL, giúp tăng tốc quá trình phát triển với phạm vi mô-đun toàn diện từ giỏ hàng, quản lý đơn hàng đến các tính năng nâng cao như mô-đun thẻ quà tặng và tính thuế theo khu vực
    • Đã được áp dụng trong một số dự án và được đánh giá là một framework có giá trị
  • Pkl

    • Ngôn ngữ cấu hình và công cụ mã nguồn mở ban đầu được Apple tạo ra để sử dụng nội bộ
    • Tính năng chính là hệ thống kiểm tra kiểu và xác thực giúp phát hiện lỗi cấu hình trước khi triển khai
    • Giúp giảm trùng lặp mã nguồn (ví dụ như trong các trường hợp ghi đè theo môi trường) và có thể thực hiện xác thực trước khi áp dụng thay đổi cấu hình vào môi trường live
    • Cung cấp tích hợp rộng rãi với IDE và ngôn ngữ, bao gồm tạo tệp JSON, PLIST, YAML, .properties và sinh mã
  • ROS 2

    • Framework mã nguồn mở để phát triển hệ thống robot
    • Cung cấp thư viện và công cụ cho phép triển khai mô-đun của các ứng dụng xử lý các chức năng như giao tiếp liên tiến trình, thực thi đa luồng và chất lượng dịch vụ
    • Được cải thiện so với phiên bản trước ở các mặt như chức năng thời gian thực tốt hơn, tính mô-đun cao hơn, hỗ trợ nhiều nền tảng hơn và các giá trị mặc định hợp lý
    • Kiến trúc dựa trên node và mô hình giao tiếp dựa trên topic đặc biệt hấp dẫn đối với các nhà sản xuất có những ứng dụng trên xe phức tạp và liên tục phát triển như tính năng lái tự động
    • Đang ngày càng được sử dụng nhiều trong ngành ô tô
  • seL4

    • Trong SDV hoặc các kịch bản an toàn trọng yếu khác, độ ổn định thời gian thực của hệ điều hành là rất quan trọng
    • Do rào cản gia nhập cao, chỉ một số ít doanh nghiệp đang chi phối lĩnh vực này, vì vậy các giải pháp mã nguồn mở như seL4 rất có giá trị
    • seL4 là một microkernel hệ điều hành hiệu năng cao, độ đảm bảo cao
    • Sử dụng các phương pháp kiểm chứng hình thức để xác nhận rằng hành vi của hệ điều hành tuân thủ thông số kỹ thuật một cách “toán học”
    • Kiến trúc microkernel tối thiểu hóa các trách nhiệm cốt lõi nhằm bảo đảm độ ổn định của hệ thống
    • Các công ty xe điện như NIO đang hợp tác với hệ sinh thái seL4, và trong tương lai có thể sẽ có thêm nhiều tiến triển trong lĩnh vực này
  • SetFit

    • Hiện nay phần lớn các công cụ dựa trên AI đều mang tính tạo sinh, tạo văn bản và hình ảnh, đồng thời sử dụng GPT
    • Với các tác vụ văn bản truyền thống (phân loại văn bản hoặc xác định ý định), sentence transformers được ưa chuộng hơn
    • SetFit là framework để fine-tune sentence transformers
    • Sử dụng học tương phản để thường đạt được sự phân tách rõ ràng giữa các lớp ý định chỉ với số lượng ví dụ rất nhỏ
    • Sentence transformers cũng có thể đóng vai trò trong các hệ thống AI tạo sinh
    • Trong các hệ thống chatbot hướng tới khách hàng sử dụng LLM, SetFit đã được dùng thành công để phát hiện ý định, và bộ phân loại dựa trên SetFit được lựa chọn để lọc nghiêm ngặt hơn
  • vLLM

    • Engine suy luận cho LLM có thông lượng cao và hiệu quả bộ nhớ, có thể chạy trên cloud hoặc on-premise
    • Hỗ trợ trơn tru nhiều kiến trúc mô hình và các mô hình mã nguồn mở phổ biến
    • Bằng cách triển khai các vLLM worker đã được docker hóa trên các nền tảng GPU như NVIDIA DGX và Intel HPC, có thể lưu trữ các mô hình như Llama 3.1 (8B và 70B), Mistral 7B và Llama-SQL cho hỗ trợ lập trình, truy xuất tri thức, tương tác cơ sở dữ liệu bằng ngôn ngữ tự nhiên, v.v.
    • Tương thích với tiêu chuẩn OpenAI SDK, giúp nhất quán hóa việc phục vụ mô hình
    • AI Model Catalog của Azure cải thiện hiệu năng phục vụ mô hình bằng các container suy luận tùy chỉnh, và sử dụng vLLM làm engine suy luận mặc định nhờ thông lượng cao và khả năng quản lý bộ nhớ hiệu quả
    • Framework vLLM đang nổi lên như lựa chọn mặc định cho triển khai mô hình quy mô lớn

Assess

  • Apache XTable™

    • Trong số các định dạng bảng mở hiện có, vẫn chưa xuất hiện một người chiến thắng rõ ràng
    • Các công cụ như Delta UniForm cho phép khả năng tương tác giữa các định dạng này
    • Apache XTable™ là một dự án Apache incubator thúc đẩy khả năng tương tác hai chiều giữa Hudi, Delta và Iceberg
    • Do khác biệt về tính năng giữa các định dạng này, việc phụ thuộc nhiều vào khả năng tương tác hai chiều trong dài hạn có thể khiến các nhóm chỉ sử dụng được những tính năng ở mức “mẫu số chung nhỏ nhất”
  • dbldatagen

    • Chuẩn bị dữ liệu kiểm thử cho data engineering là một thách thức đáng kể
    • Việc chuyển dữ liệu từ production sang môi trường kiểm thử có thể tiềm ẩn rủi ro, vì vậy các nhóm thường dựa vào dữ liệu giả hoặc dữ liệu tổng hợp
    • dbldatagen (Databricks Labs Data Generator) là thư viện Python tạo dữ liệu tổng hợp trong môi trường Databricks để phục vụ kiểm thử, benchmarking, demo, v.v.
    • dbldatagen có thể tạo hàng tỷ dòng trong vài phút, cho phép sinh dữ liệu tổng hợp ở quy mô lớn đồng thời hỗ trợ nhiều kịch bản như nhiều bảng, change data capture, và các tác vụ merge/join khác nhau
  • DeepEval

    • DeepEval là một framework đánh giá mã nguồn mở dựa trên Python để đánh giá hiệu năng của LLM
    • Có thể dùng để đánh giá các ứng dụng RAG (retrieval-augmented generation) và các loại ứng dụng khác được xây dựng bằng những framework phổ biến như LlamaIndex hoặc LangChain, đồng thời thiết lập đường cơ sở và benchmark khi cần so sánh nhiều mô hình khác nhau
    • DeepEval cung cấp các metric và tính năng toàn diện để đánh giá hiệu năng LLM, như phát hiện hallucination, mức độ liên quan của câu trả lời và tối ưu hóa hyperparameter
    • Cung cấp tích hợp với pytest, giúp dễ dàng tích hợp các bộ kiểm thử vào pipeline CI (continuous integration) cùng với assertion
  • DSPy

    • Ngày nay, phần lớn các ứng dụng dựa trên mô hình ngôn ngữ vẫn phụ thuộc vào các mẫu prompt được tinh chỉnh thủ công cho từng tác vụ cụ thể
    • DSPy là một framework để phát triển các ứng dụng như vậy, áp dụng một cách tiếp cận khác nhằm loại bỏ prompt engineering trực tiếp
    • Thay vào đó, nó đưa vào các lớp trừu tượng cấp cao liên quan đến luồng chương trình (thông qua các mô-đun có thể xếp chồng lên nhau), các metric cần tối ưu và dữ liệu dùng để huấn luyện hoặc kiểm thử
    • Sau đó, nó tối ưu prompt hoặc trọng số của mô hình ngôn ngữ nền tảng dựa trên các metric đã được xác định
    • Codebase tạo ra có nhiều điểm tương đồng với việc huấn luyện mạng nơ-ron bằng PyTorch
  • Flutter for Web

    • Flutter được biết đến với khả năng hỗ trợ đa nền tảng cho ứng dụng iOS và Android
    • Hiện nay, nó đã mở rộng sang nhiều nền tảng hơn
    • Có thể xây dựng ứng dụng cho iOS, Android và trình duyệt từ cùng một codebase
    • Không phải mọi ứng dụng web đều phù hợp với Flutter, nhưng nó đặc biệt thích hợp cho progressive web app, single-page app và các trường hợp chuyển ứng dụng Flutter di động hiện có lên web
    • Flutter đã hỗ trợ WebAssembly (WASM) như một đích biên dịch trong kênh thử nghiệm, cho thấy đây là tính năng đang được phát triển tích cực với khả năng còn tồn tại lỗi và vấn đề hiệu năng
    • Trong các bản phát hành gần đây, tính năng này đã được ổn định hóa
    • Hiệu năng của ứng dụng web Flutter được biên dịch sang đích WASM vượt trội đáng kể so với đích biên dịch JavaScript
    • Hiệu năng gần mức native trên nhiều nền tảng cũng là một trong những lý do khiến nhiều nhà phát triển chọn Flutter ngay từ đầu
  • kotaemon

    • kotaemon là công cụ và framework mã nguồn mở dựa trên RAG để xây dựng ứng dụng hỏi đáp cho tài liệu trong kho tri thức
    • Nó có thể hiểu nhiều loại tài liệu, bao gồm định dạng PDF và DOC, đồng thời cung cấp web UI dựa trên Gradio để người dùng tổ chức kho tri thức và tương tác thông qua giao diện chat
    • Có sẵn pipeline RAG tích hợp với vector store và có thể mở rộng bằng SDK
    • Ngoài ra còn hỗ trợ trích dẫn tài liệu nguồn trong câu trả lời kèm bản xem trước inline trên web và điểm số liên quan
    • Với những ai muốn xây dựng ứng dụng hỏi đáp tài liệu dựa trên RAG, framework có khả năng tùy biến này là một điểm khởi đầu rất tốt
  • Lenis

    • Lenis là thư viện smooth scrolling nhẹ nhưng mạnh mẽ, được thiết kế cho các trình duyệt hiện đại
    • Nó cho phép tạo trải nghiệm cuộn mượt như đồng bộ cuộn WebGL và hiệu ứng parallax, rất phù hợp với các đội ngũ xây dựng những trang có tương tác cuộn linh hoạt và liền mạch
    • Các nhà phát triển nhận thấy Lenis đơn giản, dễ sử dụng và mang lại cách tiếp cận tinh gọn để tạo hiệu ứng cuộn mượt
    • Tuy nhiên, thư viện này có thể gây ra các vấn đề về khả năng tiếp cận, đặc biệt là các tương tác cuộn dọc và ngang có thể khiến người dùng khuyết tật bị bối rối
    • Dù hấp dẫn về mặt thị giác, việc triển khai cần được thực hiện cẩn trọng để vẫn duy trì khả năng tiếp cận
  • LLMLingua

    • LLMLingua cải thiện hiệu quả của LLM bằng cách nén prompt, loại bỏ các token không thiết yếu bằng mô hình ngôn ngữ nhỏ để giảm thiểu tổn thất hiệu năng
    • Cách tiếp cận này giúp LLM xử lý prompt dài hơn một cách hiệu quả trong khi vẫn duy trì suy luận và học theo ngữ cảnh, qua đó giải quyết các thách thức như hiệu quả chi phí, độ trễ suy luận và xử lý ngữ cảnh
    • Tương thích với nhiều LLM khác nhau mà không cần huấn luyện bổ sung và hỗ trợ các framework như LLamaIndex, LLMLingua phù hợp để tối ưu hiệu năng suy luận của LLM
  • Microsoft Autogen

    • Microsoft Autogen là framework mã nguồn mở giúp đơn giản hóa việc tạo và điều phối các AI agent, cho phép cộng tác đa agent để giải quyết các tác vụ phức tạp
    • Nó hỗ trợ cả workflow tự động lẫn human-in-the-loop, đồng thời cung cấp khả năng tương thích với nhiều LLM và các công cụ phục vụ tương tác giữa agent
    • Một nhóm đã dùng Autogen cho khách hàng để xây dựng nền tảng dựa trên AI, trong đó mỗi agent đại diện cho một kỹ năng cụ thể như sinh mã, rà soát mã hoặc tóm tắt tài liệu
    • Bằng cách xác định mô hình và workflow phù hợp bằng framework này, các nhóm có thể tạo agent mới một cách liền mạch và nhất quán
    • Tận dụng LlamaIndex để điều phối workflow, giúp các agent quản lý hiệu quả các tác vụ như tìm kiếm sản phẩm và đề xuất mã
    • Autogen đã cho thấy nhiều tiềm năng, đặc biệt trong môi trường production, nhưng vẫn còn những lo ngại về khả năng mở rộng và quản lý độ phức tạp khi số lượng agent tăng lên
    • Cần thêm các đánh giá để xác định tính khả thi dài hạn khi mở rộng các hệ thống dựa trên agent
  • Pingora

    • Pingora là framework Rust để xây dựng các dịch vụ mạng nhanh, ổn định và có thể lập trình
    • Ban đầu được Cloudflare phát triển để khắc phục những hạn chế của Nginx, Pingora đã cho thấy tiềm năng lớn khi các proxy mới như River đang được xây dựng trên nền tảng này
    • Dù phần lớn mọi người không phải đối mặt với quy mô ở mức Cloudflare, họ vẫn gặp các kịch bản mà routing linh hoạt ở tầng ứng dụng là yếu tố thiết yếu đối với dịch vụ mạng
    • Kiến trúc của Pingora cho phép tận dụng trọn vẹn khả năng của Rust trong các tình huống đó mà không phải đánh đổi bảo mật hay hiệu năng
  • Ragas

    • Ragas là framework được thiết kế để đánh giá hiệu năng của pipeline retrieval-augmented generation (RAG), giải quyết bài toán đánh giá cả thành phần truy xuất lẫn thành phần sinh
    • Nó cung cấp các metric có cấu trúc như độ trung thực, mức độ liên quan của câu trả lời và khả năng tận dụng ngữ cảnh, giúp đánh giá hiệu quả của các hệ thống dựa trên RAG
    • Các nhà phát triển nhận thấy công cụ này hữu ích để chạy đánh giá định kỳ nhằm tinh chỉnh các tham số như top-k retrieval và mô hình embedding
    • Một số nhóm đã tích hợp Ragas vào pipeline chạy hằng ngày mỗi khi prompt template hoặc mô hình thay đổi
    • Dù các metric mang lại những insight vững chắc, vẫn có lo ngại rằng framework này có thể không nắm bắt hết mọi sắc thái và tương tác phức tạp của các pipeline RAG phức tạp, vì vậy nên cân nhắc thêm các framework đánh giá bổ sung
    • Dù vậy, Ragas vẫn nổi bật nhờ khả năng đơn giản hóa việc đánh giá RAG trong môi trường production và mang lại các cải tiến dựa trên dữ liệu
  • Score

    • Nhiều tổ chức tự xây dựng nền tảng phát triển nội bộ thường có xu hướng tạo ra hệ thống điều phối nền tảng riêng để áp dụng các tiêu chuẩn tổ chức giữa nhà phát triển và đội ngũ vận hành nền tảng
    • Tuy nhiên, các chức năng cốt lõi của một nền tảng triển khai "đường trải sẵn" để lưu trữ workload dạng container theo cách an toàn, nhất quán và tuân thủ quy định thì khá giống nhau giữa các tổ chức
    • Sẽ thật tốt nếu có một ngôn ngữ chung để mô tả các yêu cầu này
    • Score đang cho thấy tiềm năng trở thành tiêu chuẩn trong lĩnh vực này
    • Đây là một ngôn ngữ khai báo ở định dạng YAML, mô tả cách triển khai workload được container hóa cùng các dịch vụ và tham số cụ thể cần thiết để vận hành
    • Score ban đầu được phát triển làm ngôn ngữ cấu hình cho sản phẩm Platform Orchestrator của Humanitec, nhưng hiện là một dự án mã nguồn mở dưới sự quản lý của CNCF (Cloud Native Computing Foundation)
    • Với sự hậu thuẫn của CNCF, Score có khả năng được sử dụng rộng rãi hơn vượt ra ngoài các sản phẩm của Humanitec
    • Được phát hành cùng hai triển khai tham chiếu là Kubernetes và Docker Compose
    • Khả năng mở rộng của Score được kỳ vọng sẽ dẫn đến các đóng góp từ cộng đồng cho những nền tảng khác
    • Score có những điểm tương đồng với đặc tả Open Application Model (OAM) dành cho Kubevela, nhưng tập trung nhiều hơn vào triển khai workload container thay vì toàn bộ ứng dụng
    • Cũng có một phần chồng lấn với SST, nhưng SST quan tâm nhiều hơn đến việc triển khai trực tiếp lên hạ tầng đám mây thay vì các nền tảng kỹ thuật nội bộ
    • Chúng tôi đang theo dõi Score với sự quan tâm khi nó tiếp tục phát triển
  • shadcn

    • shadcn thách thức khái niệm thư viện thành phần truyền thống bằng cách cung cấp các thành phần có thể tái sử dụng và sao chép-dán trực tiếp
    • Cách tiếp cận này mang lại cho nhóm quyền sở hữu và quyền kiểm soát hoàn toàn, cho phép tùy biến và mở rộng dễ dàng hơn, điều mà các thư viện truyền thống phổ biến hơn như MUI và Chakra UI thường còn thiếu
    • Được xây dựng bằng Radix UI và Tailwind CSS, shadcn tích hợp mượt mà vào mọi ứng dụng dựa trên React, nên phù hợp với các dự án ưu tiên khả năng kiểm soát và mở rộng
    • Bao gồm CLI hỗ trợ quy trình sao chép và dán các thành phần vào dự án
    • Nhờ lợi ích là giảm phụ thuộc ẩn và tránh các triển khai gắn kết quá chặt, shadcn đang được chú ý như một lựa chọn thay thế hấp dẫn cho các nhóm theo đuổi cách tiếp cận thực dụng và linh hoạt hơn đối với phát triển frontend
  • Slint

    • Slint là một framework GUI khai báo để xây dựng giao diện người dùng native cho các ứng dụng Rust, C++ hoặc JavaScript
    • Đây là một framework UI đa nền tảng với các tính năng quan trọng như xem trước trực tiếp, thiết kế UI phản hồi, tích hợp VS Code và trải nghiệm người dùng native, nhưng chúng tôi đặc biệt muốn nhấn mạnh tính hữu ích của nó với các hệ thống nhúng
    • Các nhóm phát triển ứng dụng nhúng vốn có ít lựa chọn cho việc phát triển UI, và mỗi lựa chọn đều có ưu và nhược điểm riêng
    • Slint sử dụng một ngôn ngữ đánh dấu dễ dùng tương tự HTML và được biên dịch trực tiếp xuống mã máy, mang lại sự cân bằng lý tưởng giữa trải nghiệm lập trình viên và hiệu năng
    • Nó cũng có mức sử dụng tài nguyên thấp khi chạy, một yếu tố quan trọng đối với hệ thống nhúng
    • Tóm lại, chúng tôi thích Slint vì nó mang các thực tiễn đã được kiểm chứng của phát triển web và di động vào hệ sinh thái nhúng
  • SST

    • SST là một framework để triển khai ứng dụng lên môi trường đám mây cùng với mọi dịch vụ cần thiết để chạy ứng dụng
    • SST không chỉ là một công cụ IaC mà là một framework có API TypeScript để định nghĩa môi trường ứng dụng, cùng một dịch vụ triển khai ứng dụng khi được kích hoạt từ Git push và một GUI console để quản lý ứng dụng tạo ra cũng như gọi các chức năng quản trị của SST
    • SST ban đầu được xây dựng trên AWS Cloud Formation và CDK, nhưng các phiên bản mới nhất được triển khai trên Terraform và Pulumi, nên về mặt lý thuyết không bị ràng buộc vào một nhà cung cấp đám mây cụ thể
    • SST hỗ trợ sẵn việc triển khai nhiều framework ứng dụng web tiêu chuẩn, bao gồm Next.js và Remix, đồng thời cũng hỗ trợ các ứng dụng API headless
    • SST dường như thuộc về một danh mục riêng
    • Dù có những điểm tương đồng với các công cụ điều phối nền tảng như Kubevela, nó cũng cung cấp các tính năng tiện lợi cho lập trình viên như live mode, cho phép proxy các lệnh gọi AWS Lambda thành các hàm chạy trên máy cục bộ của nhà phát triển
    • Hiện tại SST vẫn còn mang tính khám phá phần nào, nhưng khi tiếp tục phát triển, đây là một dự án và một nhóm công cụ đáng chú ý

Hold : Không có

10 bình luận

 
kane44 2024-11-05

Cảm ơn. Thú vị đấy.

 
dastjead 2024-11-04

Bạn đã vất vả rồi... xin cảm ơn!

 
roxie 2024-10-31

Nếu nói thêm về thư viện cuộn tên là Lenis xuất hiện thoáng qua ở giữa thì... các hiệu ứng hoạt họa cuộn mượt mà kiểu trang chủ của Apple với tôi lại hơi bất tiện.

Khi dùng bánh xe cuộn chuột để xem thì cứ có cảm giác hoạt ảnh liên tục bị ngắt quãng, còn nếu nhấn phím mũi tên xuống để di chuyển thì lại quá nhanh nên tôi thấy khó đọc nội dung.

Cuối cùng, trên Windows, cách duy nhất để “thưởng thức” những website như vậy là bấm nút cuộn chuột rồi chỉ di chuyển thật nhẹ để trôi xuống thật chậm, nhưng tôi không chắc nó có đáng giá đến mức đó không. Nói ngắn gọn là tôi không chắc đây có phải một kỹ thuật hay hay không.

 
roxie 2024-10-31

Databricks xuất hiện nhiều đến mức đáng sợ.

 
halfenif 2024-10-29

Đọc được một lúc thì đuối luôn. hu hu

 
savvykang 2024-10-29

Mình đã tổng hợp các sản phẩm/dịch vụ từng được đăng trên GeekNews.

Platforms - Assess

Platforms - Trial

Language and Frameworks - Adopt

Language and Frameworks - Assess

Language and Frameworks - Trial

Tools - Adopt

Tools - Assess

Tools - Trial

 
wwhite103 2024-10-29

Cảm ơn. Thú vị đấy~

 
nottiger 2024-10-29

Đã đọc rất kỹ. Xin cảm ơn.

 
bbulbum 2024-10-29

Đọc rất thú vị. Cảm ơn bạn.