@@ -2,7 +2,7 @@ use std::future::Future;
22use tauri:: AppHandle ;
33use tauri_plugin_store:: StoreBuilder ;
44
5- use super :: { gemini:: GeminiProvider , ollama:: OllamaProvider , openai:: OpenAIProvider } ;
5+ use super :: { gemini:: GeminiProvider , groq :: GroqProvider , ollama:: OllamaProvider , openai:: OpenAIProvider } ;
66
77pub trait Provider {
88 fn completion ( & self , prompt : & str ) -> impl Future < Output = Result < String , String > > ;
@@ -12,6 +12,7 @@ pub enum ProviderEnum {
1212 OllamaProvider ( OllamaProvider ) ,
1313 OpenAIProvider ( OpenAIProvider ) ,
1414 GeminiProvider ( GeminiProvider ) ,
15+ GroqProvider ( GroqProvider ) ,
1516}
1617
1718impl Provider for ProviderEnum {
@@ -20,6 +21,7 @@ impl Provider for ProviderEnum {
2021 ProviderEnum :: OllamaProvider ( provider) => provider. completion ( prompt) . await ,
2122 ProviderEnum :: OpenAIProvider ( provider) => provider. completion ( prompt) . await ,
2223 ProviderEnum :: GeminiProvider ( provider) => provider. completion ( prompt) . await ,
24+ ProviderEnum :: GroqProvider ( provider) => provider. completion ( prompt) . await ,
2325 }
2426 }
2527}
@@ -57,6 +59,21 @@ pub fn get_provider(app_handler: AppHandle, provider: &str, model: &str) -> Prov
5759
5860 ProviderEnum :: GeminiProvider ( GeminiProvider :: new ( Some ( api_key) , Some ( model) ) )
5961 }
62+ "groq" => {
63+ let store = StoreBuilder :: new ( & app_handler, "store.bin" )
64+ . build ( )
65+ . expect ( "Failed to build store" ) ;
66+
67+ let api_key_value = store
68+ . get ( "LLM_API_KEY" )
69+ . expect ( "Failed to get API key from store" ) ;
70+
71+ let api_key = api_key_value
72+ . as_str ( )
73+ . expect ( "API key is not a valid string" ) ;
74+
75+ ProviderEnum :: GroqProvider ( GroqProvider :: new ( Some ( api_key) , Some ( model) ) )
76+ }
6077 _ => panic ! ( "Invalid provider" ) ,
6178 }
6279}
0 commit comments