Back to Content

Summarizer: availability() static method

files/en-us/web/api/summarizer/availability_static/index.md

latest4.3 KB
Original Source

{{APIRef("Summarizer API")}}{{SeeCompatTable}}{{securecontext_header}}

The availability() static method of the {{domxref("Summarizer")}} interface returns an enumerated value that indicates whether the browser AI model supports (or will support) a given Summarizer configuration.

Syntax

js-nolint
Summarizer.availability()
Summarizer.availability(options)

Parameters

  • options {{optional_inline}}
    • : An options object specifying a possible configuration for a Summarizer. Possible values include:
      • expectedInputLanguages
        • : An array of strings equal to {{glossary("BCP 47 language tag", "BCP 47 language tags")}} specifying the expected languages of the input text. Defaults to ["en"].
      • expectedContextLanguages
        • : An array of strings equal to BCP 47 language tags specifying the expected languages of any provided context strings (either the sharedContext passed to the Summarizer, or a context specified during a {{domxref("Summarizer.summarize", "summarize()")}} or {{domxref("Summarizer.summarizeStreaming", "summarizeStreaming()")}} call). Defaults to ["en"].
      • format
        • : An enumerated value specifying the text {{domxref("Summarizer.format", "format")}} you want summaries returned in. Defaults to markdown.
      • length
        • : An enumerated value specifying the relative {{domxref("Summarizer.length", "length")}} for the generated summaries. Defaults to short.
      • outputLanguage
        • : A string equal to a BCP 47 language tag specifying the expected language of summaries generated by the Summarizer. Defaults to en.
      • type
        • : An enumerated value specifying the {{domxref("Summarizer.type", "type")}} of summary you want this Summarizer to generate. Defaults to key-points.

Return value

A {{jsxref("Promise")}} that fulfills with an enumerated value indicating whether support is available (or will be available) for a given Summarizer configuration, or null if support could not be determined.

Possible values include:

  • available
    • : The browser supports the given configuration and can be used immediately.
  • downloadable
    • : The browser supports the given configuration, but it first needs to download an AI model, or some fine-tuning data for the model.
  • downloading
    • : The browser supports the given configuration, but it needs to finish an ongoing download before it can proceed.
  • unavailable
    • : The browser does not support the given configuration.

Exceptions

  • NotAllowedError {{domxref("DOMException")}}
    • : Thrown if usage of the Summarizer API is blocked by a {{httpheader('Permissions-Policy/summarizer','summarizer')}} {{httpheader("Permissions-Policy")}}.
  • NotSupportedError {{domxref("DOMException")}}
    • : Thrown if the provided context is not in language the Summarizer supports.
  • UnknownError {{domxref("DOMException")}}
    • : Thrown if the measureInputUsage() call failed for any other reason, or a reason the user agent did not wish to disclose.

Examples

Basic availability() usage

js
async function getSummarizer() {
  const options = {
    sharedContext: "This is a scientific article",
    type: "key-points",
    format: "markdown",
    length: "medium",
  };

  const availability = await Summarizer.availability(options);
  if (availability === "unavailable") {
    // The Summarizer API isn't usable
    return undefined;
  } else if (availability === "available") {
    // The Summarizer API can be used immediately
    return Summarizer.create(options);
  }
  // The Summarizer API can be used after the model is downloaded
  const summarizer = await Summarizer.create(options);
  summarizer.addEventListener("downloadprogress", (e) => {
    console.log(`Downloaded ${e.loaded * 100}%`);
  });
  return summarizer;
}

Detecting language support

js
async function langSupport(lang) {
  const availability = await Summarizer.availability({
    expectedInputLanguages: [lang],
  });
  return availability;
}

langSupport("en-US");
langSupport("fr");
langSupport("zh-CN");

Specifications

{{Specifications}}

Browser compatibility

{{Compat}}

See also