Compartir a través de


Resumir, escribir y reescribir texto con las API de asistencia para escritura

Las API de asistencia para escritura son API web experimentales que permiten resumir, escribir y reescribir texto mediante un modelo de lenguaje pequeño (SLM) integrado en Microsoft Edge, a partir del código JavaScript de la extensión del sitio web o del explorador.

Para obtener información introductoria sobre summarizer API, Writer API y Rewriter API, consulte Writing Assistance API Explainer.

Contenido detallado:

Disponibilidad de las API de asistencia para escritura

Las API Summarizer, Writer y Rewriter están disponibles como versión preliminar para desarrolladores en los canales Canary o Dev de Microsoft Edge, a partir de la versión 138.0.3309.2.

Las API de asistencia para escritura están optimizadas para tareas específicas para generar, modificar y resumir contenido de texto. Para obtener más información sobre una alternativa para escenarios de ingeniería de avisos más personalizados que pueden no ser atendidos por estas API, consulte Preguntar un modelo de lenguaje integrado con prompt API.

Alternativas y ventajas de las API de asistencia para escritura

Para aprovechar las funcionalidades de inteligencia artificial en sitios web y extensiones de explorador, también puede usar los métodos siguientes:

Las API de asistencia para escritura usan un modelo de lenguaje pequeño (SLM) que se ejecuta en el mismo dispositivo donde se usan las entradas y salidas del modelo (es decir, localmente). Esto tiene las siguientes ventajas en comparación con las soluciones basadas en la nube:

  • Costo reducido: No hay ningún costo asociado con el uso de un servicio de inteligencia artificial en la nube.

  • Independencia de red: Más allá de la descarga del modelo inicial, no hay latencia de red al solicitar el modelo y también se puede usar cuando el dispositivo está sin conexión.

  • Privacidad mejorada: La entrada de datos al modelo nunca sale del dispositivo y no se recopila para entrenar modelos de inteligencia artificial.

Las API de asistencia para escritura usan un modelo proporcionado por Microsoft Edge y integrado en el explorador, que incluye las ventajas adicionales sobre las soluciones locales personalizadas, como las basadas en WebGPU, WebNN o WebAssembly:

  • Costo compartido de una sola vez: El modelo proporcionado por el explorador se descarga la primera vez que se llama a la API y se comparte entre todos los sitios web que se ejecutan en el explorador, lo que reduce los costos de red para el usuario y el desarrollador.

  • Uso simplificado para desarrolladores web: El modelo integrado se puede ejecutar mediante API web sencillas y no requiere experiencia en inteligencia artificial o aprendizaje automático ni el uso de marcos de trabajo de terceros.

Modelo Phi-4-mini

Prompt API le permite solicitar Phi-4-mini, un potente modelo de lenguaje pequeño que destaca en las tareas basadas en texto, integrado en Microsoft Edge. Para obtener más información sobre Phi-4-mini y sus capacidades, consulte la tarjeta modelo en microsoft/Phi-4-mini-instruct.

Aviso de declinación de responsabilidades

Al igual que otros modelos de lenguaje, la familia de modelos Phi puede comportarse potencialmente de maneras injustas, poco confiables o ofensivas. Para obtener más información sobre las consideraciones de inteligencia artificial del modelo, consulte Consideraciones de IA responsable.

Requisitos de hardware

La versión preliminar del desarrollador de Prompt API está diseñada para funcionar en dispositivos con funcionalidades de hardware que generan salidas SLM con una calidad y latencia predecibles.

La API de aviso está limitada actualmente a:

  • Sistema operativo: Windows 10 o 11 y macOS 13.3 o posterior.

  • Almacenamiento: Al menos 20 GB disponibles en el volumen que contiene el perfil de Edge. Si el almacenamiento disponible cae por debajo de 10 GB, el modelo se eliminará para asegurarse de que otras características del explorador tengan espacio suficiente para funcionar.

  • GPU: 5,5 GB de VRAM o más.

  • Red: Plan de datos ilimitado o conexión sin medidor. El modelo no se descarga si se usa una conexión de uso medido.

Para comprobar si el dispositivo admite la versión preliminar para desarrolladores de las API de asistencia para escritura, consulte Habilitar las API de asistencia para escritura a continuación y comprobar la clase de rendimiento del dispositivo.

Debido a la naturaleza experimental de las API de asistencia para escritura, es posible que observe problemas en configuraciones de hardware específicas. Si ve problemas en configuraciones de hardware específicas, proporcione comentarios abriendo un nuevo problema en el repositorio MSEdgeExplainers.

Disponibilidad del modelo

