Asisten Desain yang Berjalan pada Perangkat Anda — Tak Ada Akun, Tak Ada Server
Asisten PinePaper on-device AI mengubah sebuah prompt menjadi adegan nyata menggunakan model bahasa yang sepenuhnya berjalan di peramban Anda. Ini adalah arsitektur — panggilan alat terbatas, dua penyedia, dan akun jujur tentang apa yang bisa dan tidak bisa dilakukan model kecil.
On this page
Kepura-puraan
Kebanyakan peralatan desain AI mengirim promo Anda ke server, menjalankan model besar, dan mengirim kode kembali. Itu perlu akun, jaringan round-trip, dan percaya bahwa pekerjaan Anda-in-progres transit infrastruktur orang lain.
Kami ingin tahu seberapa jauh ekstrim lainnya pergi: a asisten desain di mana model berjalan pada mesin Anda sendiri. Tak ada akun. Tak ada upload. Menyambut tidak pernah meninggalkan browser. Ini sekarang tinggal di editor PinePaper sebagai eksperimental AI / Code → Assistant tab, dan posting ini merupakan akun jujur tentang cara kerjanya dan di mana ia jatuh pendek.
Mengapa tidak meminta kode model saja?
Pendekatan yang jelas adalah untuk meminta model on-device untuk menulis JavaScript terhadap PinePaper API dan menjalankannya. Kami mencobanya. Ini gagal buruk.
Model - model yang kecil — orang - orang yang cocok dengan laptop — *tidak memiliki pengetahuan mengenai API aplikasi tertentu Tanya model 0.5–2B untuk memanggil PinePaper.create() dan itu improvisasi: sebuah kunci metode tidak dibaca (sebuah model SVG bergaya fill di mana API mengharapkan color), sebuah metode yang dibayangkannya, argumen dalam bentuk yang salah. Keluaran terlihat seperti kode dan diam-diam melakukan hal yang salah.
Jadi kita tidak meminta kode. Kami meminta untuk daftar constrained panggilan alat:
[
{ "name": "pinepaper_set_background_color", "arguments": { "color": "#0F0F1A" } },
{ "name": "pinepaper_create_item", "arguments": { "itemType": "star", "x": 400, "y": 300, "radius": 90, "color": "#E74C3C", "animationType": "pulse" } }
]
Kosa kata yang sama PinePaper server MCP mengekspos ke agen eksternal — namun dipancarkan oleh model berjalan lokal, dan dieksekusi di kanvas melalui sebuah pengiriman kecil.
Tak mungkin membuat output tidak sah
Pengalihan kunci constrained decoding. Alih-alih berharap model menghasilkan bentuk yang valid, kita membatasi tanda apa yang bahkan diperbolehkan untuk memancarkan:
- Pada bawaan Krom Prompt API (Gemini Nano), kita lulus *JSON Skema sebagai kendala respon. Model ini hanya dapat menghasilkan objek izin skema — zafine dengan
additionalProperties: false, argumen apapun skema tidak mendefinisikan secara harfiah tidak terwakili. - PadaWebLLM(model terbuka yang berjalan pada WebGPU), kami melampirkan*EBNF tatabahasa via XGrammar. Tata bahasa tata bahasa mendikte struktur; model hanya mengisi nilai.
Kedua-duanya menghasilkan bentuk tool-call yang sama. Sebuah pas perbaikan kecil kemudian menyelamatkan dekat hilang model kecil masih membuat — sebuah name dijatuhkan, argumen tanpa pembungkus mereka — dengan menyimpulkan alat dari bentuk argumen. Hasil yang dihasilkan adalah "draw pentagon hijau" menjadi panggilan create_item nyata alih-alih kesalahan.
Tukar antara tiga di bawah. Dua pilihan terbatas terlihat sama pada tujuan: itu adalah klaim. Apa yang berubah antara mereka adalah mekanisme, bukan hasil.
2 penyedia, 1 kontrak
On-device AI bukan satu hal — itu tergantung pada peramban:
- *Layar AI — Krom terbina-dalam Gemini Nano (
window.LanguageModel). Kapal model dengan peramban, tak ada yang bisa diunduh dari kita. Ini adalah jalur on-device yang paling diandalkan hari ini, karena kendala JSON-schema murah dan didukung dengan baik. - *PinePaper AI — **WebLLM menjalankan model Qwen2.5 dalam peramban WebGPU manapun. Ia mengunduh sebuah model sekali (dicached setelahnya), kemudian berjalan luring.
- ***** — prompt-promps non-Inggris diterjemahkan ke bahasa Inggris on-device pertama (via the browser's built-in penterjemah), karena model-model yang berorientasi kode kecil adalah bahasa Inggris-sentris. Adegan yang dihasilkan adalah sama terlepas dari bahasa prompt.
Penggunanya mengambil mesinnya; semuanya ke hilir — kekangan, pelaksana, kanvas — kesamaan.
Menyunting, bukan hanya menghasilkan
Seorang generator satu tembakan bukan asisten. Untuk mendukung "membuat bintang merah," model perlu tahu apa yang sudah ada di kanvas. Jadi masing-masing giliran kita memberinya snapshot kompak dari item saat ini — jenis, jenis, dan warna mereka — persis seperti server-side chatting akan. MakeBuat bintang merah" kemudian menyelesaikan untuk panggilan modify_item nyata terhadap id item. Dan karena sebuah model kecil kadang-kadang merujuk ke "the circle" ketika berarti bintang, pelaksana menyelesaikan referensi kabur terhadap kanvas hidup.)
Log percakapannya disimpan di gudang lokal. Tak ada yang dikirim ke mana pun kecuali anda secara eksplisit opt dalam untuk berbagi prompt yang gagal, yang membantu kami meningkatkan promms dan tata bahasa.
Ketika model kecil tidak cukup - perancis
Ini bagian yang jujur: a model 0.5–2B adalah tier terlemah. Keterbatasan decoding jaminan strukturvalid, tetapi model masih harus memilih alat yang tepat dan nilai yang masuk akal, dan tidak akan selalu. Tanya untuk pentagon dan model yang dinyatakan di bawah memberikan hexagon; minta dua kali untuk Øred" dan mungkin menjalankan generator sebagai gantinya.
Jadi arsitektur memperlakukan on-device sebagai pertama tier, bukan satu-satunya. Setelah beberapa upaya gagal asisten menawarkan untuk menyerahkan seluruh percakapan sampai ke model Cloud — niat yang sama, kanvas yang sama, model yang jauh lebih mampu — dan kau melanjutkan persis di mana kau pergi. Rendah kesetiaan, bebas dan pribadi, dengan satu-klik jalur ke kesetiaan tinggi ketika Anda membutuhkannya.
Apa yang telah kita pelajari
- *Constraints mengalahkan promting. A prompt sistem grounded membantu; tata bahasa/ skema yang membuat keluaran tidak sah tidak mungkin membantu jauh lebih banyak. Lompatan keandalan tunggal terbesar datang dari decoding terbatas, bukan dari prompt yang lebih baik.
- *Model ukuran masih mendominasi. Dari 0.5B ke model 1.5B terlihat jauh lebih baik seberapa sering asisten memilih alat yang tepat. Tidak ada pemberitahuan yang mengubah model kecil menjadi yang cerdas.
- *Tata bahasa penuh bisa terlalu besar Tata bahasa pertama kami dikode *setiap operasi yang mungkin — dia termasuk pintu keluar panjang batas untuk kode gambar sewenang-wenang. Itu begitu besar yang dibatasi decoding terhenti halaman. Tata bahasa kompak yang meliputi operasi umum adalah standar yang tepat; permukaan penuh opt-in.
- Larikan dari benang utama.* Model yang melakukan inferensi pada benang UI membekukan halaman. Wadier WebLLM berjalan di Web Worker sehingga editor tetap responsif sementara beban model dan menghasilkan.
Apa selanjutnya
Ini adalah percobaan dan peningkatan. Pada peta jalan:
- *cakupan peralatan dalam jalur terbatas — lebih banyak operasi PinePaper yang dapat diekspresikan tanpa menetas freeform escape.
- *******pada model perangkat saat katalog model WebGPU berkembang, memperdagangkan ukuran unduhan untuk keandalan.
- [********** ********** ***** *********] — menggunakan laporan kegagalan opted-in untuk mengukur yang meminta perjalanan model on-device dan mengeraskan tata bahasa terhadap mereka.
- **A lebih halus on-device → A Cloud handoff, jadi eskalasi terasa seperti muncul dial kualitas daripada beralih alat.
Kata kerja melalui baris: kosakata alat deklaratif yang sama memacu model di kedua sisi batas peramban. Sebuah agen eksternal menyebut alat-alat ini atas MCP; sebuah model on-device menyebut bentuk yang sama secara lokal. Satu kontrak, agen dimanapun mereka lari.
*Cobalah dalam editor — BukaAI / Kode → Asisten. Ini gratis, berjalan pada perangkat Anda, dan tidak perlu akun.
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor