ai-patterns
Version:
Production-ready TypeScript patterns to build solid and robust AI applications. Retry logic, circuit breakers, rate limiting, human-in-the-loop escalation, prompt versioning, response validation, context window management, and more—all with complete type
59 lines • 2.22 kB
TypeScript
/**
* Prompt Versioning & Experimentation Pattern
*
* Manages prompt versions with rollback, gradual rollout, and performance comparison.
* Enables safe experimentation with different prompt formulations.
*
* @example
* ```typescript
* const result = await versionedPrompt({
* promptId: 'product-summary',
* versions: {
* 'v1.0': {
* prompt: 'Summarize this product in 2 sentences',
* active: false,
* performance: { satisfaction: 0.75, avgTokens: 50 }
* },
* 'v2.0': {
* prompt: 'Create engaging 2-sentence product summary',
* active: true,
* rolloutPercentage: 50
* }
* },
* execute: async (prompt, version) => {
* return await generateText({ model, prompt: prompt + '\n\n' + productData });
* },
* onVersionUsed: (version, result) => {
* analytics.track('prompt_version_used', { version, tokens: result.tokens });
* },
* autoRollback: {
* enabled: true,
* conditions: [
* { metric: 'satisfaction', threshold: 0.7, window: '1h', operator: 'lt' }
* ]
* }
* });
* ```
*/
import type { PromptVersioningConfig, PromptVersionExecutionResult, PromptVersionStorage, PromptVersionMetrics } from "../types/prompt-versioning";
/**
* Simple in-memory storage for prompt version metrics using GlobalStorage
*/
export declare class InMemoryPromptVersionStorage implements PromptVersionStorage {
private storage;
private readonly namespace;
constructor();
private getMetricsKey;
private getActiveVersionKey;
private getHistoryKey;
getMetrics(promptId: string, version: string): Promise<PromptVersionMetrics | null>;
updateMetrics(promptId: string, version: string, metrics: Partial<PromptVersionMetrics>): Promise<void>;
getActiveVersion(promptId: string): Promise<string | null>;
setActiveVersion(promptId: string, version: string): Promise<void>;
getVersionHistory(promptId: string): Promise<string[]>;
}
/**
* Execute a prompt with version management
*/
export declare function versionedPrompt<TResult = any>(config: PromptVersioningConfig<TResult>): Promise<PromptVersionExecutionResult<TResult>>;
//# sourceMappingURL=prompt-versioning.d.ts.map