Go API Reference
Reference documentation for the Arena Go API, covering all exported types, functions, and methods for programmatic usage.
Core Packages
Section titled “Core Packages”github.com/AltairaLabs/PromptKit/tools/arena/engine
Section titled “github.com/AltairaLabs/PromptKit/tools/arena/engine”The main package for programmatic Arena usage.
BuildEngineComponents
Section titled “BuildEngineComponents”func BuildEngineComponents(cfg *config.Config) ( providerRegistry *providers.Registry, promptRegistry *prompt.Registry, mcpRegistry *mcp.RegistryImpl, convExecutor ConversationExecutor, err error,)Builds all engine components from a loaded Config object.
Parameters:
cfg- Fully constructed*config.Configwith loaded providers, scenarios, and prompts
Returns:
providerRegistry- Registry containing all configured LLM providerspromptRegistry- Registry containing all prompt configurationsmcpRegistry- Registry for Model Context Protocol serversconvExecutor- Executor for running conversationserr- Error if component building fails
Example:
cfg := &config.Config{ LoadedProviders: map[string]*config.Provider{...}, LoadedScenarios: map[string]*config.Scenario{...},}
providerReg, promptReg, mcpReg, executor, err := engine.BuildEngineComponents(cfg)if err != nil { log.Fatal(err)}NewEngine
Section titled “NewEngine”func NewEngine( cfg *config.Config, providerRegistry *providers.Registry, promptRegistry *prompt.Registry, mcpRegistry *mcp.RegistryImpl, convExecutor ConversationExecutor,) (*Engine, error)Creates a new Engine from pre-built components.
Parameters:
cfg- Configuration objectproviderRegistry- Provider registry fromBuildEngineComponentspromptRegistry- Prompt registry fromBuildEngineComponentsmcpRegistry- MCP registry fromBuildEngineComponentsconvExecutor- Conversation executor fromBuildEngineComponents
Returns:
*Engine- Initialized engine ready for executionerror- Error if engine creation fails
NewEngineFromConfigFile
Section titled “NewEngineFromConfigFile”func NewEngineFromConfigFile(configPath string) (*Engine, error)Creates a new Engine by loading configuration from a file.
Parameters:
configPath- Path to arena.yaml configuration file
Returns:
*Engine- Initialized engineerror- Error if loading or initialization fails
Example:
eng, err := engine.NewEngineFromConfigFile("config.arena.yaml")if err != nil { log.Fatal(err)}defer eng.Close()Engine Methods
Section titled “Engine Methods”GenerateRunPlan
Section titled “GenerateRunPlan”func (e *Engine) GenerateRunPlan( regionFilter, providerFilter, scenarioFilter []string,) (*RunPlan, error)Creates a test execution plan from filter criteria.
Parameters:
regionFilter- Regions to include (nil = all)providerFilter- Providers to include (nil = all)scenarioFilter- Scenarios to include (nil = all)
Returns:
*RunPlan- Execution plan with all matching combinationserror- Error if plan generation fails
Example:
// Test only OpenAI and Claude providersplan, err := eng.GenerateRunPlan( nil, // all regions []string{"openai", "claude"}, // specific providers nil, // all scenarios)ExecuteRuns
Section titled “ExecuteRuns”func (e *Engine) ExecuteRuns( ctx context.Context, plan *RunPlan, concurrency int,) ([]string, error)Executes all runs in the plan concurrently.
Parameters:
ctx- Context for cancellationplan- RunPlan fromGenerateRunPlanconcurrency- Maximum concurrent executions
Returns:
[]string- Run IDs in same order as plan combinationserror- Error if execution setup fails
Example:
ctx := context.Background()runIDs, err := eng.ExecuteRuns(ctx, plan, 4)if err != nil { log.Fatal(err)}GetStateStore
Section titled “GetStateStore”func (e *Engine) GetStateStore() statestore.StoreReturns the engine’s state store for accessing results.
Returns:
statestore.Store- State store interface
Example:
arenaStore, ok := eng.GetStateStore().(*statestore.ArenaStateStore)if !ok { log.Fatal("Expected ArenaStateStore")}func (e *Engine) Close() errorShuts down the engine and cleans up resources.
Returns:
error- Error if cleanup fails
Example:
defer eng.Close()EnableMockProviderMode
Section titled “EnableMockProviderMode”func (e *Engine) EnableMockProviderMode(mockConfigPath string) errorReplaces all providers with mock providers for testing.
Parameters:
mockConfigPath- Path to mock config YAML (empty string for default responses)
Returns:
error- Error if mock configuration is invalid
Example:
err := eng.EnableMockProviderMode("mock-responses.yaml")EnableSessionRecording
Section titled “EnableSessionRecording”func (e *Engine) EnableSessionRecording(recordingDir string) errorEnables session recording for all runs.
Parameters:
recordingDir- Directory to store recording files
Returns:
error- Error if directory cannot be created
RunPlan
Section titled “RunPlan”type RunPlan struct { Combinations []RunCombination}Represents a test execution plan.
Fields:
Combinations- All test combinations to execute
RunCombination
Section titled “RunCombination”type RunCombination struct { Region string ScenarioID string ProviderID string}Represents a single test execution.
Fields:
Region- Region identifierScenarioID- Scenario to executeProviderID- Provider to use
RunResult
Section titled “RunResult”type RunResult struct { RunID string ProviderID string ScenarioID string Messages []types.Message Cost types.CostInfo Duration time.Duration Error string // ... additional fields}Contains complete results of a test execution.
Key Fields:
RunID- Unique identifier for this runProviderID- Provider that executed the testScenarioID- Scenario that was executedMessages- Full conversation historyCost- Token usage and cost informationDuration- Execution timeError- Error message if test failed
Configuration Package
Section titled “Configuration Package”github.com/AltairaLabs/PromptKit/pkg/config
Section titled “github.com/AltairaLabs/PromptKit/pkg/config”Config
Section titled “Config”type Config struct { LoadedProviders map[string]*Provider LoadedScenarios map[string]*Scenario LoadedPromptConfigs map[string]*PromptConfigData Defaults Defaults // ... additional fields}Main Arena configuration structure.
Provider
Section titled “Provider”type Provider struct { ID string Type string // "openai", "anthropic", "gemini", "mock" Model string // ... additional fields}Provider configuration.
Scenario
Section titled “Scenario”type Scenario struct { ID string TaskType string Description string Turns []TurnDefinition // ... additional fields}Test scenario definition.
TurnDefinition
Section titled “TurnDefinition”type TurnDefinition struct { Role string // "user" or "assistant" Content string // ... additional fields}Single conversation turn.
Defaults
Section titled “Defaults”type Defaults struct { Temperature float32 MaxTokens int Output OutputConfig // ... additional fields}Default execution parameters.
State Store Package
Section titled “State Store Package”github.com/AltairaLabs/PromptKit/tools/arena/statestore
Section titled “github.com/AltairaLabs/PromptKit/tools/arena/statestore”ArenaStateStore
Section titled “ArenaStateStore”type ArenaStateStore struct { // ... internal fields}State store implementation for Arena results.
GetRunResult
Section titled “GetRunResult”func (s *ArenaStateStore) GetRunResult( ctx context.Context, runID string,) (*RunResult, error)Retrieves detailed results for a specific run.
Parameters:
ctx- Context for cancellationrunID- Run identifier fromExecuteRuns
Returns:
*RunResult- Complete run resultserror- Error if run not found or retrieval fails
Example:
result, err := arenaStore.GetRunResult(ctx, runID)if err != nil { log.Printf("Failed to get result: %v", err) continue}
fmt.Printf("Scenario: %s\n", result.ScenarioID)fmt.Printf("Duration: %s\n", result.Duration)fmt.Printf("Cost: $%.6f\n", result.Cost.TotalCost)Prompt Package
Section titled “Prompt Package”github.com/AltairaLabs/PromptKit/runtime/prompt
Section titled “github.com/AltairaLabs/PromptKit/runtime/prompt”Config
Section titled “Config”type Config struct { Spec Spec}Prompt configuration wrapper.
type Spec struct { TaskType string Version string Description string SystemTemplate string AllowedTools []string // ... additional fields}Prompt specification.
Example:
promptConfig := &prompt.Config{ Spec: prompt.Spec{ TaskType: "assistant", Version: "v1.0.0", Description: "Helpful assistant", SystemTemplate: "You are a helpful AI assistant.", AllowedTools: []string{"calculator", "search"}, },}Common Patterns
Section titled “Common Patterns”Complete Workflow
Section titled “Complete Workflow”// 1. Create configurationcfg := &config.Config{ LoadedProviders: map[string]*config.Provider{...}, LoadedScenarios: map[string]*config.Scenario{...},}
// 2. Build componentsproviderReg, promptReg, mcpReg, executor, err := engine.BuildEngineComponents(cfg)if err != nil { return err}
// 3. Create engineeng, err := engine.NewEngine(cfg, providerReg, promptReg, mcpReg, executor)if err != nil { return err}defer eng.Close()
// 4. Generate planplan, err := eng.GenerateRunPlan(nil, nil, nil)if err != nil { return err}
// 5. Executectx := context.Background()runIDs, err := eng.ExecuteRuns(ctx, plan, 4)if err != nil { return err}
// 6. Get resultsstore := eng.GetStateStore().(*statestore.ArenaStateStore)for _, runID := range runIDs { result, _ := store.GetRunResult(ctx, runID) // Process result}