· 6 min read

A design asszisztens, hogy fut az eszköz - nincs számla, nincs kiszolgáló

PinePaper on-device AI asszisztense igazi jelenetté alakít egy prompt-ot egy nyelvi modell segítségével, amely teljesen a böngésződben fut. Itt az architektúra - korlátozott szerszámhívások, két szolgáltató, és egy őszinte beszámoló arról, hogy egy apró modell mire képes és mire nem.

A feltevés

A legtöbb AI tervezési eszköz elküldi az azonnali egy szerver, fut egy nagy modell, és küldje vissza a kódot. Ahhoz kell egy számla, egy hálózati körutazás, és bízom benne, hogy a munka-a-haladás átviszi valaki más infrastruktúráját.

Tudni akartuk, milyen messzire megy a másik extrém: * * * egy design asszisztens, ahol a modell fut a saját gép. * * Nincs számla. Nincs feltöltés. A prompt soha nem hagyja el a böngészőt. Ez most élőben PinePaper szerkesztője, mint egy kísérleti * * AI / Code → Asszisztens * * tab, és ez a bejegyzés egy őszinte számla, hogyan működik, és hol esik rövid.

Miért nem kérdezed meg a modellt a kódról?

A nyilvánvaló megközelítés az, hogy kérjük meg az on-device modell írni JavaScript ellen PinePaper API és futtassa. Próbáltuk. Rosszul sikerült.

Kis modellek - amelyek illeszkednek a laptopra - nem ismerik egy adott alkalmazás API-ét. Kérjen egy 0.5-2B modellt, hogy hívja PinePaper.create() és improvizál: egy kulcs a módszer nem olvasható (egy SVG- stílus fill, ahol a API elvárja color), egy módszer, amit elképzelt, argumentumok a rossz formában. A kimenet * úgy néz ki * mint a kód és csendben csinál a rossz dolog.

Tehát nem kérünk kódot. Kérünk egy * * kényszerített listát a szerszám hívások: * *

[
  { "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" } }
]

Ugyanez a szókincs a PinePaper [MCP szerver] (/api/guides/mcp-integration) exposes to external agents - but issued by a model running local, and outputed on the text through a small distributcher.

Az érvénytelen kimenet lehetetlenné tétele

A legfontosabb lépés a dekódolás. Ahelyett, hogy azt remélnénk, hogy a modell egy érvényes formát hoz létre, korlátozzuk, hogy * milyen zsetonokat ad ki: *

  • A Chrome épületén * * Prompt API * * (Gemini Nano), a * * JSON Schema * * válaszkorlátozásként. A modell csak olyan objektumokat tud előállítani, amelyek az additionalProperties: false-val rendelkeznek, bármilyen érv, amit a séma nem definiál, szó szerint nem reprezentatív.
  • On * * WebLLM * * (egy nyílt modell fut WebGPU), mi csatoljon egy * * EBNF nyelvtant * * XGrammar-on keresztül. A nyelvtan határozza meg a szerkezetet, a modell csak az értékeket tölti ki.

Mindkettő ugyanazt az eszköz-hívás formát gyártja. Egy kis javítási hágó, majd megmenti a közel-hiányzik egy apró modell még mindig teszi - egy eldobott name, érvek nélkül a csomagolást - azzal, hogy az eszköz a vita formája. Az eredmény az, hogy "rajzoljon egy zöld pentagon" válik egy igazi create_item hívás helyett hiba.

Két szolgáltató, egy szerződés

