mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-25 05:48:47 +01:00
llama.swiftui : support loading custom model from file picker (#4767)
* swiftui: support load model from file picker * swiftui: remove trailing whitespace
This commit is contained in:
parent
e5804313a1
commit
3c0b585561
@ -23,6 +23,7 @@
|
|||||||
8A3F84242AC4C891005E2EE8 /* models in Resources */ = {isa = PBXBuildFile; fileRef = 8A3F84232AC4C891005E2EE8 /* models */; };
|
8A3F84242AC4C891005E2EE8 /* models in Resources */ = {isa = PBXBuildFile; fileRef = 8A3F84232AC4C891005E2EE8 /* models */; };
|
||||||
8A907F332AC7138A006146EA /* LibLlama.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A907F322AC7134E006146EA /* LibLlama.swift */; };
|
8A907F332AC7138A006146EA /* LibLlama.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A907F322AC7134E006146EA /* LibLlama.swift */; };
|
||||||
8A9F7C4D2AC332EE008AE1EA /* LlamaState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9F7C4C2AC332EE008AE1EA /* LlamaState.swift */; };
|
8A9F7C4D2AC332EE008AE1EA /* LlamaState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9F7C4C2AC332EE008AE1EA /* LlamaState.swift */; };
|
||||||
|
F1FE20E22B465ECA00B45541 /* LoadCustomButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F1FE20E12B465EC900B45541 /* LoadCustomButton.swift */; };
|
||||||
F1FE20DC2B465C4500B45541 /* ggml-metal.metal in Resources */ = {isa = PBXBuildFile; fileRef = 549479C82AC9E10B00E0F78B /* ggml-metal.metal */; };
|
F1FE20DC2B465C4500B45541 /* ggml-metal.metal in Resources */ = {isa = PBXBuildFile; fileRef = 549479C82AC9E10B00E0F78B /* ggml-metal.metal */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
@ -68,6 +69,7 @@
|
|||||||
8A3F84232AC4C891005E2EE8 /* models */ = {isa = PBXFileReference; lastKnownFileType = folder; name = models; path = llama.swiftui/Resources/models; sourceTree = "<group>"; };
|
8A3F84232AC4C891005E2EE8 /* models */ = {isa = PBXFileReference; lastKnownFileType = folder; name = models; path = llama.swiftui/Resources/models; sourceTree = "<group>"; };
|
||||||
8A907F322AC7134E006146EA /* LibLlama.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibLlama.swift; sourceTree = "<group>"; };
|
8A907F322AC7134E006146EA /* LibLlama.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibLlama.swift; sourceTree = "<group>"; };
|
||||||
8A9F7C4C2AC332EE008AE1EA /* LlamaState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LlamaState.swift; sourceTree = "<group>"; };
|
8A9F7C4C2AC332EE008AE1EA /* LlamaState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LlamaState.swift; sourceTree = "<group>"; };
|
||||||
|
F1FE20E12B465EC900B45541 /* LoadCustomButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadCustomButton.swift; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
/* Begin PBXFrameworksBuildPhase section */
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
@ -182,6 +184,7 @@
|
|||||||
children = (
|
children = (
|
||||||
7FA3D2B22B2EA2F600543F92 /* DownloadButton.swift */,
|
7FA3D2B22B2EA2F600543F92 /* DownloadButton.swift */,
|
||||||
8A1C83782AC328BD0096AF73 /* ContentView.swift */,
|
8A1C83782AC328BD0096AF73 /* ContentView.swift */,
|
||||||
|
F1FE20E12B465EC900B45541 /* LoadCustomButton.swift */,
|
||||||
);
|
);
|
||||||
path = UI;
|
path = UI;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -274,6 +277,7 @@
|
|||||||
files = (
|
files = (
|
||||||
542376082B0D9BFB008E6A1C /* ggml-quants.c in Sources */,
|
542376082B0D9BFB008E6A1C /* ggml-quants.c in Sources */,
|
||||||
549479CD2AC9E42A00E0F78B /* ggml-metal.m in Sources */,
|
549479CD2AC9E42A00E0F78B /* ggml-metal.m in Sources */,
|
||||||
|
F1FE20E22B465ECA00B45541 /* LoadCustomButton.swift in Sources */,
|
||||||
542EA09D2AC8723900A8AEE9 /* ggml.c in Sources */,
|
542EA09D2AC8723900A8AEE9 /* ggml.c in Sources */,
|
||||||
8A907F332AC7138A006146EA /* LibLlama.swift in Sources */,
|
8A907F332AC7138A006146EA /* LibLlama.swift in Sources */,
|
||||||
542EA0A32AC8729100A8AEE9 /* llama.cpp in Sources */,
|
542EA0A32AC8729100A8AEE9 /* llama.cpp in Sources */,
|
||||||
|
@ -103,6 +103,8 @@ struct ContentView: View {
|
|||||||
ContentView.cleanupModelCaches()
|
ContentView.cleanupModelCaches()
|
||||||
llamaState.cacheCleared = true
|
llamaState.cacheCleared = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LoadCustomButton(llamaState: llamaState)
|
||||||
}
|
}
|
||||||
.padding(.top, 4)
|
.padding(.top, 4)
|
||||||
.font(.system(size: 12))
|
.font(.system(size: 12))
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
import SwiftUI
|
||||||
|
import UniformTypeIdentifiers
|
||||||
|
|
||||||
|
struct LoadCustomButton: View {
|
||||||
|
@ObservedObject private var llamaState: LlamaState
|
||||||
|
@State private var showFileImporter = false
|
||||||
|
|
||||||
|
init(llamaState: LlamaState) {
|
||||||
|
self.llamaState = llamaState
|
||||||
|
}
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
VStack {
|
||||||
|
Button(action: {
|
||||||
|
showFileImporter = true
|
||||||
|
}) {
|
||||||
|
Text("Load Custom Model")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.fileImporter(
|
||||||
|
isPresented: $showFileImporter,
|
||||||
|
allowedContentTypes: [UTType(filenameExtension: "gguf", conformingTo: .data)!],
|
||||||
|
allowsMultipleSelection: false
|
||||||
|
) { result in
|
||||||
|
switch result {
|
||||||
|
case .success(let files):
|
||||||
|
files.forEach { file in
|
||||||
|
let gotAccess = file.startAccessingSecurityScopedResource()
|
||||||
|
if !gotAccess { return }
|
||||||
|
|
||||||
|
do {
|
||||||
|
try llamaState.loadModel(modelUrl: file.absoluteURL)
|
||||||
|
} catch let err {
|
||||||
|
print("Error: \(err.localizedDescription)")
|
||||||
|
}
|
||||||
|
|
||||||
|
file.stopAccessingSecurityScopedResource()
|
||||||
|
}
|
||||||
|
case .failure(let error):
|
||||||
|
print(error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user