examples/config-executable-prompts/README.md
This example demonstrates how to use executable scripts and binaries as prompt generators in promptfoo.
To initialize and run it:
npx promptfoo@latest init --example config-executable-prompts
cd config-executable-prompts
promptfoo eval
chmod +x prompt-generator.sh template-prompt.rbPromptfoo supports using any executable (shell scripts, Python scripts, binaries, etc.) to dynamically generate prompts. This is useful when you need to:
Script Input: Your executable receives a JSON context as its first command-line argument containing:
vars: Test variables from your configurationprovider: Information about the current providerconfig: Any additional configuration passed to the promptScript Output: Your script should output the generated prompt to stdout
Error Handling:
exec: prefixprompts:
- exec:./my-script.sh
- exec:/usr/bin/custom-prompt-generator
prompts:
- ./my-script.sh # Detected by .sh extension
# Note: Python files (.py) are processed as Python prompt templates by default.
# To run a Python script as an executable prompt, use the exec: prefix:
# - exec:./generator.py
prompts:
- label: 'Custom Prompt'
raw: exec:./generator.sh
config:
temperature: 0.7
style: technical
timeout: 30000 # 30 second timeout (default: 60s)