README
ΒΆ
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
π€ Arena Testing Examples
Examples demonstrating the PromptKit Arena testing framework for automated prompt evaluation and validation.
π§ Integration Examples
Examples showing how to integrate PromptKit with external systems and tools.
π§ Advanced Features
Examples showcasing advanced PromptKit capabilities like human-in-the-loop workflows, state management, and custom middleware.
Available Examples
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
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
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
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 β
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
Category: Integration Purpose: Model Context Protocol (MCP) integration for chatbots
- MCP server configuration
- Protocol-based tool integration
- Chat scenario testing
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 β
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 β
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
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 β
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
Running Arena Examples
Most examples include an arena.yaml file for testing with the PromptKit Arena:
# Navigate to any arena example
cd examples/customer-support
# Run arena testing
promptarena run
# Inspect configuration
promptarena config inspect
# Generate reports
promptarena render
Running Go Examples
Examples with Go code can be built and executed directly:
# Navigate to a Go example
cd examples/hitl-approval
# Build the example
go build
# Run the example
./hitl-approval
Understanding Configuration Files
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
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)
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)
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)
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
Add $schema at the top of any config file for IDE support:
$schema: https://promptkit.altairalabs.ai/schemas/latest/arena.json
apiVersion: promptkit.altairalabs.ai/v1alpha1
kind: Arena
metadata:
name: my-arena
spec:
# ... configuration
This enables:
- Autocomplete in VS Code, IntelliJ, and other IDEs
- Real-time validation and error checking
- Inline documentation on hover
- Structured editing support
Example Patterns
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
- 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
- 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
- Design custom middleware
- Implement HITL patterns
- Configure state management
- Set up async processing
- Test with arena framework
Best Practices
Configuration Management
- Use environment variables for sensitive data
- Organize configs by environment (dev, staging, prod)
- Version control configuration templates
- Document configuration parameters
Testing Strategy
- Write comprehensive arena scenarios
- Test across multiple providers
- Validate edge cases and error conditions
- Use assertions for automated validation
Code Organization
- Follow Go module best practices
- Use clear, descriptive naming
- Include comprehensive documentation
- Implement proper error handling
Troubleshooting
Common Issues
Import Path Errors
- Ensure
go.workincludes your example module - Verify import paths match repository structure
- Check Go version compatibility
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
- Ensure all dependencies are properly versioned
- Check for Go version compatibility
- Verify replace directives in go.mod
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
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
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.
Directories
ΒΆ
| Path | Synopsis |
|---|---|
|
Example: Running Arena programmatically with OTel tracing and Prometheus metrics.
|
Example: Running Arena programmatically with OTel tracing and Prometheus metrics. |
|
session-replay
|
|
|
demo
command
Demo of session recording and synchronized playback.
|
Demo of session recording and synchronized playback. |