> For the complete documentation index, see [llms.txt](https://docs.aibrow.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.aibrow.ai/api-reference/aibrow/writer.md).

# Writer

## Static Methods

### <mark style="background-color:red;">static</mark> availability

`static async availability(options) =>`  [`AIModelAvailability`](/api-reference/types/aimodelavailability.md)&#x20;

Get the availability of the on-device language model.

| Options (optional)                                                                          |
| ------------------------------------------------------------------------------------------- |
| **options** `optional` [`WriterCreateOptions`](/api-reference/types/writercreateoptions.md) |

Returns the availability

### <mark style="background-color:red;">static</mark> compatibility <mark style="background-color:green;">extension</mark> <mark style="background-color:purple;">web</mark>

`static async compatibility(options) =>`  [`AIModelCoreCompatibility`](/api-reference/types/aimodelcorecompatibility.md)&#x20;

Get the availability of the on-device language model.

| Options (optional)                                                                          |
| ------------------------------------------------------------------------------------------- |
| **options** `optional` [`WriterCreateOptions`](/api-reference/types/writercreateoptions.md) |

Returns the compatibility

### <mark style="background-color:red;">static</mark> create

`static async create(options) =>` [`Writer`](/api-reference/aibrow/writer.md)&#x20;

Creates a new embedding session

| Options (optional)                                                                          |
| ------------------------------------------------------------------------------------------- |
| **options** `optional` [`WriterCreateOptions`](/api-reference/types/writercreateoptions.md) |

Returns a new Writer session that can be prompted with the pre-provided configuration

***

## Properties

### gpuEngine <mark style="background-color:green;">extension</mark> <mark style="background-color:purple;">web</mark>

[`AIModelGpuEngine`](/api-reference/types/aimodelgpuengine.md)&#x20;

### dtype <mark style="background-color:green;">extension</mark> <mark style="background-color:purple;">web</mark>

[`AIModelDtype`](/api-reference/types/aimodeldtype.md)&#x20;

### flashAttention <mark style="background-color:green;">extension</mark> <mark style="background-color:purple;">web</mark>

`boolean`

### contextSize

`number`&#x20;

### inputQuota

`number`&#x20;

### repeatPenalty <mark style="background-color:green;">extension</mark> <mark style="background-color:purple;">web</mark>

`number`&#x20;

### sharedContext

`string`&#x20;

### tone

[`WriterTone`](/api-reference/types/writertone.md)&#x20;

### format

[`WriterFormat` ](/api-reference/types/writerformat.md)

### length

[`WriterLength` ](/api-reference/types/writerlength.md)

### expectedInputLanguages

`string[]`&#x20;

### expectedContextLanguages

`string[]`&#x20;

***

## Methods

### write

`async (input, options) => string`

See [writeStreaming](#writestreaming)

### writeStreaming

`(input, options) => ReadableStream`

This prompts the model to rewrite the given input and session options.

| Input                                    |
| ---------------------------------------- |
| A `string`containing the text to rewrite |

| Options (optional)                |
| --------------------------------- |
| **signal** `optional AbortSignal` |
| **context** `optional string`     |

Returns a readable stream that updates each time new tokens are available from the language model

### measureInputUsage

`async (input, options) =>` `number`

Measures the prompt usage of the input

| Input      |
| ---------- |
| A `string` |

| Options (optional)                |
| --------------------------------- |
| **signal** `optional AbortSignal` |

Returns prompt usage based on the input
