)]}'
{"id": 6325545693478912, "name": "Prompt API Sampling Mode", "summary": "Allows developers to configure language model output variety and creativity in the Prompt API using high-level samplingMode presets. Instead of exposing raw numerical parameters like topK and temperature that vary unpredictably across models, developers can choose semantic presets ranging from \"most-predictable\" for deterministic extraction to \"most-creative\" for open-ended brainstorming. The browser maps these presets to optimal sampling hyperparameters for the underlying model, providing developers with reliable response tuning while preserving cross-browser interoperability.\n\nenum LanguageModelSamplingMode {\n  \"most-predictable\",      // For strict consistency/factual extraction\n  \"predictable\",           // For highly focused outputs\n  \"slightly-predictable\",  // For moderately focused, consistent outputs\n  \"balanced\",              // The default state for standard prompting\n  \"slightly-creative\",     // For moderately varied, expressive outputs\n  \"creative\",              // For tasks favoring variety over strict facts\n  \"most-creative\"          // For maximum token diversity and brainstorming\n};\n\nThis feature is an enhancement of the Prompt API (https://chromestatus.com/feature/5134603979063296).\n", "markdown_fields": [], "blink_components": ["Blink>AI>Prompt"], "star_count": 64, "search_tags": [], "created": {"by": "memmott@google.com", "when": "2026-03-26 21:33:06.616107"}, "updated": {"by": "iahouma@google.com", "when": "2026-11-05 23:21:12.674889"}, "category": "Miscellaneous", "category_int": 2, "feature_notes": null, "web_feature": "languagemodel", "is_official_web_feature": true, "webdx_usecounter_enum": null, "enterprise_feature_categories": [], "enterprise_product_category": 0, "is_releasenotes_content_reviewed": false, "is_releasenotes_publish_ready": false, "stages": [{"id": 6238642395807744, "created": "2026-03-26 21:33:07.685058", "feature_id": 6325545693478912, "stage_type": 110, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 6219194783891456, "created": "2026-03-26 21:33:07.732542", "feature_id": 6325545693478912, "stage_type": 120, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5118392786878464, "created": "2026-03-26 21:33:07.843948", "feature_id": 6325545693478912, "stage_type": 130, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 6287804607889408, "created": "2026-03-26 21:33:07.922117", "feature_id": 6325545693478912, "stage_type": 140, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5095469341605888, "created": "2026-03-26 21:33:07.972467", "feature_id": 6325545693478912, "stage_type": 150, "display_name": "Prompt API Sampling Parameters", "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/g/blink-dev/c/4KvH5XEBYtE", "announcement_url": null, "experiment_goals": "topK and temperature parameters were excluded from the initial Prompt API launch, due to interoperability concerns. Developers have expressed value in tuning parameters, for testing and use-case specific optimization.\n\nOur primary goal during this extension is to gather real-world usage data on the newly expanded categorical presets to see which modes developers gravitate toward most. We will use this data and developer feedback to conduct more concerted medium-term mode evaluations. Specifically, we want to evaluate developer adoption of this expanded spectrum, and validate that the new granularity effectively covers the previously identified dead zones.", "experiment_risks": null, "origin_trial_id": "4469259680211795969", "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": "AIPromptAPIParams", "ot_description": "Enable Prompt API per-session language model sampling parameters.\n\nParameter tuning is useful for testing and use-case specific model behavior optimization. This trial will explore parameters and options that satisfy developer requirements and mitigate interoperability concerns that excluded topK and temperature from the initial Prompt API launch.", "ot_display_name": "Prompt API Sampling Parameters", "ot_documentation_url": "https://github.com/webmachinelearning/prompt-api?tab=readme-ov-file#sampling-parameters", "ot_emails": ["dbogadi@google.com", "memmott@google.com", "msw@google.com"], "ot_feedback_submission_url": "https://github.com/webmachinelearning/prompt-api/issues", "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": "msw@google.com", "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": 5864, "ot_webfeature_use_counter": "kLanguageModel_Create_Temperature", "extensions": [{"id": 6261947631796224, "created": "2026-08-11 15:23:44.289767", "feature_id": 6325545693478912, "stage_type": 151, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFk4SLZXUY8FQTQQrtLHkzLnkxkgJ7XXFBhDEAQSvy6XiYKgaQ%40mail.gmail.com", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": "iahouma@google.com", "ot_requester_email": "iahouma@google.com", "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": "We are extending this experiment because we are actively iterating on the API surface based on developer feedback. During this trial, we received developer feedback requesting predictable space granularity to cover dead zones while restoring the balanced preset to  the API default parameters. We have expanded the preset enum values to cover these dead zones, and we need the extended timeline to give developers sufficient time to integrate and test these specific changes.", "ot_stage_id": 5095469341605888, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": 159, "android_last": null, "ios_last": null, "webview_last": null}], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 148, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": 153, "android_last": null, "ios_last": null, "webview_last": null, "ot_setup_status": 6}, {"id": 5098404411736064, "created": "2026-03-26 21:33:08.123384", "feature_id": 6325545693478912, "stage_type": 160, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 160, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}], "accurate_as_of": "2026-10-20 16:42:52.824619", "creator_email": "memmott@google.com", "updater_email": "iahouma@google.com", "owner_emails": ["iahouma@google.com", "msw@google.com"], "editor_emails": ["dbogadi@google.com", "dbogadi@chromium.org", "msw@chromium.org"], "cc_emails": [], "spec_mentor_emails": [], "unlisted": false, "deleted": false, "editors": ["dbogadi@google.com", "dbogadi@chromium.org", "msw@chromium.org"], "cc_recipients": [], "spec_mentors": [], "creator": "memmott@google.com", "feature_type": "New or changed feature", "feature_type_int": 0, "intent_stage": "None", "intent_stage_int": 0, "active_stage_id": 5098404411736064, "bug_url": "https://issues.chromium.org/573612811", "launch_bug_url": "https://launch.corp.google.com/launch/4515786", "new_crbug_url": "https://bugs.chromium.org/p/chromium/issues/entry?components=Blink>AI>Prompt&blocking=573612811&cc=iahouma@google.com,msw@google.com", "screenshot_links": [], "first_enterprise_notification_milestone": 148, "enterprise_impact": 1, "breaking_change": false, "confidential": false, "shipping_year": 2026, "flag_name": "prompt-api-sampling-mode", "finch_name": "AIPromptAPIParams", "non_finch_justification": null, "ongoing_constraints": "None", "rollout_plan": 0, "rollout_plan_displayname": "Will ship enabled for all users", "motivation": "Web developers using the Prompt API often need to steer response variance to match their task, such as deterministic decoding for structured data extraction, classification, and tool calling, or higher output diversity for open-ended drafting and brainstorming. Raw numerical hyperparameters (`temperature` and `topK`) were excluded from the initial Prompt API launch due to cross-browser and cross-model interoperability concerns raised during TAG review (https://github.com/w3ctag/design-reviews/issues/1093), leaving web applications with no way to tune output variability beyond default session behavior.\n\n`samplingMode` bridges this gap with seven semantic presets (`\"most-predictable\"` through `\"most-creative\"`) that express developer intent without coupling web code to a single model's hyperparameter scale. User agents map each preset to model-specific sampling configurations and can apply mode-specific inference optimizations (such as greedy speculative decoding in `\"most-predictable\"` sessions). \n\nLive interactive demo: https://isaacahouma.github.io/prompt-api-sampling-presets/", "devtrial_instructions": null, "activation_risks": null, "measurement": null, "availability_expectation": null, "adoption_expectation": null, "adoption_plan": null, "initial_public_proposal_url": "https://github.com/webmachinelearning/prompt-api/issues/203", "explainer_links": ["https://github.com/webmachinelearning/prompt-api#sampling-parameters"], "requires_embedder_support": true, "spec_link": "https://webmachinelearning.github.io/prompt-api", "api_spec": true, "automation_spec": false, "interop_compat_risks": "The original raw numerical parameters (topK and temperature) were excluded from the initial Prompt API launch due to cross-browser and cross-model interoperability concerns raised during TAG review (https://github.com/w3ctag/design-reviews/issues/1093). Replacing raw parameters with semantic samplingMode presets lets each browser map the developer's intent to appropriate model-specific sampling configurations. Based on Origin Trial feedback, the enum was refined from 5 to 7 presets to provide finer granularity across the predictable and creative spectrum while preserving cross-browser interoperability.", "all_platforms": false, "all_platforms_descr": "The Prompt API currently supports Windows, Mac, Linux, and ChromeOS.", "non_oss_deps": null, "anticipated_spec_changes": "None", "security_risks": null, "ergonomics_risks": null, "wpt": true, "wpt_descr": "Yes; the API surface is tested in https://wpt.fyi/results/ai/language-model (language-model-availability-sampling-mode.tentative.https.window.html and language-model-create-sampling-mode.tentative.https.window.html). Automated testing of sampling parameter effects on probabilistic model response is not readily feasible; instead we conduct rounds of evaluations on configuration updates.", "webview_risks": "None", "devrel_emails": ["devrel-chromestatus-all@google.com"], "debuggability": "Developers can inspect the active sampling preset on any session via the session.samplingMode attribute in the DevTools Console, and invalid LanguageModelSamplingMode values throw a descriptive TypeError.", "doc_links": [], "sample_links": ["https://isaacahouma.github.io/prompt-api-sampling-presets"], "prefixed": null, "tags": [], "tag_review": "https://github.com/w3ctag/design-reviews/issues/1093\n\nThis update directly addresses the TAG\u2019s Prompt API early design review feedback on \u201cInteroperable model parameters\u201d. We adopted TAG guidance by replacing raw hyperparameters with samplingMode presets, which enable user agents to map semantic developer intent to model-specific sampling configurations.\n\nBecause this incremental refinement directly fulfills prior TAG advice rather than a new architectural surface, a separate review is not merited.\n", "tag_review_status": "Issues addressed", "tag_review_status_int": 3, "security_review_status": "Pending", "security_review_status_int": 1, "privacy_review_status": "Pending", "privacy_review_status_int": 1, "security_continuity_id": null, "security_launch_issue_id": null, "updated_display": null, "resources": {"samples": ["https://isaacahouma.github.io/prompt-api-sampling-presets"], "docs": []}, "comments": null, "ff_views": 7, "safari_views": 7, "web_dev_views": 2, "browsers": {"chrome": {"bug": "https://issues.chromium.org/573612811", "blink_components": ["Blink>AI>Prompt"], "devrel": ["devrel-chromestatus-all@google.com"], "owners": ["iahouma@google.com", "msw@google.com"], "origintrial": false, "prefixed": null, "flag": false, "status": {"text": "Proposed", "val": 2, "milestone_str": "Proposed"}, "announced": false, "desktop": 160, "android": null, "webview": null, "ios": null}, "ff": {"view": {"url": "https://github.com/mozilla/standards-positions/issues/1213", "notes": "View reflects parent specification", "text": "Negative", "val": 7}}, "safari": {"view": {"url": "https://github.com/WebKit/standards-positions/issues/495", "notes": "View reflects parent specification", "text": "Oppose", "val": 7}}, "webdev": {"view": {"text": "Positive", "val": 2, "url": "https://github.com/webmachinelearning/prompt-api/issues/203#issuecomment-4676828673", "notes": "Relative to the current shipped baseline (no sampling control on the web, since raw temperature and topK were excluded per TAG guidance), a significant fraction of developers support adding samplingMode to steer output variance, though a subset would still prefer the raw knobs:\n\nDeveloper Demand & Surveys: When asked to compare presets directly against raw parameters, 75% of parameter-tuning Early Preview Program (EPP) respondents accepted presets (55% preferred presets outright, 20% were open to them), while 25% would still prefer raw temperature / topK floats. Interoperable presets also address concerns from EPP sign-ups, where 33% flagged \u201cCross-Engine Prompt Fragility\u201d (needing per-model tuning) and 22% cited \u201cAPI Configuration Gaps\u201d (e.g. inability to tune). The number of presets expanded from 5 to 7 options, partly in response to OT developer feedback around gaps in the predictable end of the spectrum.\n\nTelemetry: Across the modest samplingMode OT and the larger legacy (temperature & topK) Chrome extension usage, over 95% of tuned sessions opt for predictable outputs, with 75% choosing most-predictable and >60% setting equivalent parameters (temperature = 0 / topK = 1).\n\nAdoption Examples: Origin Trial partners (production e-commerce platforms, merchant website builders, and shopping extensions) and open-source projects rely on most-predictable and predictable (often paired with responseConstraint) for deterministic tasks such as catalog attribute extraction, merchant copywriting tools, intent classification, analysis of administrative procedures survey data by a governmental agency, and extraction of audio impairments from clinical report images.\n\nOther signals: The API implementation can deliver mode-specific inference speedups like Multi-Token Prediction (MTP) speculative decoding in most-predictable sessions (75% of parameter overrides, per our telemetry). This benefits users and developers by providing quicker responses while consuming less compute and power resources.\n"}}, "other": {"view": {"text": null, "val": null, "url": null, "notes": "Edge: Positive (https://github.com/webmachinelearning/prompt-api/issues/203) Microsoft confirmed the API shape is interoperable, even if backends offer less granularity. They would have liked stronger signals regarding granularity, especially on the creative side."}}}, "standards": {"spec": "https://webmachinelearning.github.io/prompt-api", "maturity": {"text": "Specification being incubated in a Community Group", "short_text": "Incubation", "val": 3}}, "is_released": false, "is_enterprise_feature": false, "experiment_timeline": null, "ai_test_eval_report": null, "ai_test_eval_run_status": null, "ai_test_eval_status_timestamp": null}