A AI nem egy dolog - a böngészőtől függ:

      • Browser AI * * - Chrome épülete * * Gemini Nano * * (window.LanguageModel). A modell hajók a böngésző; nincs mit letölteni tőlünk. Ez ma a legmegbízhatóbb eszköz útvonal, mert a JSON- smea kényszer olcsó és jól támogatott.
      • PinePaper AI * * * * WebLLM * * Qwen2.5 modellt futtat minden WebGPU böngészőben. Egyszer letölt egy modellt (utána leadta), majd offline fut.
      • Nyelvek * * - nem-angol súgások fordítanak angol on-device először (via the browser 's built- in translator), mert a kis kódorientált modellek angol-centrikus. A generált jelenet ugyanaz, függetlenül a gyors nyelvtől.

A felhasználó kiválasztja a motort; minden lefelé - a kényszer, a végrehajtó, a vászon - azonos.

Szerkesztés, nem csak generálás

Egy egylövéses generátor nem asszisztens. A "vörös csillag" támogatásához a modellnek tudnia kell, mi van a vásznon. Tehát minden fordulat megetetjük egy kompakt pillanatképpel az aktuális tételekről - az identitásaikról, típusaikról és színekről - pontosan úgy, mint egy szerveroldalas chat. "Legyen a csillag piros", majd felbontja egy igazi modify_item hívás ellen a termék azonosítója. (És mivel egy kis modell néha a "The _ circle" -ra utal, amikor azt jelenti, hogy a csillag, a végrehajtó oldja fel bolyhos utalásokat az élő vászonra.)

A beszélgetésnaplót a helyi raktárban tároljuk. Semmit nem küldünk vele sehova - kivéve, ha kifejezetten úgy dönt, hogy megosztja sikertelen kérések, ami segít nekünk javítani a súgások és nyelvtan.

Ha a kis modell nem elég - eszkalálódik

Itt van az őszinte rész: * * a 0.5-2B modell a leggyengébb szint. * * Kényszerített dekódolási garanciák * érvényes szerkezet *, de a modell még mindig kell választani a megfelelő eszközt és értelmes értékeket, és ez nem fog mindig. Kérj egy pentagont és egy aluldefiniált modellt, ami hatszöget ad; kérj kétszer vöröset, és lehet, hogy egy generátort működtet helyette.

Tehát az építészet az eszközt, mint az első * szint, nem az egyetlen. Néhány sikertelen kísérlet után az asszisztens felajánlja, hogy feldobja az egész beszélgetést. A Cloud modellnek * * - ugyanaz a szándék, ugyanaz a vászon, sokkal rátermettebb modell - és pontosan ott folytatod, ahol abbahagytad. Alacsony hűség, szabad és privát, egy kattintással a magas hűség, ha szükség van rá.

Amit megtanultunk

      • Constraints beat sprinting. * * A földelt rendszer prompt segít; a gramma / séma, amely érvénytelen kimenetet lehetetlen segít sokkal. Az egyetlen legnagyobb megbízhatósági ugrás a korlátozott dekódolásból jött, nem egy jobb gyorsaságból.
      • Modell méret még mindig dominál. * * A 0.5B-ről az 1.5B modellre való áttérés észrevehetően javított azon, hogy az asszisztens milyen gyakran választja ki a megfelelő eszközt. Nincs olyan pillanat, ami egy apró modellt okossá változtatna.
      • A teljes nyelvtan túl nagy lehet. * * Az első nyelvtani kódolt * minden * lehetséges művelet - beleértve egy pattogatott-hossz menekülőnyílás önkényes rajzkód. Olyan nagy volt, hogy a dekódolás elakadt. A közös műveleteket lefedő kompakt nyelvtan a helyes alapértelmezés; a teljes felület opt- in.
      • Run it off the main throne. * * Egy modell, aki az UI fonalra mutat, lefagyasztja az oldalt. WebLLM fut egy Web Worker, így a szerkesztő továbbra is reagál, míg a modell betöltik és generálják.

Mi következik

Ez kísérleti és javuló. Az ütemtervről:

      • Wider tool cover in the restricted path * * - more of PinePaper 's operations expressible without the freeform escape acchange.
        • Nagyobb egy eszköz modellek * * mint WebGPU modell katalógusok nőnek, kereskedelmi letöltési méret a megbízhatóság.
      • A closer eval loop * * - opted- in failure reports to measure which prompts trip the on-device models and harden the grammar agriculture them.
      • A simább egy-eszköz → Cloud handoff * *, így eszkaláció úgy érzi, mintha felfordítja a minőségi tárcsa helyett kapcsolási eszközök.

Az átvezető vonal: ugyanaz a deklaratív eszköz szókincs vezet egy modellt mindkét oldalán a böngésző határ. Egy külső ügynök a MCP-en keresztül hívja ezeket az eszközöket; egy on-device modell helyileg ugyanazokat a formákat hívja. Egy szerződés, ügynökök, bárhol is futnak.

  • Próbáld ki a szerkesztőben - open * * AI / Code → Asszisztens * *. Ingyenes, fut a készülék, és nem kell számla. *

Ready to create?

Start making animated GIFs, videos, and graphics — free, no signup.

Open PinePaper Editor