· 5 min read

Suunnitteluassistentti, joka toimii laitteessasi Ei tiliä, ei palvelinta

PinePaper:n on-device AI-assistentti kääntää pikaviestin todelliseksi kohtaukseksi käyttäen kielimallia, joka toimii kokonaan selaimessasi. Tässä on arkkitehtuuri ... Rajoitettu työkalupuhelut, kaksi tarjoajaa, ja rehellinen selvitys siitä, mitä pieni malli voi ja ei voi tehdä.

Lähtökohta

Useimmat AI design työkalut lähettää pyynnön palvelimelle, ajaa suuri malli, ja lähettää koodin takaisin. Se tarvitsee tilin, verkon kiertomatkan ja luottaa siihen, että työsi kulkee jonkun muun infrastruktuurin kautta.

Halusimme tietää, kuinka pitkälle toinen äärimmäisyys menee: suunnittelija, jossa malli toimii omalla koneellasi. Ei tiliä. Ei latausta. Raketti ei koskaan poistu selaimesta. Tämä on nyt livenä PinePaper:n editorissa kokeellisena AI / Code → Assistant -välilehtenä, ja tämä viesti on rehellinen selvitys siitä, miten se toimii ja missä se jää vajaaksi.

Miksei mallilta kysytä koodia?

Ilmeinen lähestymistapa on pyytää laitteen mallin kirjoittaa JavaScript vastaan PinePaper API ja ajaa se. Kokeilimme sitä. Se epäonnistuu pahasti.

Pienet mallit ne, jotka sopivat kannettavaan tietokoneeseen ei tietoa tietyn sovelluksen API. Pyydä 0.5..2B-malli soittaa PinePaper.create() ja se improvisoi: avain menetelmä ei lue (PG2X-tyylinen fill jossa API odottaa color), menetelmä se kuvitteli, argumentteja väärässä muodossa. Tuotos * näyttää* koodilta ja hiljaa tekee väärin.

Joten emme pyydä koodia. Pyydämme harjaantunutta listaa työkalupuheluista:

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

Sama sanasto PinePaper:n MCP-palvelin altistaa ulkoisille aineille mutta lähettää mallin, joka toimii paikallisesti, ja suoritetaan kankaalla läpi pienen lähetin.

Virheellisen ulostulon tekeminen mahdottomaksi

Avainliike on rajoitettu dekoodaus. Sen sijaan, että toivoisimme mallin tuottavan kelvollisen muodon, rajoitamme mitä merkkejä se saa jopa lähettää:

  • Chromen sisäänrakennetulla Prompt API (Gemini Nano), JSON Schema on vastausrajoitus. Malli voi tuottaa vain esineitä, jotka skeema sallii additionalProperties: false:n kanssa kaikki argumentit, joita skeema ei määrittele, ovat kirjaimellisesti edustamattomia.
  • WebLLM (avoin malli käynnissä WebGPU), liitämme ** ** EBNF kielioppi** XGammar. Kielioppi sanelee rakenteen; malli täyttää vain arvot.

Molemmat tuottavat saman työkalu-kutsun muodon. Pieni korjauspassi sitten pelastaa läheltä piti pieni malli tekee vielä pudotettu name, argumentit ilman käärettä päättelemällä työkalun argumenttimuoto. Tuloksena on, että "vedä vihreä pentagon" tulee todellinen create_item puhelu sijasta virhe.

Vaihda alla olevien kolmen välillä. Kaksi rajoitettua vaihtoehtoa näyttävät samanlaisilta tarkoitus: se on vaatimus. Mitä muutoksia niiden välillä on mekanismi, ei lopputulos.

Interactive demo — open in editor pp:PinePaper

Kaksi tarjoajaa, yksi sopimus

AI ei ole yksi asia se riippuu selaimesta:

  • Selain AI Kromen sisäänrakennettu Gemini Nano (window.LanguageModel). Mallialukset selaimella, ei ole mitään ladattavaa meiltä. Tämä on luotettavin on-device polku tänään, koska JSON-schema rajoitus on halpa ja hyvin tuettu.
  • PPinePaper AI WebLLM ajaa Qwen2.5-mallia missä tahansa WebGPU-selaimessa. Se lataa mallin kerran (kätketty sen jälkeen), sitten toimii pois päältä.
  • Kielet ei-englantilainen kehotukset käännetään Englanti on-laite ensin (selaimen sisäänrakennettu kääntäjä), koska pienet koodi suuntautunut mallit ovat Englanti-keskeisiä. Luotu kohtaus on sama riippumatta nopea kieli.

