Chrome AI Prompt Chat Playground
Test de experimentele ingebouwde Chrome Prompt API (LanguageModel) rechtstreeks in uw browser. Stuur prompts naar Gemini Nano on-device, configureer een systeemprompt en bemonsteringparameters, bekijk reacties in real-time streamen en controleer het downloaden van modellen en het gebruik van contextvensters — geen server vereist.
Readme
Wat is de Prompt API?
De Prompt API is een experimenteel webplatformvoorstel van de W3C Web Machine Learning Community Group dat een door de browser geleverd groot taalmodel aan JavaScript blootstelt via een window.LanguageModel-interface. Pagina's maken een sessie aan met LanguageModel.create(), configureren deze optioneel met een systeemprompt, en roepen vervolgens prompt() of promptStreaming() aan om een antwoord te krijgen.
In tegenstelling tot het aanroepen van een gehoste LLM API, wordt het model op het apparaat van de gebruiker uitgevoerd. Dit betekent dat invoer nooit de machine verlaat, de pagina offline werkt zodra het model in cache is opgeslagen, en er geen kosten per aanvraag zijn. In Chrome is het onderliggende model Gemini Nano, maar de API is opzettelijk modelonafhankelijk zodat andere browsers verschillende implementaties kunnen gebruiken.
Een sessie is stateful: deze houdt de gespreksgeschiedenis bij binnen een contextvenster gemeten in tokens. Wanneer het venster vol raakt, worden de oudste niet-systeemberichten automatisch verwijderd (een contextoverflow-event wordt geactiveerd), en u kunt op elk moment session.contextUsage en session.contextWindow inspecteren om te zien hoeveel ruimte er nog over is.
Gereedschapbeschrijving
Deze speelplaats is een interactief chatoppervlak gekoppeld aan window.LanguageModel. Hiermee kunt u een systeemprompt instellen, berichten verzenden en het model in realtime tokens terug zien streamen. Een voortgangsbalk toont de beschikbaarheid van het model en downloadvoortgang, en een token-gebruiksbalk rapporteert hoeveel van het contextvenster van de sessie wordt verbruikt.
De sessie wordt lui gemaakt bij de eerste verzending en opnieuw gebruikt voor berichten totdat u de systeemprompt wijzigt. Op dat moment wordt deze vernietigd en wordt een nieuwe sessie gemaakt met de nieuwe instructies.
Functies
- Streamingresponsen — gebruikt
promptStreaming()zodat tokens in de chat verschijnen wanneer deze worden geproduceerd. - Systeemprompteditor — definieer een blijvende rol of gedrag dat elk antwoord bepaalt.
- Stopknop — onderbreek een actieve prompt met een
AbortControllerzonder de sessie af te breken. - Live contextgebruik — visualiseert
contextUsagetegencontextWindowzodat u kunt zien wanneer het gesprek bijna overloopt. - Beschikbaarheid en downloadvoortgang — toont
availability()-status endownloadprogress-events terwijl het model wordt opgehaald.
Gebruiksscenario's
- Prompts lokaal uitproberen — itereer op systeemprompts en few-shot-patronen zonder voor een cloud-API te betalen.
- On-device AI-haalbaarheid testen — controleer of de Prompt API beschikbaar is, zie hoe groot het contextvenster is, en benchmark de reactiesnelheid op uw hardware.
- Privacy-gevoelige concepten — brainstorm of herformuleer tekst die niet naar een server van derden moet worden verzonden.
Vereisten
- Een browser die de Prompt API implementeert. Chrome 138+ stelt deze experimenteel bloot; in oudere versies moet u deze mogelijk inschakelen via
chrome://flags/#prompt-api-for-gemini-nanoen het on-device model downloaden. - Een veilige context (HTTPS of
localhost). - Een apparaat dat voldoet aan de hardwarevereisten van het model (voldoende schijfruimte, RAM en een ondersteunde GPU/CPU). Op niet-ondersteunde apparaten retourneert
availability()unavailable. - Initiële bandbreedte om het model te downloaden. Volgende sessies hergebruiken het gecachte model.
Hoe het werkt
- Bij het laden controleert het gereedschap
typeof window.LanguageModel. Indien afwezig, vervangt een waarschuwing de chatinvoer. LanguageModel.availability()rapporteert een vanavailable,downloadable,downloadingofunavailable. Het resultaat wordt weergegeven in de voortgangsbalk.- De eerste keer dat u op Verzenden drukt, roept het gereedschap
LanguageModel.create()aan met eenmonitordiedownloadprogress-events naar de UI streamt. Als een systeemprompt is ingesteld, wordt deze doorgegeven viainitialPrompts: [{ role: "system", content: ... }]. - Het gebruikersbericht wordt verzonden via
session.promptStreaming(text, { signal }). De geretourneerdeReadableStream<string>wordt chunk voor chunk verbruikt en toegevoegd aan het assistentbericht. - Na elk antwoord worden
session.contextUsageensession.contextWindowgelezen en weergegeven in de token-gebruiksbalk. - Als u op Stop drukt, roept u
controller.abort()aan, waardoor de actieve stream wordt afgewezen met eenAbortErrorterwijl de sessie actief blijft voor de volgende prompt. - Het bewerken van de systeemprompt maakt de gecachte sessie ongeldig: de bestaande sessie wordt
destroy()-ed en de volgende verzending maakt een nieuwe sessie met de bijgewerkte instructies.
Opties uitgelegd
- Systeemprompt — een vrije-vormsinstructie doorgegeven als het eerste bericht met
system-rol. Dit bepaalt alle volgende beurten. Als u dit leeg laat, wordt een sessie zonder systeembericht gemaakt. - Verzenden / Stoppen — Verzenden verzendt de invoer als een
user-bericht. Stoppen onderbreekt de streamingrespons zonder eerdere berichten te verwijderen. - Tokengebruik —
used / totaltokens voor de huidige sessie. Wanneeruseddicht bijtotalkomt, worden oudere gebruiker/assistent-paren bij de volgende prompt verwijderd. - Modelstatus — gecombineerde weergave van
availability()endownloadprogress. Terwijl het model wordt gedownload, wordt de balk geanimeerd en wordt een percentage weergegeven.
Beperkingen
- De Prompt API is experimenteel. Methodenamen, opties (bijv.
inputUsagevscontextUsage) en event-semantiek kunnen tussen Chrome-releases veranderen. - Uitvoerkwaliteit, feitelijkheid en instructieopvolging hangen volledig af van het door de browser geleverde model en zijn niet gegarandeerd.
- Het contextvenster is klein in vergelijking met gehoste LLM's. Lange gesprekken zullen overstromen en de vroegste beurten stilzwijgend verwijderen.
- De API wordt niet blootgesteld aan webworkers en kan Permissions Policy (
language-model)-delegatie op cross-origin iframes vereisen. - Dit gereedschap stelt opzettelijk niet
temperature,topK, toolgebruik, multimodale invoer, gestructureerde uitvoer (responseConstraint) of sessie-klonen bloot. Deze maken deel uit van de specificatie maar worden uit de speelplaats gehouden om gericht op gewoon chatten te blijven.
Veelgestelde vragen
Waarom zegt het dat de API niet wordt ondersteund?
window.LanguageModel is niet gedefinieerd in uw browser. Probeer de nieuwste Chrome op desktop en schakel, indien nodig, de Prompt API-vlag in en wacht tot het on-device model wordt gedownload via chrome://components.
Waarom is het eerste antwoord traag? De eerste aanroep kan een modeldownload (bekijk de voortgangsbalk) en een sessie-aanmaakstap activeren. Latere prompts hergebruiken dezelfde sessie en beginnen bijna onmiddellijk met streamen.
Verlaat mijn prompt het apparaat? Nee. Het model wordt lokaal uitgevoerd. Uw tekst wordt door dit gereedschap niet naar enige server verzonden.
Wat gebeurt er wanneer de context vol raakt?
De sessie activeert een contextoverflow-event en verwijdert de oudste niet-systeembeurten om ruimte vrij te maken. De systeemprompt blijft behouden.
Waarom is de antwoordstijl halverwege het gesprek veranderd toen ik de systeemprompt wijzigde? Het bewerken van de systeemprompt vernietigt de huidige sessie en maakt een nieuwe sessie aan bij de volgende verzending. De nieuwe sessie heeft geen geheugen van eerdere beurten.