Primitives.org.ai

generate

AI-powered entity creation

Generate entities using AI based on schema descriptions.

Import

import { DB } from 'ai-database'

const { db } = DB({
  Post: {
    title: 'Engaging blog post title',
    content: 'Full markdown article (1500-2500 words)',
    tags: ['3-5 relevant tags'],
  },
})

Basic Generation

const post = await db.generate({
  type: 'Post',
  data: { topic: 'TypeScript best practices' },
})

Schema as Prompt

Schema descriptions guide AI generation:

const { db } = DB({
  Post: {
    title: 'Engaging blog post title',           // AI knows to be engaging
    content: 'Full markdown (1500-2500 words)',  // AI targets word count
    tags: ['3-5 relevant tags'],                 // AI generates 3-5 items
  },
})

// AI uses schema descriptions for generation
const post = await db.generate({
  type: 'Post',
  data: { topic: 'AI trends' },
})

Batch Generation

// Generate multiple at once
await db.generate({
  type: 'Post',
  count: 10,
  data: { topic: 'AI trends' },
})

Background Generation

For large batches, use background mode:

const action = await db.generate({
  type: 'Post',
  count: 100,
  data: { topic: 'AI trends' },
  mode: 'background',
})

// Check progress
const status = await actions.get(action.id)
console.log(`${status.progress}/${status.total}`)

// Wait for completion
const posts = await actions.result(action.id)

With Relationships

// Generate posts for each persona
const personas = await db.Persona.list()

for (const persona of personas) {
  await db.generate({
    type: 'Post',
    count: 5,
    data: { persona: persona.$id },
  })
}

forEach Pattern

await db.forEach({ type: 'Persona' }, async (persona) => {
  await db.generate({
    type: 'Post',
    count: 10,
    data: { persona: persona.$id },
  })
})

Options

OptionTypeDescription
typestringEntity type to generate
dataobjectContext for generation
countnumberNumber to generate
modestring'sync' or 'background'
modelstringAI model to use

Seeding Data

// Seed initial data
for (const name of ['Builder', 'Coder', 'Founder']) {
  await db.generate({
    type: 'Persona',
    data: { name },
  })
}

// Generate content for each
await db.forEach({ type: 'Persona' }, async (persona) => {
  await db.generate({
    type: 'Post',
    count: 10,
    data: { persona: persona.$id, topics: persona.interests },
  })
})
Was this page helpful?

On this page