From f9adfd5269862208a4fcd32833867d6c53f762ce Mon Sep 17 00:00:00 2001 From: Beingpax Date: Wed, 23 Jul 2025 21:08:14 +0545 Subject: [PATCH] cerebras AI provider integration --- VoiceInk.xcodeproj/project.pbxproj | 4 ++-- VoiceInk/Services/AIService.swift | 12 ++++++++++++ VoiceInk/Views/AI Models/APIKeyManagementView.swift | 2 ++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/VoiceInk.xcodeproj/project.pbxproj b/VoiceInk.xcodeproj/project.pbxproj index 9c7aea1..ce4487a 100644 --- a/VoiceInk.xcodeproj/project.pbxproj +++ b/VoiceInk.xcodeproj/project.pbxproj @@ -9,9 +9,9 @@ /* Begin PBXBuildFile section */ E1A261122CC143AC00B233D1 /* KeyboardShortcuts in Frameworks */ = {isa = PBXBuildFile; productRef = E1A261112CC143AC00B233D1 /* KeyboardShortcuts */; }; E1A8C8CB2E1257B7003E58EC /* whisper.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1A8C8CA2E1257B7003E58EC /* whisper.xcframework */; }; - E1A8C8CC2E1257B7003E58EC /* whisper.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E1A8C8CA2E1257B7003E58EC /* whisper.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; E1ADD45A2CC5352A00303ECB /* LaunchAtLogin in Frameworks */ = {isa = PBXBuildFile; productRef = E1ADD4592CC5352A00303ECB /* LaunchAtLogin */; }; E1ADD45F2CC544F100303ECB /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = E1ADD45E2CC544F100303ECB /* Sparkle */; }; + E1E0B9622E3133EF00C10E20 /* whisper.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = E1A8C8CA2E1257B7003E58EC /* whisper.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; E1F5FA7A2DA6CBF900B1FD8A /* Zip in Frameworks */ = {isa = PBXBuildFile; productRef = E1F5FA792DA6CBF900B1FD8A /* Zip */; }; /* End PBXBuildFile section */ @@ -39,7 +39,7 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - E1A8C8CC2E1257B7003E58EC /* whisper.xcframework in Embed Frameworks */, + E1E0B9622E3133EF00C10E20 /* whisper.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; diff --git a/VoiceInk/Services/AIService.swift b/VoiceInk/Services/AIService.swift index de98267..e702c41 100644 --- a/VoiceInk/Services/AIService.swift +++ b/VoiceInk/Services/AIService.swift @@ -13,6 +13,7 @@ enum AIProvider: String, CaseIterable { case elevenLabs = "ElevenLabs" case deepgram = "Deepgram" case custom = "Custom" + case cerebras = "Cerebras" var baseURL: String { @@ -39,6 +40,8 @@ enum AIProvider: String, CaseIterable { return "https://api.deepgram.com/v1/listen" case .custom: return UserDefaults.standard.string(forKey: "customProviderBaseURL") ?? "" + case .cerebras: + return "https://api.cerebras.ai/v1/chat/completions" } } @@ -67,6 +70,8 @@ enum AIProvider: String, CaseIterable { return UserDefaults.standard.string(forKey: "customProviderModel") ?? "" case .openRouter: return "openai/gpt-4o" + case .cerebras: + return "llama-4-scout-17b-16e-instruct" } } @@ -121,6 +126,13 @@ enum AIProvider: String, CaseIterable { return [] case .openRouter: return [] + case .cerebras: + return [ + "llama-4-scout-17b-16e-instruct", + "llama3.1-8b", + "llama-3.3-70b", + "qwen-3-32b" + ] } } diff --git a/VoiceInk/Views/AI Models/APIKeyManagementView.swift b/VoiceInk/Views/AI Models/APIKeyManagementView.swift index 4e4ddd9..1117639 100644 --- a/VoiceInk/Views/AI Models/APIKeyManagementView.swift +++ b/VoiceInk/Views/AI Models/APIKeyManagementView.swift @@ -424,6 +424,8 @@ struct APIKeyManagementView: View { URL(string: "")! // This case should never be reached case .openRouter: URL(string: "https://openrouter.ai/keys")! + case .cerebras: + URL(string: "https://cloud.cerebras.ai/")! } NSWorkspace.shared.open(url) } label: {