Are you sure you want to delete this access key?
This example demonstrates how to structure a Go-based provider for promptfoo. For detailed documentation, see Go Provider documentation.
To get started with this example:
promptfoo init --example golang-provider
This example shows two implementations of the same provider interface:
golang-provider/
├── go.mod # Root module definition
├── main.go # Root provider implementation
├── core/ # Supporting code
│ └── openai.go # OpenAI client wrapper
├── pkg1/ # Shared utilities
│ └── utils.go # Configuration
├── evaluation/ # Alternative implementation
│ └── main.go # Provider with same interface
└── promptfooconfig.yml # Config comparing both implementations
The structure demonstrates how to:
Go installed (1.16 or later)
OpenAI Go client library:
go get github.com/sashabaranov/go-openai@v1.37.0
Set your API key:
export OPENAI_API_KEY=your_key_here
Run the comparison:
npx promptfoo eval
Then view the results with:
npx promptfoo view
The config compares both implementations:
providers:
- id: 'file://evaluation/main.go:CallApi'
label: 'Provider in evaluation/'
- id: 'file://main.go:CallApi'
label: 'Provider in root'
config:
reasoning_effort: 'high'
Both main.go
and evaluation/main.go
implement the same interface:
func CallApi(prompt string, options map[string]interface{}) (string, error)
They share the same OpenAI client code but can be configured differently through the config file.
Press p or to see the previous file or, n or to see the next file
Browsing data directories saved to S3 is possible with DAGsHub. Let's configure your repository to easily display your data in the context of any commit!
promptfoo is now integrated with AWS S3!
Are you sure you want to delete this access key?
Browsing data directories saved to Google Cloud Storage is possible with DAGsHub. Let's configure your repository to easily display your data in the context of any commit!
promptfoo is now integrated with Google Cloud Storage!
Are you sure you want to delete this access key?
Browsing data directories saved to Azure Cloud Storage is possible with DAGsHub. Let's configure your repository to easily display your data in the context of any commit!
promptfoo is now integrated with Azure Cloud Storage!
Are you sure you want to delete this access key?
Browsing data directories saved to S3 compatible storage is possible with DAGsHub. Let's configure your repository to easily display your data in the context of any commit!
promptfoo is now integrated with your S3 compatible storage!
Are you sure you want to delete this access key?