mirror of
https://gh.wpcy.net/https://github.com/thomas-deep/freescoutAI.git
synced 2026-05-23 22:25:29 +08:00
51 lines
1.5 KiB
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;
|
|
}
|
|
}
|