@@ -87,6 +87,7 @@ struct ContentView: View {
8787 case llava
8888 case qwen3
8989 case phi4
90+ case gemma3
9091
9192 static func fromPath( _ path: String ) -> ModelType {
9293 let filename = ( path as NSString ) . lastPathComponent. lowercased ( )
@@ -98,7 +99,9 @@ struct ContentView: View {
9899 return . qwen3
99100 } else if filename. hasPrefix ( " phi4 " ) {
100101 return . phi4
101- }
102+ } else if filename. hasPrefix ( " gemma3 " ) {
103+ return . gemma3
104+ }
102105 print ( " Unknown model type in path: \( path) . Model filename should start with one of: llama, llava, qwen3, or phi4 " )
103106 exit ( 1 )
104107 }
@@ -346,15 +349,15 @@ struct ContentView: View {
346349 }
347350
348351 switch modelType {
349- case . llama, . qwen3, . phi4:
352+ case . llama, . qwen3, . phi4, . gemma3 :
350353 runnerHolder. llamaRunner = runnerHolder. llamaRunner ?? LLaMARunner ( modelPath: modelPath, tokenizerPath: tokenizerPath)
351354 case . llava:
352355 runnerHolder. llavaRunner = runnerHolder. llavaRunner ?? LLaVARunner ( modelPath: modelPath, tokenizerPath: tokenizerPath)
353356 }
354357
355358 guard !shouldStopGenerating else { return }
356359 switch modelType {
357- case . llama, . qwen3, . phi4:
360+ case . llama, . qwen3, . phi4, . gemma3 :
358361 if let runner = runnerHolder. llamaRunner, !runner. isLoaded ( ) {
359362 var error : Error ?
360363 let startLoadTime = Date ( )
@@ -479,6 +482,8 @@ struct ContentView: View {
479482 prompt = String ( format: Constants . llama3PromptTemplate, text)
480483 case . phi4:
481484 prompt = String ( format: Constants . phi4PromptTemplate, text)
485+ case . gemma3:
486+ prompt = String ( format: Constants . gemma3PromptTemplate, text)
482487 }
483488
484489 try runnerHolder. llamaRunner? . generate ( prompt, sequenceLength: seq_len) { token in
0 commit comments