1
0

feat: Add Cerebras and Fireworks as LLM providers and introduce configurable Whisper providers with dedicated API keys.

This commit is contained in:
2026-03-01 22:01:12 +01:00
parent e5aa9e2cc0
commit 545d32aae4
3 changed files with 90 additions and 18 deletions

View File

@@ -40,19 +40,31 @@ public static class DaemonService
var configManager = new ConfigManager();
var config = configManager.LoadConfig();
if (string.IsNullOrWhiteSpace(config.GroqApiKey))
if (config.WhisperProvider == "groq" && string.IsNullOrWhiteSpace(config.GroqApiKey))
{
Console.WriteLine("Groq API Key is not configured. Run 'toak onboard'.");
Console.WriteLine("Groq API Key is not configured for Whisper. Run 'toak onboard'.");
return;
}
if (config.WhisperProvider == "fireworks" && string.IsNullOrWhiteSpace(config.FireworksApiKey))
{
Console.WriteLine("Fireworks API Key is not configured for Whisper. Run 'toak onboard'.");
return;
}
var stateTracker = new StateTracker();
var notifications = new Notifications();
var speechClient = new OpenAiCompatibleClient(config.GroqApiKey);
ILlmClient llmClient = config.LlmProvider == "together"
? new OpenAiCompatibleClient(config.TogetherApiKey, "https://api.together.xyz/v1/", config.ReasoningEffort)
: new OpenAiCompatibleClient(config.GroqApiKey, "https://api.groq.com/openai/v1/", config.ReasoningEffort);
ISpeechClient speechClient = config.WhisperProvider == "fireworks"
? new OpenAiCompatibleClient(config.FireworksApiKey, "https://api.fireworks.ai/inference/v1/")
: new OpenAiCompatibleClient(config.GroqApiKey);
ILlmClient llmClient = config.LlmProvider switch
{
"together" => new OpenAiCompatibleClient(config.TogetherApiKey, "https://api.together.xyz/v1/", config.ReasoningEffort),
"cerebras" => new OpenAiCompatibleClient(config.CerebrasApiKey, "https://api.cerebras.ai/v1/", config.ReasoningEffort),
"fireworks" => new OpenAiCompatibleClient(config.FireworksApiKey, "https://api.fireworks.ai/inference/v1/", config.ReasoningEffort),
_ => new OpenAiCompatibleClient(config.GroqApiKey, "https://api.groq.com/openai/v1/", config.ReasoningEffort)
};
IAudioRecorder recorder = config.AudioBackend == "ffmpeg"
? new FfmpegAudioRecorder(stateTracker, notifications)