177 lines
4.5 KiB
Markdown
177 lines
4.5 KiB
Markdown
# Prompt Management System
|
|
|
|
This directory contains all versioned system prompts for Vibn's chat modes.
|
|
|
|
## 📁 Structure
|
|
|
|
```
|
|
prompts/
|
|
├── index.ts # Exports all prompts
|
|
├── shared.ts # Shared prompt components
|
|
├── collector.ts # Collector mode prompts
|
|
├── extraction-review.ts # Extraction review mode prompts
|
|
├── vision.ts # Vision mode prompts
|
|
├── mvp.ts # MVP mode prompts
|
|
├── marketing.ts # Marketing mode prompts
|
|
└── general-chat.ts # General chat mode prompts
|
|
```
|
|
|
|
## 🔄 Versioning
|
|
|
|
Each prompt file contains:
|
|
1. **Version history** - All versions of the prompt
|
|
2. **Metadata** - Version number, date, description
|
|
3. **Current version** - Which version is active
|
|
|
|
### Example Structure
|
|
|
|
```typescript
|
|
const COLLECTOR_V1: PromptVersion = {
|
|
version: 'v1',
|
|
createdAt: '2024-11-17',
|
|
description: 'Initial version',
|
|
prompt: `...`,
|
|
};
|
|
|
|
const COLLECTOR_V2: PromptVersion = {
|
|
version: 'v2',
|
|
createdAt: '2024-12-01',
|
|
description: 'Added context-aware chunking',
|
|
prompt: `...`,
|
|
};
|
|
|
|
export const collectorPrompts = {
|
|
v1: COLLECTOR_V1,
|
|
v2: COLLECTOR_V2,
|
|
current: 'v2', // ← Active version
|
|
};
|
|
```
|
|
|
|
## 📝 How to Add a New Prompt Version
|
|
|
|
1. **Open the relevant mode file** (e.g., `collector.ts`)
|
|
2. **Create a new version constant:**
|
|
```typescript
|
|
const COLLECTOR_V2: PromptVersion = {
|
|
version: 'v2',
|
|
createdAt: '2024-12-01',
|
|
description: 'What changed in this version',
|
|
prompt: `
|
|
Your new prompt text here...
|
|
`,
|
|
};
|
|
```
|
|
3. **Add to the prompts object:**
|
|
```typescript
|
|
export const collectorPrompts = {
|
|
v1: COLLECTOR_V1,
|
|
v2: COLLECTOR_V2, // Add new version
|
|
current: 'v2', // Update current
|
|
};
|
|
```
|
|
4. **Done!** The system will automatically use the new version.
|
|
|
|
## 🔙 How to Rollback
|
|
|
|
Simply change the `current` field:
|
|
|
|
```typescript
|
|
export const collectorPrompts = {
|
|
v1: COLLECTOR_V1,
|
|
v2: COLLECTOR_V2,
|
|
current: 'v1', // Rolled back to v1
|
|
};
|
|
```
|
|
|
|
## 📊 Benefits of This System
|
|
|
|
1. **Version History** - Keep all previous prompts for reference
|
|
2. **Easy Rollback** - Instantly revert to a previous version
|
|
3. **Git-Friendly** - Clear diffs show exactly what changed
|
|
4. **Documentation** - Each version has a description of changes
|
|
5. **A/B Testing Ready** - Can easily test multiple versions
|
|
6. **Isolated Changes** - Changing one prompt doesn't affect others
|
|
|
|
## 🎯 Usage in Code
|
|
|
|
```typescript
|
|
// Import current prompts (most common)
|
|
import { MODE_SYSTEM_PROMPTS } from '@/lib/ai/chat-modes';
|
|
|
|
const prompt = MODE_SYSTEM_PROMPTS['collector_mode'];
|
|
|
|
// Or access version history
|
|
import { collectorPrompts } from '@/lib/ai/prompts';
|
|
|
|
console.log(collectorPrompts.v1.prompt); // Old version
|
|
console.log(collectorPrompts.current); // 'v2'
|
|
```
|
|
|
|
## 🚀 Future Enhancements
|
|
|
|
### Analytics Tracking
|
|
Track performance by prompt version:
|
|
```typescript
|
|
await logPromptUsage({
|
|
mode: 'collector_mode',
|
|
version: collectorPrompts.current,
|
|
userId: user.id,
|
|
responseQuality: 0.85,
|
|
});
|
|
```
|
|
|
|
### A/B Testing
|
|
Test multiple versions simultaneously:
|
|
```typescript
|
|
const promptVersion = userInExperiment ? 'v2' : 'v1';
|
|
const prompt = collectorPrompts[promptVersion].prompt;
|
|
```
|
|
|
|
### Database Storage
|
|
Move to Firestore for dynamic updates:
|
|
```typescript
|
|
// Future: Load from database
|
|
const prompt = await getPrompt('collector_mode', 'latest');
|
|
```
|
|
|
|
## 📚 Best Practices
|
|
|
|
1. **Always add a description** - Future you will thank you
|
|
2. **Never delete old versions** - Keep history for rollback
|
|
3. **Test before deploying** - Ensure new prompts work as expected
|
|
4. **Document changes** - What problem does the new version solve?
|
|
5. **Version incrementally** - Don't skip version numbers
|
|
|
|
## 🔍 Example: Adding Context-Aware Chunking
|
|
|
|
```typescript
|
|
// 1. Create new version
|
|
const COLLECTOR_V2: PromptVersion = {
|
|
version: 'v2',
|
|
createdAt: '2024-11-17',
|
|
description: 'Added instructions for context-aware chunking',
|
|
prompt: `
|
|
${COLLECTOR_V1.prompt}
|
|
|
|
**Context-Aware Retrieval**:
|
|
When referencing retrieved chunks, always cite the source document
|
|
and chunk number for transparency.
|
|
`,
|
|
};
|
|
|
|
// 2. Update prompts object
|
|
export const collectorPrompts = {
|
|
v1: COLLECTOR_V1,
|
|
v2: COLLECTOR_V2,
|
|
current: 'v2',
|
|
};
|
|
|
|
// 3. Deploy and monitor
|
|
// If issues arise, simply change current: 'v1' to rollback
|
|
```
|
|
|
|
---
|
|
|
|
**Questions?** Check the code in any prompt file for examples.
|
|
|