2025-02-10 19:39:48 +08:00
|
|
|
//
|
|
|
|
// 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,
|
2025-02-10 19:39:48 +08:00
|
|
|
avatar: AssetExtractor.createLocalUrl(forImageNamed: icon, withExtension: "png")
|
|
|
|
)
|
|
|
|
|
|
|
|
self.system = LLMChatUser(
|
|
|
|
uid: "0",
|
2025-07-10 11:16:25 +08:00
|
|
|
name: modelInfo.modelName,
|
2025-02-10 19:39:48 +08:00
|
|
|
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
|
|
|
|
)]
|
|
|
|
}
|
|
|
|
}
|