Käyttäjä poimii moottorin; kaikki alavirtaan rajoite, teloittaja, kangas on identtinen.

Muokkaaminen, ei vain tuottaa

Yhden laukauksen generaattori ei ole avustaja. Jotta "tehdään tähti punaiseksi," mallin on tiedettävä, mitä kankaalla on jo. Joten jokainen kierros syötämme sille kompaktin kuvan nykyisistä kohteista niiden tunnisteet, tyypit, ja värit aivan kuten palvelinpuoleinen keskustelu. "Tee tähti punainen" sitten ratkaisee todellinen modify_item puhelu vastaan kohteen ID. (Ja koska pieni malli joskus viittaa " circle," kun se tarkoittaa tähteä, toimeenpanija ratkaisee sumea viittaukset live kankaalle.)

Keskusteluloki säilytetään laitteessa paikallisessa muistissa. Mitään siitä ei lähetetä minnekään ellet nimenomaisesti halua jakaa epäonnistuneita kehotuksia, mikä auttaa meitä parantamaan kehotuksia ja kielioppia.

Kun pieni malli ei riitä suurenna

Tässä on rehellinen osa: ** 0.5 Rajoitetut dekoodaustakeet voimakas rakenne, mutta mallin täytyy silti valita oikea työkalu ja järkevät arvot, eikä se aina. Pyydä Pentagon ja alle määritelty malli antaa sinulle kuusikulmio; kysy kahdesti "punainen" ja se voi ajaa generaattori sijaan.

Joten arkkitehtuuri kohtelee on-laite ensimmäinen taso, ei ainoa. Muutaman epäonnistuneen yrityksen jälkeen avustaja tarjoutuu antamaan koko keskustelun pilvimallille** sama tarkoitus, sama kangas, paljon kyvykkäämpi malli ja sinä jatkat siitä, mihin jäit. Alhainen uskollisuus, vapaa ja yksityinen, yhdellä napsautuksella polku korkea uskollisuus kun sitä tarvitaan.

Mitä opimme

  • Vaatimukset voittavat kehotuksen. Maadoitettu järjestelmäkeho auttaa; kielioppi/kaavio, joka tekee virheellisen ulostulon mahdottomaksi auttaa paljon enemmän. Suurin yksittäinen luotettavuushyppy tuli rajoitetusta dekoodauksesta, ei paremmasta ripeydestä.
  • Mallin koko hallitsee edelleen. Siirtyminen 0.5B-mallista 1.5B-malliin paransi huomattavasti sitä, kuinka usein avustaja valitsee oikean työkalun. Ei ole mitään vihjettä, joka tekisi pienestä mallista älykkään.
  • Koko kielioppi voi olla liian suuri. Ensimmäinen kielioppi koodattu * jokainen * mahdollinen toiminta .. mukaan luettuna rajoitettu pakoluukku mielivaltaista piirustuskoodia varten. Se oli niin suuri, että rajoitettu dekoodaus pysäytti sivun. Kompakti kielioppi, joka kattaa yhteiset toiminnot, on oikea oletus; koko pinta on opt-in.
  • Ota se pois päälangasta. Malli tekee johtopäätöksen käyttöliittymän lanka jäädyttää sivun. WebLLM toimii Web Worker joten editori pysyy reagoiva kun malli kuormittaa ja tuottaa.

Mitä seuraavaksi

Tämä on kokeellista ja parantaa. Etenemissuunnitelma

  • Laaja työkalujen kattavuus rajoitetulla reitillä enemmän PinePaper:n toimintaa ilmaistavissa ilman vapaata pakoluukkua.
  • Suurimmat laitemallit kun WebGPU-mallistot kasvavat, ne vaihtavat latauskoon luotettavuutta varten.
  • tiukempi aikasilmukka käyttämällä valid-in epäonnistumisilmoituksia mitata, joka johtaa trip on-device malleja ja kovettaa kielioppia niitä vastaan.
  • Sileämpi laite → Pilviluovutus, joten eskalaatio tuntuu käännökseltä laatuvalinnan sijaan.

Läpiviiva: sama ilmaisutyökalu sanasto ajaa mallin molemmin puolin selaimen rajan. Ulkopuolinen agentti kutsuu näitä työkaluja MCP:n kautta; laitemalli kutsuu samoja muotoja paikallisesti. Yksi sopimus, agentteja kaikkialla.

Kokeile sitä editorissa open AI / Code → Assistentti. Se on ilmainen, toimii laitteellasi, eikä tarvitse tiliä.

Ready to create?

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

Open PinePaper Editor