Se necesitará una descarga inicial del modelo la primera vez que un sitio web llame a una API de inteligencia artificial integrada. Puede supervisar la descarga del modelo mediante la opción de supervisión al crear una nueva sesión de Summarizer, Writer o Rewriter API. Para más información, consulte Supervisión del progreso de la descarga del modelo, a continuación.

Habilitación de las API de asistencia para escritura

Para usar cualquiera de las API de asistencia para escritura en Microsoft Edge:

  1. Asegúrese de que usa la versión más reciente de Microsoft Edge Canary o Dev (versión 138.0.3309.2 o posterior). Consulte Convertirse en un insider de Microsoft Edge.

  2. En Microsoft Edge Canary o Dev, abra una nueva pestaña o ventana y vaya a edge://flags/.

  3. En el cuadro de búsqueda, en la parte superior de la página:

    • Para habilitar summarizer API, escriba Summarizeation API for Phi mini.
    • Para habilitar writer API, escriba Writer API for Phi mini.
    • Para habilitar rewriter API, escriba Rewriter API for Phi mini.

    La página se filtra para mostrar la marca coincidente.

  4. Seleccione Habilitado junto a la marca de la API que desea habilitar:

    Página Marcas del explorador

  5. Opcionalmente, para registrar información localmente que puede ser útil para los problemas de depuración, habilite también la marca Habilitar en los registros de depuración del modelo de IA del dispositivo .

  6. Reinicie Microsoft Edge Canary o Dev.

  7. Para comprobar si el dispositivo cumple los requisitos de hardware de la versión preliminar para desarrolladores de las API de asistencia para escritura, abra una nueva pestaña, vaya a edge://on-device-internalsy compruebe el valor de clase De rendimiento del dispositivo .

    Si la clase de rendimiento del dispositivo es alta o mayor, las API de asistencia para escritura deben admitirse en el dispositivo. Si sigue observando problemas, presente un nuevo problema.

Consulte ejemplos de trabajo

Para ver las API de asistencia para escritura en acción y revisar el código existente que usa estas API:

  1. Habilite las API de asistencia para escritura, como se describió anteriormente.

  2. En el explorador Microsoft Edge Canary o Dev, abra una pestaña o ventana y vaya al área de juegos de IA integrada.

  3. En el panel de navegación izquierdo:

    • Para la API Summarizer, haga clic en Summarizer.
    • En Writer API, haga clic en Escritor.
    • En Rewriter API, haga clic en Rewriter.
  4. En el banner de información de la parte superior, compruebe el estado: inicialmente lee Descarga del modelo, espere:

    Indicador de estado que muestra el progreso de descarga del modelo

    Una vez descargado el modelo, el banner de información lee API y modelo listos, lo que indica que se pueden usar la API y el modelo:

    Indicador de estado que muestra la API y el modelo listos

    Si no se inicia la descarga del modelo, reinicie Microsoft Edge e inténtelo de nuevo.

    Las API de asistencia para escritura solo se admiten en dispositivos que cumplen determinados requisitos de hardware. Para obtener más información, consulte Requisitos de hardware, anteriormente.

  5. Para ejecutar las API, cambie opcionalmente la configuración de las páginas del área de juegos, como el texto para resumir, escribir o reescribir, o la longitud y el formato de la salida esperada.

  6. Haga clic en el botón Resumir, Escribir o Reescribir , en la parte inferior de la página.

    La salida se genera en la sección de respuesta de la página.

  7. Haga clic en el botón Detener en cualquier momento para dejar de generar texto:

    Botón Detener

Para ver el código fuente del área de juegos de las API de asistencia para escritura, consulte el repositorio MicrosoftEdge/Demos en GitHub.

Uso de las API de asistencia para escritura

Las tres API de asistencia para escritura (Summarizer, Writer y Rewriter) se usan de forma muy similar y se documentan juntas en las secciones siguientes.

Comprobación de si las API están habilitadas

Antes de usar cualquiera de las API de asistencia para escritura en el código del sitio web, compruebe que la API está habilitada mediante la prueba de la presencia de los Summarizerobjetos , Writero Rewriter :

if (!Summarizer) {
  // The Summarizer API is not available.
}

if (!Writer) {
  // The Writer API is not available.
}

if (!Rewriter) {
  // The Rewriter API is not available.
}

Comprobación de si se puede usar el modelo

Las API de asistencia para escritura solo se pueden usar si el dispositivo admite la ejecución del modelo y una vez que Microsoft Edge ha descargado el modelo de lenguaje y el entorno de ejecución del modelo.

Para comprobar si se puede usar la API, use el método de la availability() API. Por ejemplo, para comprobar la disponibilidad del modelo con writer API:

