Files
keyboard/keyBoard/Class/AiTalk/VM/AiVM.h

169 lines
6.9 KiB
C
Raw Normal View History

2026-01-22 13:47:34 +08:00
//
// AiVM.h
// keyBoard
//
// Created by Mac on 2026/1/22.
//
#import <Foundation/Foundation.h>
2026-01-26 16:53:41 +08:00
#import "KBPersonaPageModel.h"
2026-01-26 18:17:02 +08:00
#import "KBChatHistoryPageModel.h"
2026-01-27 21:32:52 +08:00
#import "KBCommentModel.h"
2026-01-28 16:35:47 +08:00
#import "KBLikedCompanionModel.h"
#import "KBChattedCompanionModel.h"
2026-01-28 18:58:30 +08:00
#import "KBChatSessionResetModel.h"
2026-01-22 13:47:34 +08:00
NS_ASSUME_NONNULL_BEGIN
2026-01-22 22:03:56 +08:00
@interface KBAiSyncData : NSObject
@property(nonatomic, copy, nullable) NSString *aiResponse;
@property(nonatomic, copy, nullable) NSString *audioBase64;
@property(nonatomic, strong, nullable) NSData *audioData;
@end
@interface KBAiSyncResponse : NSObject
@property(nonatomic, assign) NSInteger code;
@property(nonatomic, strong, nullable) KBAiSyncData *data;
@end
typedef void (^AiVMSyncCompletion)(KBAiSyncResponse *_Nullable response,
NSError *_Nullable error);
@interface KBAiMessageData : NSObject
@property(nonatomic, copy, nullable) NSString *content;
@property(nonatomic, copy, nullable) NSString *text;
@property(nonatomic, copy, nullable) NSString *message;
2026-01-23 21:51:37 +08:00
@property(nonatomic, copy, nullable) NSString *aiResponse;
@property(nonatomic, copy, nullable) NSString *audioId;
@property(nonatomic, assign) NSInteger llmDuration;
2026-01-22 22:03:56 +08:00
@end
@interface KBAiMessageResponse : NSObject
@property(nonatomic, assign) NSInteger code;
@property(nonatomic, strong, nullable) KBAiMessageData *data;
2026-01-27 16:28:17 +08:00
@property(nonatomic, copy, nullable) NSString *message;
2026-01-22 22:03:56 +08:00
@end
typedef void (^AiVMMessageCompletion)(KBAiMessageResponse *_Nullable response,
NSError *_Nullable error);
2026-01-23 21:51:37 +08:00
typedef void (^AiVMAudioURLCompletion)(NSString *_Nullable audioURL,
NSError *_Nullable error);
2026-01-27 13:57:32 +08:00
typedef void (^AiVMUploadAudioCompletion)(NSString *_Nullable fileURL,
NSError *_Nullable error);
2026-01-22 22:03:56 +08:00
2026-01-27 16:28:17 +08:00
@interface KBAiSpeechTranscribeData : NSObject
@property(nonatomic, copy, nullable) NSString *transcript;
@property(nonatomic, assign) double confidence;
@property(nonatomic, assign) double duration;
@property(nonatomic, copy, nullable) NSString *detectedLanguage;
@end
@interface KBAiSpeechTranscribeResponse : NSObject
@property(nonatomic, assign) NSInteger code;
@property(nonatomic, strong, nullable) KBAiSpeechTranscribeData *data;
@property(nonatomic, copy, nullable) NSString *message;
@end
typedef void (^AiVMSpeechTranscribeCompletion)(KBAiSpeechTranscribeResponse *_Nullable response,
NSError *_Nullable error);
2026-01-22 13:47:34 +08:00
@interface AiVM : NSObject
2026-01-22 22:03:56 +08:00
- (void)syncChatWithTranscript:(NSString *)transcript
completion:(AiVMSyncCompletion)completion;
- (void)requestChatMessageWithContent:(NSString *)content
2026-01-26 18:51:37 +08:00
companionId:(NSInteger)companionId
2026-01-22 22:03:56 +08:00
completion:(AiVMMessageCompletion)completion;
2026-01-23 21:51:37 +08:00
/// 根据 audioId 获取音频 URL
- (void)requestAudioWithAudioId:(NSString *)audioId
completion:(AiVMAudioURLCompletion)completion;
2026-01-22 22:03:56 +08:00
2026-01-27 13:57:32 +08:00
/// 上传语音文件m4a
- (void)uploadAudioFileAtURL:(NSURL *)fileURL
completion:(AiVMUploadAudioCompletion)completion;
2026-01-27 16:28:17 +08:00
/// 语音转文字multipart/form-data
- (void)transcribeAudioFileAtURL:(NSURL *)fileURL
completion:(AiVMSpeechTranscribeCompletion)completion;
2026-01-26 16:53:41 +08:00
#pragma mark - 人设相关接口
/// 分页查询人设列表
/// @param pageNum 页码(从 1 开始)
/// @param pageSize 每页大小
/// @param completion 完成回调
- (void)fetchPersonasWithPageNum:(NSInteger)pageNum
pageSize:(NSInteger)pageSize
completion:(void(^)(KBPersonaPageModel * _Nullable pageModel, NSError * _Nullable error))completion;
2026-01-26 18:17:02 +08:00
/// 分页查询聊天记录
/// @param companionId AI 陪聊角色 ID
/// @param pageNum 页码(从 1 开始)
/// @param pageSize 每页大小
/// @param completion 完成回调
- (void)fetchChatHistoryWithCompanionId:(NSInteger)companionId
pageNum:(NSInteger)pageNum
pageSize:(NSInteger)pageSize
completion:(void(^)(KBChatHistoryPageModel * _Nullable pageModel, NSError * _Nullable error))completion;
2026-01-27 21:32:52 +08:00
#pragma mark - 评论相关接口
/// 发表评论
/// @param companionId AI 陪聊角色 ID
/// @param content 评论内容
/// @param parentId 父评论 ID一级评论传 NULL
/// @param rootId 根评论 ID用于标识一级评论
/// @param completion 完成回调(返回 code 200 表示成功)
- (void)addCommentWithCompanionId:(NSInteger)companionId
content:(NSString *)content
parentId:(nullable NSNumber *)parentId
rootId:(NSInteger)rootId
completion:(void(^)(NSInteger code, NSError * _Nullable error))completion;
/// 分页查询评论列表
/// @param companionId AI 陪聊角色 ID
/// @param pageNum 页码(从 1 开始,默认 1
/// @param pageSize 每页大小(默认 20
/// @param completion 完成回调(返回评论分页模型)
- (void)fetchCommentsWithCompanionId:(NSInteger)companionId
pageNum:(NSInteger)pageNum
pageSize:(NSInteger)pageSize
completion:(void(^)(KBCommentPageModel * _Nullable pageModel, NSError * _Nullable error))completion;
/// 点赞/取消点赞评论
/// @param commentId 评论 ID
/// @param completion 完成回调(返回点赞响应模型)
- (void)likeCommentWithCommentId:(NSInteger)commentId
completion:(void(^)(KBCommentLikeResponse * _Nullable response, NSError * _Nullable error))completion;
/// 点赞/取消点赞 AI 角色
/// @param companionId AI 角色 ID
/// @param completion 完成回调(返回点赞响应模型)
- (void)likeCompanionWithCompanionId:(NSInteger)companionId
completion:(void(^)(KBCommentLikeResponse * _Nullable response, NSError * _Nullable error))completion;
2026-01-28 16:35:47 +08:00
#pragma mark - 点赞列表接口
/// 获取当前用户点赞过的 AI 角色列表Thumbs Up
/// @param completion 完成回调(返回点赞角色数组)
- (void)fetchLikedCompanionsWithCompletion:(void(^)(NSArray<KBLikedCompanionModel *> * _Nullable list, NSError * _Nullable error))completion;
/// 获取当前用户聊过天的 AI 角色列表Chatting
/// @param completion 完成回调(返回聊天角色数组)
- (void)fetchChattedCompanionsWithCompletion:(void(^)(NSArray<KBChattedCompanionModel *> * _Nullable list, NSError * _Nullable error))completion;
2026-01-28 18:58:30 +08:00
#pragma mark - 会话管理接口
/// 重置会话(将当前会话设为不活跃并创建新会话)
/// @param companionId AI 角色 ID
/// @param completion 完成回调(返回新会话信息)
- (void)resetChatSessionWithCompanionId:(NSInteger)companionId
completion:(void(^)(KBChatSessionResetResponse * _Nullable response, NSError * _Nullable error))completion;
2026-01-22 13:47:34 +08:00
@end
NS_ASSUME_NONNULL_END