API Documentation
Documents configuration, monitoring, security, CLI, and template APIs for a TypeScript prompt engine library.
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
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
starProject
Lists 120+ starred open-source projects across AI, DevOps, Flutter, and web development for discovery and inspiration.
midjourney-expert
Serves as a reference for Midjourney V7/Niji 7 prompting, covering parameters, reference systems, editing tools, and moderation workarounds.
🎣 Hooks & Headlines Generator
Generates 20, 30 headline variations across 10 proven formulas, with psychological reasoning and platform-specific best practices.
Daily Agent Tasks Framework
Gives you a daily structure for assigning strategic work to Claude and development work to Codex, organized by project priority and current sprint.