const availability = await Writer.availability();

if (availability == "unavailable") {
  // The model is not available.
}

if (availability == "downloadable" || availability == "downloading") {
  // The model can be used, but it needs to be downloaded first.
}

if (availability == "available") {
  // The model is available and can be used.
}

Para comprobar la disponibilidad del modelo con las API Rewriter y Summarizer, cambie Writer a Rewriter o Summarizer en el código anterior.

Creación de una nueva sesión

La creación de una sesión indica al explorador que cargue el modelo de lenguaje en la memoria para que se pueda usar. Para poder usar las API de asistencia para escritura para resumir, escribir o reescribir texto, cree una nueva sesión mediante el create() método :

// Create a Summarizer session.
const summarizerSession = await Summarizer.create();

// Create a Writer session.
const writerSession = await Writer.create();

// Create a Rewriter session.
const rewriterSession = await Rewriter.create();

Para personalizar la sesión del modelo, puede pasar opciones al create() método :

// Create a Writer session with options.
const session = await Writer.create(options);

Algunas opciones son comunes a las tres API de asistencia para escritura, mientras que otras son diferentes o toman valores diferentes. Las opciones disponibles, por API, se enumeran a continuación:

Opción Summarizer API API de escritor API de reescritura
monitor Supervisar objeto Supervisar objeto Supervisar objeto
type Cadena: "tl;dr", "key-points", , "teaser""headline" No compatible No compatible
tone No compatible Cadena: "formal", , "neutral""casual" Cadena: "as-is", , "more-formal""more-casual"
length Cadena: "short", , "medium""long" Cadena: "short", , "medium""long" Cadena: "as-is", , "shorter""longer"
format Cadena: "plain-text", "markdown" Cadena: "plain-text", "markdown" Cadena: "as-is", , "plain-text""markdown"

Estas opciones se documentan a continuación.

Supervisión del progreso de la descarga del modelo

Puede seguir el progreso de la descarga del modelo mediante la monitor opción . Esto resulta útil cuando el modelo aún no se ha descargado por completo en el dispositivo donde se usará, para informar a los usuarios de su sitio web de que deben esperar.

// Create a Summarizer session with the monitor option to monitor the model
// download.
const session = await Summarizer.create({
  monitor: m => {
    // Use the monitor object argument to add an listener for the 
    // downloadprogress event.
    m.addEventListener("downloadprogress", event => {
      // The event is an object with the loaded and total properties.
      if (event.loaded == event.total) {
        // The model is fully downloaded.
      } else {
        // The model is still downloading.
        const percentageComplete = (event.loaded / event.total) * 100;
      }
    });
  }
});
Establecer el tipo de resumen

La type opción solo es compatible con la API Summarizer. Use la type opción para pedir al modelo de lenguaje que genere un resumen de uno de los tipos siguientes:

  • tl;dr
  • key-points
  • teaser
  • headline

Ejemplo de creación de una Summarizer sesión con la opción de resumen type de key-points:

const session = await Summarizer.create({
  type: "key-points"
});
Establecer el tono del texto generado

Las API Writer y Rewriter admiten la tone opción .

Use la tone opción para establecer el tono del texto que se va a escribir o reescribir.

Writer API admite los siguientes valores para la tone opción :

  • formal
  • neutral
  • casual

La API Rewriter admite los siguientes valores para la tone opción :

  • as-is
  • more-formal
  • more-casual

Ejemplo de creación de una Rewriter sesión, en el que se pide al modelo que vuelva a escribir texto para usar un tone de more-formal:

const session = await Rewriter.create({
  tone: "more-formal"
});
Establecer la longitud del texto generado

La length opción es compatible con las API Summarizer, Writer y Rewriter, y se usa para controlar la longitud del texto generado.

Las API Writer y Summarizer admiten los valores siguientes:

  • short
  • medium
  • long

La API Rewriter admite los valores siguientes:

  • as-is
  • shorter
  • longer

Ejemplo de creación de una Writer sesión, solicitando al modelo que genere texto con length de long:

const session = await Writer.create({
  length: "long"
});
Establecer el formato del texto generado

La format opción es compatible con las API Summarizer, Writer y Rewriter, y se usa para pedir al modelo que genere texto sin formato o texto con formato markdown.

Las API Writer y Summarizer admiten los valores siguientes:

  • plain-text
  • markdown

La API Rewriter admite los valores siguientes:

  • as-is
  • plain-text
  • markdown

Ejemplo de creación de una Rewriter sesión, en el que se pide al modelo que vuelva a escribir el texto proporcionado para generar como formatmarkdown:

