Asisten Desain yang Berjalan pada Perangkat Anda — Tanpa Akun, Tanpa 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.
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 kecil yang cocok dengan laptop - tidak memiliki pengetahuan tentang API aplikasi tertentu.** Tanya model 0.5–2B untuk menyebut PinePaper.create() dan itu berimprovisasi: sebuah kunci metode tidak dibaca (sebuah model SVG bergaya fill di mana API mengharapkan color), sebuah metode yang dibayangkan, 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 — tetapi dipancarkan oleh model yang berjalan secara lokal, dan dieksekusi di kanvas melalui sebuah dispatcher 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:
- Prompt API(Gemini Nano), kami lulus JSON Skema sebagai kendala respon. Model ini hanya dapat menghasilkan objek izin skema — dengan
additionalProperties: false, argumen apapun skema tidak mendefinisikan secara harfiah tidak dapat direpresentasikan. - Pada *WebLLM (sebuah model terbuka yang berjalan di WebGPU), kami Masukkanlah sebuah tata bahasa **EBNF melalui 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 yang 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.
2 penyedia, 1 kontrak
AI perangkat-ofak bukan satu hal — itu tergantung pada peramban:
- **LAR AI — Krom bawaan 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.
- *Languages — Prompts non-Inggris diterjemahkan ke bahasa Inggris on-device terlebih dahulu (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 memilih mesin; segala sesuatu yang ada di hilir — kekang, pelaksana, kanvas — identik.
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, kita memberinya snapshot kompak dari item - item yang ada sekarang — id, jenis, dan warna mereka — persis seperti obrolan sisi server.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 memilih untuk berbagi prompt yang gagal, yang membantu kami meningkatkan prompt dan tata bahasa.
Ketika model kecil tidak cukup — eskalate
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 hand seluruh percakapan up Ke model Cloud — maksud yang sama, kanvas yang sama, model yang jauh lebih cakap — dan Anda melanjutkan persis di mana Anda tinggalkan. 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 yang dikodekan setiap kali kemungkinan operasi — termasuk lubang pelarian 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. WebLLM berjalan di Web Worker sehingga editor tetap responsif sementara beban model dan menghasilkan.
Apa selanjutnya
Ini adalah percobaan dan peningkatan. Pada peta jalan:
- *Wider cakupan alat dalam jalur terbatas — lebih banyak operasi PinePaper yang diekspresikan tanpa menetas freeform escape.
- ********* pada model perangkat** saat katalog model WebGPU berkembang, memperdagangkan ukuran unduhan untuk keandalan.
- ***** Sebuah loop val yang lebih ketat ***** — menggunakan laporan kegagalan opted-in untuk mengukur yang mendorong 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.
→ 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