MNN/apps/iOS/MNNLLMChat/MNNLLMiOS/Chat/Models/LLMChatData.swift

77 lines
2.3 KiB
Swift
Raw Normal View History

//
// LLMChatData.swift
// MNNLLMiOS
// Modified from ExyteChat's Chat Example
//
// Created by () on 2025/1/10.
//
import UIKit
import ExyteChat
final class LLMChatData {
var assistant: LLMChatUser
var system: LLMChatUser
let user = LLMChatUser(
uid: "1",
name: "user",
avatar: AssetExtractor.createLocalUrl(forImageNamed: "mnn_icon", withExtension: "png")
)
init(modelInfo: ModelInfo) {
let icon = ModelIconManager.shared.getModelImage(with: modelInfo.localPath) ?? "mnn_icon"
self.assistant = LLMChatUser(
uid: "2",
2025-07-10 11:16:25 +08:00
name: modelInfo.modelName,
avatar: AssetExtractor.createLocalUrl(forImageNamed: icon, withExtension: "png")
)
self.system = LLMChatUser(
uid: "0",
2025-07-10 11:16:25 +08:00
name: modelInfo.modelName,
avatar: AssetExtractor.createLocalUrl(forImageNamed: icon, withExtension: "png")
)
}
func greatingMessage(historyMessages: [HistoryMessage]?) -> [LLMChatMessage] {
let sender = system
let date = Date()
var allHistoryMessages: [LLMChatMessage] = []
if let msgs = historyMessages {
for msg in msgs {
var sender = assistant
if msg.isUser == true {
sender = user
}
allHistoryMessages.append(
LLMChatMessage(uid: UUID().uuidString,
sender: sender,
createdAt: msg.createdAt,
text: msg.content,
images: msg.images ?? [],
videos: [],
recording: msg.audio,
replyMessage: nil))
}
return allHistoryMessages
}
return [LLMChatMessage(
uid: UUID().uuidString,
sender: sender,
createdAt: date,
status: sender.isCurrentUser ? .read : nil,
text: NSLocalizedString("WelcomeSceneText", comment: "") + sender.name + "!",
images: [],
videos: [],
recording: nil,
replyMessage: nil
)]
}
}