@@ -84,6 +84,7 @@ struct ContentView: View {
8484 enum ModelType {
8585 case llama
8686 case llava
87+ case qwen2
8788 case qwen3
8889 case phi4
8990
@@ -93,11 +94,14 @@ struct ContentView: View {
9394 return . llama
9495 } else if filename. hasPrefix ( " llava " ) {
9596 return . llava
97+ } else if filename. hasPrefix ( " qwen2 " ) {
98+ return . qwen2
9699 } else if filename. hasPrefix ( " qwen3 " ) {
97100 return . qwen3
98101 } else if filename. hasPrefix ( " phi4 " ) {
99102 return . phi4
100103 }
104+
101105 print ( " Unknown model type in path: \( path) . Model filename should start with one of: llama, llava, qwen3, or phi4 " )
102106 exit ( 1 )
103107 }
@@ -345,7 +349,7 @@ struct ContentView: View {
345349 }
346350
347351 switch modelType {
348- case . llama, . qwen3, . phi4:
352+ case . llama, . qwen2 , . qwen3, . phi4:
349353 runnerHolder. textRunner = runnerHolder. textRunner ?? TextRunner (
350354 modelPath: modelPath,
351355 tokenizerPath: tokenizerPath,
@@ -372,7 +376,7 @@ struct ContentView: View {
372376
373377 guard !shouldStopGenerating else { return }
374378 switch modelType {
375- case . llama, . qwen3, . phi4:
379+ case . llama, . qwen2 , . qwen3, . phi4:
376380 if let runner = runnerHolder. textRunner, !runner. isLoaded ( ) {
377381 var error : Error ?
378382 let startLoadTime = Date ( )
@@ -482,6 +486,8 @@ struct ContentView: View {
482486 } else {
483487 let prompt : String
484488 switch modelType {
489+ case . qwen2:
490+ prompt = String ( format: Constants . llama3PromptTemplate, text)
485491 case . qwen3:
486492 let basePrompt = String ( format: Constants . qwen3PromptTemplate, text)
487493 // If thinking mode is enabled for Qwen, don't skip the <think></think> special tokens
0 commit comments