PromptKit Examples
This directory contains comprehensive examples demonstrating various features and use cases of PromptKit. Each example is self-contained and includes configuration files, documentation, and any necessary code.
Example Categories
Section titled “Example Categories”🤖 Arena Testing Examples
Section titled “🤖 Arena Testing Examples”Examples demonstrating the PromptKit Arena testing framework for automated prompt evaluation and validation.
🔧 Integration Examples
Section titled “🔧 Integration Examples”Examples showing how to integrate PromptKit with external systems and tools.
🧠 Advanced Features
Section titled “🧠 Advanced Features”Examples showcasing advanced PromptKit capabilities like human-in-the-loop workflows, state management, and custom middleware.
Available Examples
Section titled “Available Examples”1. assertions-test
Section titled “1. assertions-test”Category: Arena Testing Purpose: Demonstrates how to write and use assertions for automated prompt testing
- Arena configuration for assertion-based testing
- Multiple assertion types and validation patterns
- Provider configurations for different LLM services
2. context-management
Section titled “2. context-management”Category: Integration Purpose: Shows context management and conversation state handling
- Context preservation across conversation turns
- State management patterns
- Memory and context injection techniques
3. customer-support
Section titled “3. customer-support”Category: Arena Testing Purpose: Complete customer support chatbot example with arena testing
- Customer support prompt configurations
- Multi-provider testing (OpenAI, Claude, Gemini)
- Scenario-based testing for support conversations
- Pack-based prompt organization
4. customer-support-integrated
Section titled “4. customer-support-integrated”Category: Integration Purpose: Integrated customer support system with external tool calls
- Customer information retrieval
- Support ticket creation
- Order history access
- Subscription status checking
- Multi-persona testing
5. hitl-approval ⭐
Section titled “5. hitl-approval ⭐”Category: Advanced Features Purpose: Human-in-the-loop workflow for high-value operations
-
Language: Go
-
Features:
- Approval workflows for sensitive operations
- Email notification system
- Async processing patterns
- Custom middleware integration
-
Files:
main.go,async_email_tool.go,mock_provider.go
6. mcp-chatbot
Section titled “6. mcp-chatbot”Category: Integration Purpose: Model Context Protocol (MCP) integration for chatbots
- MCP server configuration
- Protocol-based tool integration
- Chat scenario testing
7. mcp-filesystem-test ⭐
Section titled “7. mcp-filesystem-test ⭐”Category: Integration Purpose: MCP integration with filesystem operations
-
Language: Go
-
Features:
- Filesystem MCP server integration
- File operations through MCP protocol
- Testing MCP tool functionality
-
Files:
test_filesystem.go
8. mcp-memory-test ⭐
Section titled “8. mcp-memory-test ⭐”Category: Integration Purpose: MCP integration with memory/storage systems
-
Language: Go
-
Features:
- Memory-based MCP server testing
- Persistent storage through MCP
- State preservation testing
-
Files:
test_mcp.go
9. phase2-demo ⭐
Section titled “9. phase2-demo ⭐”Category: Advanced Features Purpose: Comprehensive demonstration of PromptKit Phase 2 capabilities
-
Language: Go
-
Features:
- Advanced pipeline configurations
- Custom middleware examples
- Multi-provider orchestration
-
Files:
main.go
10. statestore-example
Section titled “10. statestore-example”Category: Advanced Features Purpose: State store configuration and usage patterns
- State persistence configuration
- Arena testing with state store
- State inspection and debugging
11. variables-demo ⭐
Section titled “11. variables-demo ⭐”Category: Arena Testing Purpose: Comprehensive guide to using variables in promptconfigs
-
Features:
- Defining optional variables with defaults
- Using required variables
- Overriding variables in arena.yaml
- Creating multiple configs from one template
- Variable resolution priority
-
Learn: How to make prompts flexible and reusable with template variables
-
Includes: Restaurant bot and product support examples with detailed testing
Getting Started
Section titled “Getting Started”Running Arena Examples
Section titled “Running Arena Examples”Most examples include an arena.yaml file for testing with the PromptKit Arena:
# Navigate to any arena examplecd examples/customer-support
# Run arena testingpromptarena run
# Inspect configurationpromptarena config inspect
# Generate reportspromptarena renderRunning Go Examples
Section titled “Running Go Examples”Examples with Go code can be built and executed directly:
# Navigate to a Go examplecd examples/hitl-approval
# Build the examplego build
# Run the example./hitl-approvalUnderstanding Configuration Files
Section titled “Understanding Configuration Files”File Naming Conventions
Section titled “File Naming Conventions”PromptKit uses typed file extensions for better IDE integration and discoverability:
| Type | File Pattern | Example |
|---|---|---|
| Arena | config.arena.yaml | config.arena.yaml |
| Provider | *.provider.yaml | openai-gpt4.provider.yaml |
| Scenario | *.scenario.yaml | support-ticket.scenario.yaml |
| Tool | *.tool.yaml | search.tool.yaml |
| Persona | *.persona.yaml | curious-customer.persona.yaml |
| PromptConfig | *.prompt.yaml | assistant.prompt.yaml |
Benefits:
- IDE automatically detects and validates files using JSON schemas
- File purposes are self-documenting
- Easy to find all files of a specific type
- Compatible with schema stores for automatic IDE integration
config.arena.yaml
Section titled “config.arena.yaml”Main Arena configuration file defining:
- Prompt configurations and packs
- Provider settings (OpenAI, Claude, Gemini, etc.)
- Test scenarios and assertions
- Self-play configurations
Schema URL: https://promptkit.altairalabs.ai/schemas/latest/arena.json
Provider Files (providers/*.provider.yaml)
Section titled “Provider Files (providers/*.provider.yaml)”Individual provider configurations:
openai-gpt4o-mini.provider.yaml- OpenAI GPT-4o Miniclaude-3-5-haiku.provider.yaml- Anthropic Claude 3.5 Haikugemini-2-0-flash.provider.yaml- Google Gemini 2.0 Flash
Schema URL: https://promptkit.altairalabs.ai/schemas/latest/provider.json
Scenario Files (scenarios/*.scenario.yaml)
Section titled “Scenario Files (scenarios/*.scenario.yaml)”Test scenario definitions:
- Conversation flows
- Expected behaviors
- Validation criteria
- Streaming configurations
Schema URL: https://promptkit.altairalabs.ai/schemas/latest/scenario.json
Prompt Files (prompts/*.prompt.yaml)
Section titled “Prompt Files (prompts/*.prompt.yaml)”Prompt configurations and templates:
- System prompts
- User prompts
- Prompt packs
- Template variables
Schema URL: https://promptkit.altairalabs.ai/schemas/latest/promptconfig.json
Adding Schema Validation
Section titled “Adding Schema Validation”Add $schema at the top of any config file for IDE support:
$schema: https://promptkit.altairalabs.ai/schemas/latest/arena.jsonapiVersion: promptkit.altairalabs.ai/v1alpha1kind: Arenametadata: name: my-arenaspec: # ... configurationThis enables:
- Autocomplete in VS Code, IntelliJ, and other IDEs
- Real-time validation and error checking
- Inline documentation on hover
- Structured editing support
Example Patterns
Section titled “Example Patterns”Basic Arena Testing
Section titled “Basic Arena Testing”- Configure providers in
providers/ - Define prompts in
prompts/with variables array (required and optional) - Set up scenarios in
scenarios/ - Configure arena in
arena.yamland override variables as needed - Run tests with
promptarena run
Working with Variables
Section titled “Working with Variables”- Define
variablesarray in your promptconfig with type, required status, and defaults - Set
required: truefor values that must be provided - Set
required: falsewithdefaultvalue for optional variables - Use
{{variable_name}}syntax insystem_template - Override variables in
arena.yamlunderprompt_configs[].vars - Test different configurations with scenarios
- See
variables-demo/for complete examples
Integration Development
Section titled “Integration Development”- Implement integration logic in Go
- Configure MCP servers if needed
- Set up workspace in
go.work - Build and test integration
- Document usage patterns
Advanced Workflows
Section titled “Advanced Workflows”- Design custom middleware
- Implement HITL patterns
- Configure state management
- Set up async processing
- Test with arena framework
Best Practices
Section titled “Best Practices”Configuration Management
Section titled “Configuration Management”- Use environment variables for sensitive data
- Organize configs by environment (dev, staging, prod)
- Version control configuration templates
- Document configuration parameters
Testing Strategy
Section titled “Testing Strategy”- Write comprehensive arena scenarios
- Test across multiple providers
- Validate edge cases and error conditions
- Use assertions for automated validation
Code Organization
Section titled “Code Organization”- Follow Go module best practices
- Use clear, descriptive naming
- Include comprehensive documentation
- Implement proper error handling
Troubleshooting
Section titled “Troubleshooting”Common Issues
Section titled “Common Issues”Import Path Errors
Section titled “Import Path Errors”- Ensure
go.workincludes your example module - Verify import paths match repository structure
- Check Go version compatibility
Arena Configuration Errors
Section titled “Arena Configuration Errors”- Validate YAML syntax with
promptarena config inspect - Check file paths are relative to arena.yaml
- Verify provider configurations are accessible
Build Failures
Section titled “Build Failures”- Ensure all dependencies are properly versioned
- Check for Go version compatibility
- Verify replace directives in go.mod
Getting Help
Section titled “Getting Help”- Check individual example README files for specific guidance
- Review Arena documentation for testing framework details
- Consult SDK documentation for integration patterns
- Check troubleshooting guides in
/docs
Contributing
Section titled “Contributing”When adding new examples:
- Create descriptive directory names
- Include comprehensive README.md
- Add arena.yaml for testable examples
- Update this main README
- Test all configurations work
- Document any special requirements
Example Template Structure
Section titled “Example Template Structure”new-example/├── README.md # Detailed example documentation├── arena.yaml # Arena configuration (if applicable)├── go.mod # Go module (if Go code)├── main.go # Main implementation (if Go code)├── prompts/ # Prompt configurations├── providers/ # Provider configurations├── scenarios/ # Test scenarios└── tools/ # Tool configurations (if applicable)This examples collection demonstrates the full power and flexibility of PromptKit across various use cases, from simple prompt testing to complex multi-system integrations.