-
Notifications
You must be signed in to change notification settings - Fork 0
LLM Providers
Harish Dhanraj Sugandhi edited this page Mar 4, 2026
·
1 revision
OpenWP supports 4 LLM providers through a unified interface. Provider clients are created via the Provider_Factory and implement ProviderClientInterface.
$client = Provider_Factory::create('openai'); // OpenAI_Client
$client = Provider_Factory::create('anthropic'); // Anthropic_Client
$client = Provider_Factory::create('glm'); // GLM_Client
$client = Provider_Factory::create('openrouter');// OpenRouter_ClientAll providers implement ProviderClientInterface with two methods:
interface ProviderClientInterface {
public function generate(ProviderRequest $request): ProviderResponse|WP_Error;
public function generate_stream(ProviderRequest $request, callable $on_delta): ProviderResponse|WP_Error;
}- API: Responses API
-
Default Model:
gpt-5.2 -
Streaming: Supported via
Stream_Transport
- API: Messages API
-
Default Model:
claude-3-5-sonnet-latest -
Streaming: Supported via
Stream_Transport
- API: Z.AI Chat Completions
-
Default Model:
glm-5 -
Streaming: Supported via
Stream_Transport
- API: Unified gateway (compatible with OpenAI format)
-
Default Model:
anthropic/claude-sonnet-4-5 -
Streaming: Supported via
Stream_Transport
$request = new ProviderRequest([
'system_prompt' => '...', // System instructions
'prompt' => '...', // User prompt
'model' => 'gpt-5.2',
'schema' => [...], // Expected JSON output schema
'stream' => true, // Enable streaming
'temperature' => 0.2, // Low for predictable JSON output
'timeout' => 120, // Seconds
'max_tokens' => 16384, // Max output tokens
]);$response->output_text; // Raw text output from LLM
$response->input_tokens; // Input token count
$response->output_tokens; // Output token countHandles HTTP streaming for all providers:
- Uses
wp_remote_requestwith streaming enabled - Parses SSE
data:lines in real-time - Forwards text deltas to callback
- Handles connection timeouts
Provider API keys are:
- Encrypted via
Encryption_Service(Sodium or AES-256-CBC) - Stored in
OPENWP_OPTION_PROVIDER_KEYSoption - Managed by
Provider_Key_Manager - Masked for UI display (only last 4 characters shown)
Default provider and model are configurable per-provider:
| Setting | Key | Default |
|---|---|---|
| Default provider | default_provider |
openrouter |
| OpenAI model | default_model_openai |
gpt-5.2 |
| Anthropic model | default_model_anthropic |
claude-3-5-sonnet-latest |
| GLM model | default_model_glm |
glm-5 |
| OpenRouter model | default_model_openrouter |
anthropic/claude-sonnet-4-5 |
| Request timeout | timeout_seconds |
45 |
| Temperature | (hardcoded) | 0.2 |
| Max tokens | (hardcoded) | 16384 |
OpenWP v0.1.4 | GitHub Repository | GPLv2+