Bỏ qua tới nội dung chính
Quay lại tin tức

Chạy mã Python trong môi trường sandbox với MicroPython và WASM

Simon Willison· 6/6/2026general

Năm 2023, các nhà nghiên cứu đã công bố một phương pháp mới để tạo ra các mô hình ngôn ngữ lớn (LLM) có khả năng đa phương thức. Phương pháp này sử dụng một kiến trúc bộ mã hóa-giải mã (encoder-decoder) để kết hợp thông tin từ nhiều phương thức khác nhau, chẳng hạn như văn bản, hình ảnh và âm thanh. Các LLM đa phương thức có thể được sử dụng cho nhiều tác vụ, bao gồm: * **Tạo văn bản:** LLM có thể tạo văn bản dựa trên nhiều phương thức đầu vào, chẳng hạn như mô tả hình ảnh hoặc bản ghi âm. * **Tạo hình ảnh:** LLM có thể tạo hình ảnh dựa trên mô tả văn bản hoặc bản ghi âm. * **Tạo âm thanh:** LLM có thể tạo âm thanh dựa trên mô tả văn bản hoặc hình ảnh. * **Dịch:** LLM có thể dịch giữa các ngôn ngữ khác nhau, cũng như giữa các phương thức khác nhau. * **Tóm tắt:** LLM có thể tóm tắt các tài liệu dài, chẳng hạn như bài báo hoặc sách. * **Trả lời câu hỏi:** LLM có thể trả lời các câu hỏi về nhiều chủ đề khác nhau. LLM đa phương thức vẫn đang trong giai đoạn phát triển ban đầu, nhưng chúng có tiềm năng cách mạng hóa cách chúng ta tương tác với máy tính. Chúng có thể giúp chúng ta giao tiếp với máy tính theo cách tự nhiên hơn, cũng như tạo ra nội dung mới và sáng tạo. Dưới đây là một số ví dụ cụ thể về cách LLM đa phương thức có thể được sử dụng: * **Một LLM có thể tạo ra một câu chuyện dựa trên một loạt hình ảnh.** * **Một LLM có thể tạo ra một bài hát dựa trên một mô tả văn bản.** * **Một LLM có thể dịch một cuộc trò chuyện giữa hai người nói các ngôn ngữ khác nhau.** * **Một LLM có thể tóm tắt một bài báo dài thành một vài câu.** * **Một LLM có thể trả lời các câu hỏi về một chủ đề cụ thể.** LLM đa phương thức là một lĩnh vực nghiên cứu mới và thú vị, và chúng ta có thể mong đợi thấy nhiều ứng dụng sáng tạo hơn nữa của chúng trong tương lai.

