Skip to main content

Class: Narrator

Narrator generates meta-content narrations based on other content. It shines at reading and understanding your existing content like articles, help pages, blog posts, etc, and generating short, friendly summaries that tell the reader what content may be most useful to them.

All of the configurations for Narrator are optional, but if you want to generate and save content you can pass in outputDir and (optionally) outputFilename to have Narrator automatically save its generations for you. For example, if we want to save our generated content as .md files in the ./editorial directory, we can configure it like this:

export const narrator = new Narrator({
outputFilename: (docId) => `${docId}.md`,
outputDir: path.join(process.cwd(), "editorial"),
});

Now we can generate some content, which in this case will be saved to ./editorial/tag/ai.md (directories will be created for you):

const content = await narrator.generate(
{
docId: "tag/ai",
suffix: "Please reply with only the markdown you generate", //suffix is optional
prompt: `
These are summaries of my most recent articles about AI. Your task is to generate a 2-3 sentence
introduction that tells readers at-a-glance what I've been writing about. Please generate markdown,
and include links to the articles. Do not use triple backticks or section headings in your response.

<<Articles go here>>
`,
},
{ save: true }
);

This will generate content for you and save it according to the configuration you provided. You can set docId to whatever you want - in this case we're generating intro text for a blog that contains articles about AI. If you don't specify a model it will default to using OpenAI's "gpt-4o", but you can pass in any model provided by the Vercel AI SDK.

Constructors

new Narrator()

new Narrator(args): Narrator

Creates a new instance of the Narrator class.

Parameters

args: NarratorArgs

The arguments to configure the Narrator instance.

Returns

Narrator

Defined in

Narrator.ts:266

Properties

examplesDir

examplesDir: undefined | string

Directory where example YAML files are stored. Used for fetching good and bad examples to guide model generation.

Defined in

Narrator.ts:220


exampleTemplate

exampleTemplate: Function

Function to format examples. This function is applied to examples before they are used in prompts. Example function signature: (example: Example) => string.

Defined in

Narrator.ts:227


logger

logger: Logger

Custom logger instance for logging (e.g., a Winston logger). If undefined, a default logger will be used.

Defined in

Narrator.ts:253


model

model: any

The model used for text generation, such as an instance of OpenAI's GPT models. If undefined, a default model (e.g., openai("gpt-4o")) will be used.

Defined in

Narrator.ts:240


outputDir

outputDir: undefined | string

Directory where generated outputs will be saved. If undefined, outputs will not be saved automatically.

Defined in

Narrator.ts:214


outputFilename

outputFilename: Function

Function to generate output filenames based on the document ID. If undefined, filenames are generated using the document ID by default. Example function signature: (docId: string) => string.

Defined in

Narrator.ts:247


parallel

parallel: number = 1

Number of parallel processes to use when running generateMulti. Defaults to 1 if not provided.

Defined in

Narrator.ts:208


temperature

temperature: any

Temperature for the model generation. Controls the randomness of the generated output, where a higher value results in more varied responses. If undefined, the default temperature is used.

Defined in

Narrator.ts:234


trainer

trainer: Trainer

Trainer instance responsible for evaluating generated examples. Used to classify examples as good or bad based on feedback or custom logic.

Defined in

Narrator.ts:259

Methods

generate()

generate(task, options): Promise<string | AsyncIterableStream<string>>

Generates content for the provided task based on the given options.

Parameters

task: GenerationTask

The task containing the prompt and document ID.

options: GenerateOptions = {}

Optional settings for generation (temperature, model, etc.).

Returns

Promise<string | AsyncIterableStream<string>>

The generated text content.

Defined in

Narrator.ts:312


getExampleGroup()

getExampleGroup(docId?): undefined | string

Extracts the first part of a document ID, representing the example group.

Parameters

docId?: string

The document ID.

Returns

undefined | string

The group key.

Defined in

Narrator.ts:518


getExampleKey()

getExampleKey(docId): string

Extracts the key from a document ID.

Parameters

docId: string

The document ID.

Returns

string

The extracted key.

Defined in

Narrator.ts:528


getExamplesForTask()

getExamplesForTask(task, verdict, limit?): Promise<Example[]>

Retrieves examples for a specific task based on the verdict (good or bad).

Parameters

task: GenerationTask

The generation task for which examples are retrieved.

verdict: string

The type of examples to retrieve ("good" or "bad").

limit?: number

The maximum number of examples to retrieve (optional).

Returns

Promise<Example[]>

An array of examples.

Defined in

Narrator.ts:490


getNarration()

getNarration(docId): string | false

Retrieves previously saved narration by document ID.

Parameters

docId: string

The document ID of the narration.

Returns

string | false

The narration content or false if the content is not found or could not be read.

Defined in

Narrator.ts:396


readExampleYaml()

readExampleYaml(filename): any

Reads a YAML file and parses its contents.

Parameters

filename: string

The path to the YAML file.

Returns

any

The parsed YAML content or an empty array in case of an error.

Defined in

Narrator.ts:474


saveExample()

saveExample(args): Promise<boolean>

Saves the evaluation result as an example for future reference.

Parameters

args: SaveExampleArgs

The arguments for saving the example (document ID, content, etc.).

Returns

Promise<boolean>

A boolean indicating success or failure of the save operation.

Defined in

Narrator.ts:426


saveNarration()

saveNarration(narration): boolean

Saves the generated narration to the output directory.

Parameters

narration: Narration

The narration object containing document ID and content.

Returns

boolean

A boolean indicating success or failure of the save operation.

Defined in

Narrator.ts:368


train()

train(task): Promise<undefined | boolean>

Trains the Narrator using a task and evaluates the result. If the result is marked for saving, it will be saved.

Parameters

task: GenerationTask

The generation task to be processed.

Returns

Promise<undefined | boolean>

Defined in

Narrator.ts:294