2024-06-30 18:56:08 +00:00
|
|
|
using AIStudio.Provider.Anthropic;
|
2024-07-01 18:11:19 +00:00
|
|
|
using AIStudio.Provider.Mistral;
|
2024-04-20 15:06:50 +00:00
|
|
|
using AIStudio.Provider.OpenAI;
|
2024-07-03 18:31:04 +00:00
|
|
|
using AIStudio.Provider.SelfHosted;
|
2024-04-20 15:06:50 +00:00
|
|
|
|
|
|
|
namespace AIStudio.Provider;
|
|
|
|
|
2024-05-04 08:55:00 +00:00
|
|
|
/// <summary>
|
|
|
|
/// Enum for all available providers.
|
|
|
|
/// </summary>
|
2024-04-20 15:06:50 +00:00
|
|
|
public enum Providers
|
|
|
|
{
|
|
|
|
NONE,
|
2024-07-03 18:31:04 +00:00
|
|
|
|
2024-04-20 15:06:50 +00:00
|
|
|
OPEN_AI,
|
2024-06-30 18:56:08 +00:00
|
|
|
ANTHROPIC,
|
2024-07-01 18:11:19 +00:00
|
|
|
MISTRAL,
|
2024-07-03 18:31:04 +00:00
|
|
|
|
|
|
|
SELF_HOSTED,
|
2024-04-20 15:06:50 +00:00
|
|
|
}
|
|
|
|
|
2024-05-04 08:55:00 +00:00
|
|
|
/// <summary>
|
|
|
|
/// Extension methods for the provider enum.
|
|
|
|
/// </summary>
|
2024-04-20 15:06:50 +00:00
|
|
|
public static class ExtensionsProvider
|
|
|
|
{
|
2024-05-04 08:55:00 +00:00
|
|
|
/// <summary>
|
|
|
|
/// Returns the human-readable name of the provider.
|
|
|
|
/// </summary>
|
|
|
|
/// <param name="provider">The provider.</param>
|
|
|
|
/// <returns>The human-readable name of the provider.</returns>
|
2024-04-20 15:06:50 +00:00
|
|
|
public static string ToName(this Providers provider) => provider switch
|
|
|
|
{
|
2024-07-03 18:31:04 +00:00
|
|
|
Providers.NONE => "No provider selected",
|
|
|
|
|
2024-04-20 15:06:50 +00:00
|
|
|
Providers.OPEN_AI => "OpenAI",
|
2024-06-30 18:56:08 +00:00
|
|
|
Providers.ANTHROPIC => "Anthropic",
|
2024-07-01 18:11:19 +00:00
|
|
|
Providers.MISTRAL => "Mistral",
|
2024-04-20 15:06:50 +00:00
|
|
|
|
2024-07-03 18:31:04 +00:00
|
|
|
Providers.SELF_HOSTED => "Self-hosted",
|
|
|
|
|
2024-04-20 15:06:50 +00:00
|
|
|
_ => "Unknown",
|
|
|
|
};
|
2024-05-19 14:09:52 +00:00
|
|
|
|
2024-05-04 08:55:00 +00:00
|
|
|
/// <summary>
|
|
|
|
/// Creates a new provider instance based on the provider value.
|
|
|
|
/// </summary>
|
2024-07-16 08:28:13 +00:00
|
|
|
/// <param name="providerSettings">The provider settings.</param>
|
2024-05-04 08:55:00 +00:00
|
|
|
/// <returns>The provider instance.</returns>
|
2024-07-24 17:27:25 +00:00
|
|
|
public static IProvider CreateProvider(this Settings.Provider providerSettings)
|
2024-04-20 15:06:50 +00:00
|
|
|
{
|
2024-07-24 17:27:25 +00:00
|
|
|
try
|
|
|
|
{
|
|
|
|
return providerSettings.UsedProvider switch
|
|
|
|
{
|
|
|
|
Providers.OPEN_AI => new ProviderOpenAI { InstanceName = providerSettings.InstanceName },
|
|
|
|
Providers.ANTHROPIC => new ProviderAnthropic { InstanceName = providerSettings.InstanceName },
|
|
|
|
Providers.MISTRAL => new ProviderMistral { InstanceName = providerSettings.InstanceName },
|
|
|
|
|
|
|
|
Providers.SELF_HOSTED => new ProviderSelfHosted(providerSettings) { InstanceName = providerSettings.InstanceName },
|
|
|
|
|
|
|
|
_ => new NoProvider(),
|
|
|
|
};
|
|
|
|
}
|
|
|
|
catch (Exception e)
|
|
|
|
{
|
|
|
|
Console.WriteLine($"Failed to create provider: {e.Message}");
|
|
|
|
return new NoProvider();
|
|
|
|
}
|
|
|
|
}
|
2024-04-20 15:06:50 +00:00
|
|
|
}
|