const session = await Rewriter.create({
  format: "markdown"
});

Ejecución de las API de asistencia para escritura

Para generar texto, mediante las API Summarizer, Writer o Rewriter, después de crear la sesión de modelo correspondiente, use los métodos siguientes:

  • summarizerSession.summarize()
  • writerSession.write()
  • rewriterSession.rewrite()

O bien, para mostrar el texto generado a medida que se genera, use las versiones de streaming de los métodos anteriores:

  • summarizerSession.summarizeStreaming()
  • writerSession.writeStreaming()
  • rewriterSession.rewriteStreaming()

Las dos versiones de estos métodos se documentan a continuación.

Esperar a que se genere el texto

Para esperar a que el texto se genere por completo antes de seguir ejecutando código, use los summarize()métodos asincrónicos , write()y rewrite() . Estos métodos devuelven una promesa que se resuelve una vez que la API correspondiente ha terminado de generar texto.

Ejemplo de uso del summarize() método asincrónico de summarizer API:

// Create a Summarizer session.
const summarizerSession = await Summarizer.create();

// Summarize text and wait for the summary to be done.
const summary = await summarizerSession.summarize(textToBeSummarized);

// Use the summary.
console.log(summary);
Mostrar tokens a medida que se generan

Para mostrar los tokens a medida que se generan, use en su lugar las versiones de streaming de los métodos anteriores. Los summarizeStreaming()métodos , writeStreaming()y rewriteStreaming() devuelven un objeto de secuencia de inmediato. Use el objeto de secuencia devuelto para mostrar los tokens de respuesta a medida que se generan.

Ejemplo de uso del summarizeStreaming() método asincrónico de summarizer API:

// Create a Summarizer session.
const session = await Summarizer.create();

// Ask the model to summarize text.
const stream = session.summarizeStreaming(textToBeSummarized);

// Use the stream object to display tokens that are generated by the model, as
// they are being generated.
for await (const chunk of stream) {
  console.log(chunk);
}

Dejar de generar texto

Para dejar de generar texto antes de que se resuelva o finalice la promesa o la secuencia devuelta por los métodos anteriores, use una AbortController señal:

Ejemplo de una Rewriter sesión con una AbortController señal:

// Create a Rewriter session.
const session = await Rewriter.create();

// Create an AbortController object.
const abortController = new AbortController();

// Use the model session to generate some text and pass the AbortController
// object by using the signal option.
const stream = session.rewriteStreaming(textToBeRewritten, {
    signal: abortController.signal
});

// Later, perhaps when the user presses a "Stop" button, call the abort()
// method on the AbortController object to stop generating text.
abortController.abort();

Para una Summarizer sesión o Writer , en el código anterior:

  • Cambie Rewriter.create() a Summarizer.create() o Writer.create().
  • Cambie de usar session.rewriteStreaming().

Destruir una sesión

Destruya la sesión para que el explorador sepa que ya no necesita el modelo de lenguaje, de modo que el modelo se pueda descargar de la memoria.

Puede destruir una sesión de dos maneras diferentes:

  • Mediante el destroy() método .
  • Mediante el uso de .AbortController
Destrucción de una sesión mediante el método destroy()

Puede usar el destroy() método con una Summarizersesión , Writero Rewriter .

Ejemplo de uso de una Summarizer sesión:

const session = await Summarizer.create();

// Later, destroy the session by using the destroy method.
session.destroy();
Destrucción de una sesión mediante Un abortController

Como alternativa, puede crear un AbortController objeto, crear una Summarizersesión , Writero Rewriter y, a continuación, llamar a abort().

Ejemplo de uso de una Writer sesión:

// Create an AbortController object.
const controller = new AbortController();

// Create a Summarizer, Writer, or Rewriter session and pass the 
// AbortController object by using the signal option.
const session = await Writer.create({ signal: controller.signal });

// Later, perhaps when the user interacts with the UI, destroy the session by
// calling the abort() function of the AbortController object.
controller.abort();

Enviar comentarios

Estamos muy interesados en conocer la gama de escenarios para los que piensa usar las API de asistencia para escritura, los problemas con las API o los modelos de lenguaje y si las nuevas API, como las API para la revisión, serían útiles.

Para enviar comentarios sobre los escenarios y las tareas que desea lograr, agregue un comentario al problema de comentarios de las API de asistencia para escritura.

Si observa algún problema al usar las API en su lugar, notifíquelo en el repositorio.

También puede contribuir a la discusión sobre el diseño de las API de asistencia para escritura en el repositorio del grupo de trabajo de W3C Web Machine Learning.

Vea también