Chạy mã Python trong môi trường biệt lập với MicroPython và WASM Simon Willison’s Weblog Đăng ký Được tài trợ bởi: AWS — Nếu bạn đang phát triển với AI, AWS Summit NYC vào ngày 17/6 là nơi bạn nên đến. Hơn 200 phiên. Hoàn toàn miễn phí. Đăng ký tại đây. Chạy mã Python trong môi trường biệt lập với MicroPython và WASM Ngày 6/6/2026 Trong nhiều năm qua, tôi đã thử nghiệm nhiều phương pháp khác nhau để chạy mã trong môi trường biệt lập, nhưng nỗ lực gần đây nhất của tôi dường như đã đáp ứng được tất cả các đặc tính mà tôi đang tìm kiếm. Tôi đã phát hành nó dưới dạng gói alpha có tên micropython-wasm và tôi đang sử dụng nó cho một plugin môi trường biệt lập thực thi mã cho Datasette Agent có tên datasette-agent-micropython. Tại sao tôi cần một môi trường biệt lập? Những gì tôi muốn từ một môi trường biệt lập WebAssembly có vẻ rất hứa hẹn ở đây MicroPython trong WebAssembly Xây dựng phiên bản đầu tiên Hãy tự mình trải nghiệm Bạn có nên tin tưởng môi trường biệt lập được mã hóa theo cảm hứng của tôi không? Tại sao tôi cần một môi trường biệt lập? Các dự án mã nguồn mở chính của tôi—Datasette, LLM, thậm chí cả sqlite-utils—đều hỗ trợ plugin. Tôi hoàn toàn yêu thích plugin như một cơ chế để mở rộng phần mềm. Một hệ thống plugin được thiết kế cẩn thận giúp giảm thiểu rủi ro khi thử nghiệm những điều mới mẻ xuống gần như bằng không—ngay cả những ý tưởng táo bạo nhất cũng sẽ không để lại ảnh hưởng lâu dài đến ứng dụng cốt lõi. Phần mềm của tôi có thể phát triển một tính năng mới chỉ sau một đêm và tôi thậm chí không cần phải xem xét một pull request! Có một nhược điểm lớn: tất cả các hệ thống plugin của tôi đều sử dụng Python và Pluggy, và mã plugin được thực thi với đầy đủ đặc quyền trong các ứng dụng của tôi. Một plugin có lỗi hoặc độc hại có thể làm hỏng mọi thứ hoặc làm rò rỉ dữ liệu riêng tư. Tôi muốn có thể chạy mã kiểu plugin trong một môi trường mà nó không thể đọc các tệp không được phép, kết nối với mạng hoặc nói chung là hoạt động theo cách rủi ro hoặc gây hại cho phần còn lại của ứng dụng hoặc máy tính của người dùng. Sự quan tâm của tôi không chỉ dừng lại ở các plugin. Đối với Datasette nói riêng, có nhiều tính năng tôi muốn hỗ trợ mà việc thực thi mã tùy ý sẽ hữu ích. Tôi đã thử nghiệm điều này với Datasette Enrichments, nơi mã có thể được sử dụng để chuyển đổi các giá trị được lưu trữ trong một bảng. Tôi muốn xây dựng một cơ chế mà bạn có thể chạy mã theo lịch trình để lấy JSON từ một vị trí được phê duyệt, chạy một đoạn mã nhỏ để định dạng lại nó thành một danh sách các từ điển, sau đó chèn chúng dưới dạng các hàng vào một bảng cơ sở dữ liệu SQLite. Những gì tôi muốn từ một môi trường biệt lập Mục tiêu của tôi là thực thi mã một cách an toàn trong các ứng dụng Python của riêng tôi. Đây là những gì tôi cần: Các phần phụ thuộc được cài đặt sạch sẽ từ PyPI, bao gồm các binary wheel trên nhiều nền tảng nếu cần. Tôi không muốn những người sử dụng phần mềm của tôi phải thực hiện bất kỳ bước bổ sung nào ngoài việc cài đặt trực tiếp gói Python của tôi. Mã được thực thi phải tuân theo cả giới hạn bộ nhớ và CPU. Tôi không muốn `while True: s += "longer string"` làm hỏng ứng dụng của tôi hoặc máy tính của người dùng. Quyền truy cập tệp phải được kiểm soát chặt chẽ. Hoặc không có quyền truy cập hệ thống tệp nào cả hoặc tôi được phép xác định chính xác tệp nào có thể đọc và tệp nào có thể ghi. Quyền truy cập mạng cũng được kiểm soát. Mã trong môi trường biệt lập không thể giao tiếp với bất cứ thứ gì mà không thông qua một lớp mà tôi kiểm soát hoàn toàn. Hỗ trợ tương tác với các hàm máy chủ. Một môi trường biệt lập sẽ không có nhiều tác dụng nếu tôi không thể cẩn thận hiển thị các tính năng nền tảng được chọn cho mã mà nó đang chạy. Nó phải mạnh mẽ, được hỗ trợ và tài liệu rõ ràng. Tôi đã không thể đếm được số lượng dự án thử nghiệm mà tôi từng thấy trong các kho lưu trữ với những cảnh báo rằng chúng không được duy trì tích cực! WebAssembly có vẻ rất hứa hẹn ở đây. Các trình duyệt web hoạt động trong môi trường thù địch nhất có thể tưởng tượng được khi nói đến mã độc hại. Nhiệm vụ của chúng là tải xuống và thực thi mã không đáng tin cậy từ web trên hầu hết mọi lần tải trang. Với điều này, các công cụ JavaScript phải là những ứng cử viên xuất sắc cho các hộp cát. Đáng buồn thay, những công cụ đó cũng cực kỳ phức tạp và không được thiết kế để dễ dàng nhúng vào các dự án khác. Hầu hết các dự án v8-in-Python mà tôi từng thấy đều được duy trì không thường xuyên và đi kèm với những cảnh báo không nên sử dụng chúng với mã hoàn toàn không đáng tin cậy. WebAssembly là một ứng cử viên tốt hơn nhiều. Nó được thiết kế ngay từ đầu để hỗ trợ tất cả các đặc điểm mà tôi quan tâm và đã được thử nghiệm trong các trình duyệt gần một thập kỷ. Thư viện Python wasmtime được duy trì tích cực và có các gói nhị phân (binary wheels). MicroPython trong WebAssembly Các công cụ WebAssembly như wasmtime chạy các tệp nhị phân WebAssembly. Một số ngôn ngữ lập trình như Rust dễ dàng biên dịch trực tiếp sang WebAssembly. Các ngôn ngữ động như JavaScript và Python khó hơn—chúng hỗ trợ các nguyên thủy ngôn ngữ như eval(), có nghĩa là chúng cần một trình thông dịch đầy đủ có sẵn trong thời gian chạy. Để chạy Python, chúng ta cần một trình thông dịch Python đầy đủ được biên dịch sang WebAssembly, được kết nối theo cách giúp dễ dàng cung cấp mã, kết nối các hàm máy chủ và truy cập kết quả. Pyodide cung cấp một gói nổi bật để chạy Python bằng WebAssembly trong trình duyệt, nhưng việc sử dụng Pyodide trong Python phía máy chủ không được hỗ trợ. Lời khuyên gần đây nhất mà tôi có thể tìm thấy là từ tháng 10/2024, nói rằng “Pyodide được xây dựng bởi bộ công cụ Emscripten và chỉ có thể chạy trong trình duyệt hoặc Node.js”. Hôm trước, tôi quyết định xem xét MicroPython như một lựa chọn cho việc này. Trang web MicroPython cho biết: MicroPython là một triển khai gọn nhẹ và hiệu quả của ngôn ngữ lập trình Python 3, bao gồm một tập hợp con nhỏ của thư viện chuẩn Python và được tối ưu hóa để chạy trên vi điều khiển và trong các môi trường hạn chế. WebAssembly chắc chắn giống như một môi trường hạn chế đối với tôi! Xây dựng phiên bản đầu tiên Tôi đã nhờ GPT-5.5 Pro thực hiện một số nghiên cứu cho tôi, kết quả là một PR chống lại MicroPython của Yamamoto Takahashi có tiêu đề “Hỗ trợ WASI thử nghiệm cho các cổng/unix”. Sau đó, nó đã tạo ra tài liệu research.md này, vì vậy tôi đã để Codex Desktop và GPT-5.5 tự do xử lý nó để xem điều gì sẽ xảy ra: đọc tài liệu research.md và xây dựng cái này. Bạn có thể sẽ cần viết một tập lệnh biên dịch phiên bản WASM tùy chỉnh của MicroPython như một phần của

Nguồn tin: Simon Willison. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.