Back to .md Directory

API Documentation

Documents configuration, monitoring, security, CLI, and template APIs for a TypeScript prompt engine library.

May 2, 2026
0 downloads
2 views
ai rag prompt claude openai gemini
View source

What this file does

Documents configuration, monitoring, security, CLI, and template APIs for a TypeScript prompt engine library.

When to use it

  • Validating a prompt engine config file before deployment
  • Adding cost tracking and metrics collection to prompt execution
  • Sanitizing user input for injection and PII detection
  • Using built-in template patterns for GPT-4, Claude, or Gemini

Assumes this stack

TypeScriptZodOpenAIClaudeGemini

API Documentation

Configuration

Schema

The configuration follows a strict schema validated by Zod:

interface PromptEngineConfig {
  version: "2.0";
  engine?: {
    apiKeys?: Record<string, string>;
    defaults?: {
      temperature?: number;      // 0-2
      maxTokens?: number;        // >= 1
      topP?: number;             // 0-1
    };
    rateLimiting?: {
      maxRequestsPerMinute?: number;
      maxTokensPerMinute?: number;
    };
    logging?: {
      level?: "debug" | "info" | "warn" | "error";
      output?: "console" | "file" | "both";
    };
  };
  prompts: Array<{
    id: string;
    name?: string;
    model: "gpt-4" | "claude" | "gemini" | "custom";
    template: string;
    variables?: Record<string, any>;
    temperature?: number;
    maxTokens?: number;
    systemPrompt?: string;
    outputFormat?: "text" | "json" | "markdown";
    metadata?: {
      version?: string;
      author?: string;
      description?: string;
      tags?: string[];
    };
  }>;
  patterns?: Array<{
    name: string;
    description?: string;
    template: string;
    metadata?: {
      category?: string;
      tags?: string[];
      version?: string;
    };
  }>;
}

Loading Configuration

import { loadConfig } from 'prompt-engine/config';

// Load JSON config
const config = await loadConfig('prompt-engine.config.json');

// Load YAML config (requires js-yaml)
const yamlConfig = await loadConfig('config.yaml');

// Load TOML config (requires @iarna/toml)
const tomlConfig = await loadConfig('config.toml');

Monitoring API

Diagnostics Channel Events

import { monitor } from 'prompt-engine/monitoring';

// Listen to prompt start events
monitor.on('prompt.start', (data) => {
  console.log(`Starting prompt ${data.id}`);
});

// Listen to completion events
monitor.on('prompt.complete', (metrics) => {
  console.log(`Prompt completed:`, metrics);
});

// Listen to error events
monitor.on('prompt.error', (data) => {
  console.error(`Error: ${data.error.message}`);
});

Tracking Execution

import { trackPromptExecution } from 'prompt-engine/monitoring';

const result = await trackPromptExecution(
  'openai',              // provider
  'gpt-4',              // model
  'unique-prompt-id',   // prompt ID
  async () => {
    // Your execution logic
    const response = await callAPI();
    return {
      result: response.text,
      metrics: {
        promptTokens: response.promptTokens,
        completionTokens: response.completionTokens,
        totalTokens: response.totalTokens,
      }
    };
  }
);

Metrics Collection

import { metricsCollector } from 'prompt-engine/monitoring';

// Get summary
const summary = metricsCollector.getSummary();
console.log(`Total requests: ${summary.totalRequests}`);
console.log(`Total cost: $${summary.totalCost}`);

// Get metrics for last hour
const hourAgo = new Date(Date.now() - 3600000);
const recentMetrics = metricsCollector.getMetrics(100, hourAgo);

// Export all metrics
const exported = metricsCollector.exportMetrics();

Cost Tracking

import { costTracker } from 'prompt-engine/monitoring';

// Calculate cost
const cost = costTracker.calculateCost(
  'openai',
  'gpt-4',
  1000,  // prompt tokens
  500    // completion tokens
);
console.log(`Cost: $${cost.totalCost}`);

// Set custom pricing
costTracker.setCustomPricing('my-provider', {
  'my-model': {
    input: 2.00,   // $2 per 1M input tokens
    output: 6.00   // $6 per 1M output tokens
  }
});

// Estimate cost
const estimate = costTracker.estimateCost(
  'openai',
  'gpt-4',
  'This is my prompt text',
  1000  // estimated output tokens
);

Security API

Prompt Sanitization

import { sanitizePrompt, sanitizeHtml } from 'prompt-engine/security';

// Full sanitization (XSS, injection, PII)
const safe = await sanitizePrompt(userInput);

// HTML sanitization only
const safeHtml = await sanitizeHtml(htmlContent);

Detection Functions

import { detectInjection, detectPII } from 'prompt-engine/security';

// Check for injection attempts
if (detectInjection(userInput)) {
  throw new Error('Potential injection detected');
}

// Check for PII
if (detectPII(userInput)) {
  console.warn('PII detected in input');
}

PII Masking

import { maskPII } from 'prompt-engine/security';

const masked = maskPII('My SSN is 123-45-6789');
// Output: 'My SSN is XXX-XX-XXXX'

CLI API

Commands

# Validate configuration
prompt-engine validate <config-file>

# Initialize new configuration
prompt-engine init <output-file>

# Show version
prompt-engine --version

# Show help
prompt-engine --help

Programmatic CLI Usage

import { cli } from 'prompt-engine/cli';

// Run CLI programmatically
await cli(['validate', 'config.json']);

Template Patterns

Using Built-in Patterns

import { GPT4SystemPrompt, GPT4CodeGeneration } from 'prompt-engine/templates/gpt4';
import { ClaudeSystemPrompt } from 'prompt-engine/templates/claude';
import { GeminiConfig } from 'prompt-engine/templates/gemini';

// Use a pattern
const prompt = GPT4CodeGeneration.template.replace('{{language}}', 'TypeScript');

Pattern Types

interface BasePattern {
  name: string;
  description: string;
  template: string;
  metadata?: {
    category?: string;
    tags?: string[];
    version?: string;
  };
}

Error Types

import { ConfigError, ValidationError, ParsingError } from 'prompt-engine/types';

try {
  await loadConfig('config.json');
} catch (error) {
  if (error instanceof ConfigError) {
    console.error('Configuration error:', error.message);
  } else if (error instanceof ValidationError) {
    console.error('Validation error:', error.errors);
  }
}

TypeScript Support

All APIs are fully typed. Import types as needed:

import type {
  PromptConfig,
  ExtendedPromptConfig,
  PromptMetrics,
  CostCalculation,
  TokenPricing
} from 'prompt-engine';

What's inside

7 API sections with TypeScript interfaces, code examples, and CLI commands

Change this for your project

  • Replace 'prompt-engine/config' with your own package import path
  • Replace 'prompt-engine/monitoring' with your own package import path
  • Replace 'prompt-engine/security' with your own package import path
  • Replace 'prompt-engine/templates/gpt4' with your own template import path

Where it goes

A prompt collection. Copy the individual prompts you need rather than the whole file.

Worth borrowing

  • Separate monitoring, security, and CLI concerns into distinct API modules
  • Provide both programmatic and CLI interfaces for the same functionality
  • Use Zod schemas for configuration validation with clear error types

Related Documents