@@ -85,6 +85,7 @@ struct ContentView: View {
8585 enum ModelType {
8686 case llama
8787 case llava
88+ case qwen2
8889 case qwen3
8990 case phi4
9091
@@ -94,11 +95,13 @@ struct ContentView: View {
9495 return . llama
9596 } else if filename. hasPrefix ( " llava " ) {
9697 return . llava
98+ } else if filename. hasPrefix ( " qwen2 " ) {
99+ return . qwen2
97100 } else if filename. hasPrefix ( " qwen3 " ) {
98101 return . qwen3
99102 } else if filename. hasPrefix ( " phi4 " ) {
100103 return . phi4
101- }
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, . qwen2 , . qwen3, . phi4:
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, . qwen2 , . qwen3, . phi4:
358361 if let runner = runnerHolder. llamaRunner, !runner. isLoaded ( ) {
359362 var error : Error ?
360363 let startLoadTime = Date ( )
@@ -468,6 +471,8 @@ struct ContentView: View {
468471 } else {
469472 let prompt : String
470473 switch modelType {
474+ case . qwen2:
475+ prompt = String ( format: Constants . llama3PromptTemplate, text)
471476 case . qwen3:
472477 let basePrompt = String ( format: Constants . qwen3PromptTemplate, text)
473478 // If thinking mode is enabled for Qwen, don't skip the <think></think> special tokens
0 commit comments