vxcontrol/pentagi · error

failed to create provider for testing: %w

Error message

failed to create provider for testing: %w

What it means

TestAgent builds a temporary provider instance from the patched config via pc.buildProviderFromConfig to run connectivity tests. If the provider cannot be constructed — bad credentials, unsupported provider type, failed client initialization — the error is wrapped as "failed to create provider for testing: %w".

Source

Thrown at backend/pkg/providers/providers.go:888

	case pconfig.OptionsTypeInstaller:
		testConfig.Installer = config
	case pconfig.OptionsTypePentester:
		testConfig.Pentester = config
	default:
		return result, fmt.Errorf("unsupported agent type: %s", agentType)
	}

	// Patch with defaults
	patchedConfig, err := pc.patchProviderConfig(prvtype, testConfig)
	if err != nil {
		return result, fmt.Errorf("failed to patch provider config: %w", err)
	}

	// Create temporary provider for testing using existing provider logic
	providerName := provider.ProviderName("test-provider")
	tempProvider, err := pc.buildProviderFromConfig(prvtype, providerName, patchedConfig)
	if err != nil {
		return result, fmt.Errorf("failed to create provider for testing: %w", err)
	}

	// Run tests for specific agent type only
	results, err := tester.TestProvider(
		ctx,
		tempProvider,
		tester.WithAgentTypes(agentType),
		tester.WithVerbose(false),
		tester.WithParallelWorkers(defaultTestParallelWorkersNumber),
	)
	if err != nil {
		return result, fmt.Errorf("failed to test agent: %w", err)
	}

	// Extract results for the specific agent type
	switch agentType {
	case pconfig.OptionsTypeSimple:
		result = results.Simple

View on GitHub (pinned to ea665308ba)

Solutions

  1. Read the wrapped inner error — it names the actual construction failure
  2. Verify the API key and server URL are set and well-formed for the provider type
  3. Confirm prvtype is handled in buildProviderFromConfig's switch (providers.go)
  4. Use TestAgent's flow after successfully creating the provider via CreateProvider to validate the config first

Example fix

// before
cfg := &pconfig.AgentConfig{APIKey: "", Model: "gpt-4o"} // empty key
// after
cfg := &pconfig.AgentConfig{APIKey: os.Getenv("OPENAI_API_KEY"), Model: "gpt-4o"}
if cfg.APIKey == "" {
    return errors.New("OPENAI_API_KEY is required to test this agent")
}
Defensive patterns

Strategy: validation

Validate before calling

if cfg.APIKey == "" || cfg.Model == "" {
    return errors.New("API key and model are required before testing an agent")
}

Try / catch

result, err := ctrl.TestAgent(ctx, prvtype, agentType, cfg)
if err != nil && strings.Contains(err.Error(), "failed to create provider for testing") {
    return fmt.Errorf("could not construct provider %s — check credentials and base URL: %w", prvtype, err)
}

Prevention

When it happens

Trigger: buildProviderFromConfig returns an error for the given prvtype/patchedConfig: unrecognized provider type in the factory switch, missing API key/base URL, or an error from the provider SDK's constructor (e.g. invalid OpenAI/Anthropic key format).

Common situations: Testing a provider with an empty or malformed API key; provider type registered in config but not handled in buildProviderFromConfig; wrong base URL scheme (e.g. missing https://) rejected by SDK constructor.

Related errors


AI-assisted analysis of vxcontrol/pentagi@ea665308ba (2026-09-01). Data as JSON: /api/errors/2d6cedff44681977. Report an issue: GitHub.