freescoutAI/Services/AIProviderFactory.php

51 lines
1.5 KiB
PHP

<?php
namespace Modules\FreeScoutAI\Services;
class AIProviderFactory
{
/**
* Create a provider instance based on the provider name
*
* @param string $provider Provider name
* @param string $api_key API key for the provider
* @param string $model Model to use
* @param array $additional_settings Any additional settings needed
* @return AIProviderInterface|null
*/
public static function createProvider($provider, $api_key, $model, $additional_settings = [])
{
$providerClass = null;
switch ($provider) {
case 'ollama':
$providerClass = new AIProviders\OllamaProvider();
break;
case 'openai':
$providerClass = new AIProviders\OpenAIProvider();
break;
case 'anthropic':
$providerClass = new AIProviders\AnthropicProvider();
break;
case 'mistral':
$providerClass = new AIProviders\MistralProvider();
break;
case 'openrouter':
$providerClass = new AIProviders\OpenRouterProvider();
break;
default:
return null;
}
if ($providerClass) {
$providerClass->initialize($api_key, $model, $additional_settings);
}
return $providerClass;
}
}