mirror of https://github.com/alibaba/MNN.git
[update] update last model usage
This commit is contained in:
parent
16c8b58550
commit
cc5ebaf797
|
@ -196,6 +196,9 @@ final class LLMChatViewModel: ObservableObject {
|
||||||
NotificationCenter.default.post(name: .dismissKeyboard, object: nil)
|
NotificationCenter.default.post(name: .dismissKeyboard, object: nil)
|
||||||
|
|
||||||
self.send(draft: draft, userType: .user)
|
self.send(draft: draft, userType: .user)
|
||||||
|
|
||||||
|
recordModelUsage()
|
||||||
|
|
||||||
if isModelLoaded {
|
if isModelLoaded {
|
||||||
if modelInfo.modelName.lowercased().contains("diffusion") {
|
if modelInfo.modelName.lowercased().contains("diffusion") {
|
||||||
self.getDiffusionResponse(draft: draft)
|
self.getDiffusionResponse(draft: draft)
|
||||||
|
@ -390,9 +393,14 @@ final class LLMChatViewModel: ObservableObject {
|
||||||
interactor.connect()
|
interactor.connect()
|
||||||
|
|
||||||
self.setupLLM(modelPath: self.modelInfo.localPath)
|
self.setupLLM(modelPath: self.modelInfo.localPath)
|
||||||
|
|
||||||
|
recordModelUsage()
|
||||||
}
|
}
|
||||||
|
|
||||||
func onStop() {
|
func onStop() {
|
||||||
|
|
||||||
|
recordModelUsage()
|
||||||
|
|
||||||
ChatHistoryManager.shared.saveChat(
|
ChatHistoryManager.shared.saveChat(
|
||||||
historyId: historyId,
|
historyId: historyId,
|
||||||
modelInfo: modelInfo,
|
modelInfo: modelInfo,
|
||||||
|
@ -419,4 +427,14 @@ final class LLMChatViewModel: ObservableObject {
|
||||||
.sink { _ in }
|
.sink { _ in }
|
||||||
.store(in: &subscriptions)
|
.store(in: &subscriptions)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func recordModelUsage() {
|
||||||
|
ModelStorageManager.shared.updateLastUsed(for: modelInfo.modelName)
|
||||||
|
|
||||||
|
NotificationCenter.default.post(
|
||||||
|
name: .modelUsageUpdated,
|
||||||
|
object: nil,
|
||||||
|
userInfo: ["modelName": modelInfo.modelName]
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
import Combine
|
||||||
|
|
||||||
class ModelListViewModel: ObservableObject {
|
class ModelListViewModel: ObservableObject {
|
||||||
// MARK: - Published Properties
|
// MARK: - Published Properties
|
||||||
|
@ -23,6 +24,7 @@ class ModelListViewModel: ObservableObject {
|
||||||
// MARK: - Private Properties
|
// MARK: - Private Properties
|
||||||
private let modelClient = ModelClient.shared
|
private let modelClient = ModelClient.shared
|
||||||
private let pinnedModelKey = "com.mnnllm.pinnedModelIds"
|
private let pinnedModelKey = "com.mnnllm.pinnedModelIds"
|
||||||
|
private var cancellables = Set<AnyCancellable>()
|
||||||
|
|
||||||
// MARK: - Model Data Access
|
// MARK: - Model Data Access
|
||||||
|
|
||||||
|
@ -49,6 +51,17 @@ class ModelListViewModel: ObservableObject {
|
||||||
Task { @MainActor in
|
Task { @MainActor in
|
||||||
await fetchModels()
|
await fetchModels()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NotificationCenter.default
|
||||||
|
.publisher(for: .modelUsageUpdated)
|
||||||
|
.sink { [weak self] notification in
|
||||||
|
if let modelName = notification.userInfo?["modelName"] as? String {
|
||||||
|
Task { @MainActor in
|
||||||
|
self?.updateModelLastUsed(modelName: modelName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.store(in: &cancellables)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Model Data Management
|
// MARK: - Model Data Management
|
||||||
|
@ -490,4 +503,20 @@ class ModelListViewModel: ObservableObject {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@MainActor
|
||||||
|
private func updateModelLastUsed(modelName: String) {
|
||||||
|
if let index = models.firstIndex(where: { $0.modelName == modelName }) {
|
||||||
|
if let lastUsed = ModelStorageManager.shared.getLastUsed(for: modelName) {
|
||||||
|
models[index].lastUsedAt = lastUsed
|
||||||
|
sortModels(fetchedModels: &models)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Notification Names
|
||||||
|
|
||||||
|
extension Notification.Name {
|
||||||
|
static let modelUsageUpdated = Notification.Name("modelUsageUpdated")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue