AI-Studio/app/MindWork AI Studio/Provider/Providers.cs

78 lines
2.4 KiB
C#
Raw Normal View History

using AIStudio.Provider.Anthropic;
2024-07-25 13:29:44 +00:00
using AIStudio.Provider.Fireworks;
2024-07-01 18:11:19 +00:00
using AIStudio.Provider.Mistral;
2024-04-20 15:06:50 +00:00
using AIStudio.Provider.OpenAI;
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
{
2024-07-25 13:29:44 +00:00
NONE = 0,
2024-07-25 13:29:44 +00:00
OPEN_AI = 1,
ANTHROPIC = 2,
MISTRAL = 3,
2024-07-25 13:29:44 +00:00
FIREWORKS = 5,
SELF_HOSTED = 4,
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
{
Providers.NONE => "No provider selected",
2024-04-20 15:06:50 +00:00
Providers.OPEN_AI => "OpenAI",
Providers.ANTHROPIC => "Anthropic",
2024-07-01 18:11:19 +00:00
Providers.MISTRAL => "Mistral",
2024-04-20 15:06:50 +00:00
2024-07-25 13:29:44 +00:00
Providers.FIREWORKS => "Fireworks.ai",
Providers.SELF_HOSTED => "Self-hosted",
2024-04-20 15:06:50 +00:00
_ => "Unknown",
};
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 },
2024-07-25 13:29:44 +00:00
Providers.FIREWORKS => new ProviderFireworks { InstanceName = providerSettings.InstanceName },
2024-07-24 17:27:25 +00:00
Providers.SELF_HOSTED => new ProviderSelfHosted(providerSettings) { InstanceName = providerSettings.InstanceName },
2024-07-25 13:29:44 +00:00
2024-07-24 17:27:25 +00:00
_ => new NoProvider(),
};
}
catch (Exception e)
{
Console.WriteLine($"Failed to create provider: {e.Message}");
return new NoProvider();
}
}
2024-04-20 15:06:50 +00:00
}