2.9 KiB
provider-ruby (Ruby Provider)
This example demonstrates how to create a custom Ruby provider for promptfoo that integrates with the OpenAI API.
You can run this example with:
npx promptfoo@latest init --example provider-ruby
cd provider-ruby
Overview
The Ruby provider allows you to use Ruby code as a provider in promptfoo evaluations. This example also demonstrates Ruby assertions for custom validation logic.
Ruby Provider is useful when you need to:
- Call APIs from Ruby libraries
- Implement custom logic before or after calling LLMs
- Process responses in specific ways
- Track token usage and other metrics
Ruby Assertions allow you to:
- Write custom validation logic in Ruby
- Access test context and variables
- Return detailed grading results with scores and reasons
- Reuse assertion logic across multiple tests
Environment Variables
This example requires the following environment variable:
OPENAI_API_KEY- Your OpenAI API key
You can set this in a .env file or directly in your environment.
Requirements
- Ruby 2.7 or higher (with
net/httpandjsonfrom standard library)
Files
provider.rb- The Ruby provider implementation that calls OpenAI's APIassert.rb- Custom Ruby assertion functions for validationpromptfooconfig.yaml- Configuration for promptfoo evaluation with proper YAML schema reference
Implementation Details
Ruby Provider (provider.rb)
The Ruby provider includes:
- A
call_apifunction that makes API calls to OpenAI - Token usage extraction from the API response
- Multiple sample functions showing different ways to call the API
By default, the example is configured to use gpt-4.1-mini model, but you can modify it to use other models as needed.
Ruby Assertions
The example demonstrates three types of Ruby assertions:
- Inline assertions - Simple one-line checks (e.g.,
output.length > 10) - Multiline assertions - Complex logic with detailed results and scores
- External file assertions (
assert.rb) - Reusable assertion functions
Ruby assertions can:
- Return boolean values for pass/fail
- Return numeric scores
- Return detailed
GradingResulthashes with pass/fail, score, reason, and component results - Access test context including variables, prompts, and provider responses
Expected Output
When you run this example, you'll see:
- The prompts being submitted to your Ruby provider
- Responses from the OpenAI API
- Token usage statistics for each completion
- Evaluation results in a table format
Run the example with:
npx promptfoo@latest evaluate -c examples/provider-ruby/promptfooconfig.yaml
Learn More
For more information, see the promptfoo documentation: