Skip to content

Quick Start

import { createMinion } from 'minions-sdk';
import { promptTemplateType, InMemoryStorage } from 'minions-prompts';
const storage = new InMemoryStorage();
const { minion: template } = createMinion(
{
title: 'Email Summarizer',
fields: {
content: 'Summarize the following email in {{tone}} tone for {{audience}}:\n\n{{email}}',
variables: ['tone', 'audience', 'email'],
},
},
promptTemplateType,
);
await storage.saveMinion(template);
console.log('Created:', template.id);
import { PromptRenderer } from 'minions-prompts';
const renderer = new PromptRenderer();
const rendered = renderer.render(
template.fields.content,
{
tone: 'professional',
audience: 'executives',
email: 'Hi, just checking in on the Q3 report...',
},
);
console.log(rendered);
import { createMinion, generateId, now } from 'minions-sdk';
import { promptVersionType } from 'minions-prompts';
const { minion: v2 } = createMinion(
{
title: 'Email Summarizer v2',
fields: {
content: 'Produce a {{length}}-sentence summary of this email in {{tone}} tone for {{audience}}:\n\n{{email}}',
changelog: 'Added length control',
versionNumber: 2,
variables: ['length', 'tone', 'audience', 'email'],
},
},
promptVersionType,
);
await storage.saveMinion(v2);
await storage.saveRelation({
id: generateId(),
sourceId: v2.id,
targetId: template.id,
type: 'follows',
createdAt: now(),
});
import { PromptChain, PromptDiff } from 'minions-prompts';
const chain = new PromptChain(storage);
const versions = await chain.getVersionChain(template.id);
console.log(`${versions.length} versions`);
const differ = new PromptDiff();
const diff = differ.diff(template, v2);
console.log(differ.format(diff, true)); // colored output