NIMSDK-iOS
载入中...
搜索中...
未找到
NIMAIManagerProtocol.h
浏览该文件的文档.
1//
2// NIMAIManagerProtocol.h
3// NIMLib
4//
5// Created by 崔生余 on 2024/5/20.
6// Copyright © 2024 Netease. All rights reserved.
7//
8
9#import <Foundation/Foundation.h>
11#import "NIMUser.h"
12
13NS_ASSUME_NONNULL_BEGIN
14
17@class NIMAIUser;
20@class NIMAIRAGInfo;
23
24@protocol NIMAIListDelegate;
25
26/// 数字人拉取接口的回调
27typedef void(^NIMGetAlUserListBlock)(NSError * __nullable error,NSArray <NIMAIUser *> * _Nullable result);
28/// Al数字人请求代理接口的回调
29typedef void(^NIMProxyAIModelCallBlock)(NSError * __nullable error);
30/// Al数字人停止
31typedef void(^NIMStopAIModelStreamCallBlock)(NSError * __nullable error);
32
33/// 大模型类型
34typedef NS_ENUM(NSInteger, NIMAIModelType) {
36 NIMAIModelTypeQwen, // 通义千问大模型
37 NIMAIModelTypeAzure, // 微软Azure
38 NIMAIModelTypePrivate // 私有本地大模型
39};
40
41
42/// 大模型请求内容类型
43typedef NS_ENUM(NSInteger, NIMAIModelCallContentType) {
44 NIMAIModelCallContentTypeText = 0 // 暂时只有0,代表文本,预留扩展能力
45};
46
47/// 大模型角色内容
48typedef NS_ENUM(NSInteger, NIMAIModelRoleType) {
52};
53
54/// 数字人流式消息状态
55typedef NS_ENUM(NSInteger, NIMAIModelStreamCallStatus) {
56 /// 非流式状态
58
59 /// 停止输出
61
62 /// 输出完成
64
65 /// 服务器异常终止
67};
68
69@protocol NIMAIManager <NSObject>
70
71/**
72 * 数字人拉取接口
73 * 返回全量的本Appkey相关的数字人用户
74 *
75 * @param completion 完成后的回调
76 */
77- (void)getAIUserList:(NIMGetAlUserListBlock)completion;
78
79
80/**
81 * Al数字人请求代理接口
82 *
83 * @param params 接口入参
84 * @param completion 完成后的回调
85 */
86
87- (void)proxyAIModelCall:(NIMProxyAIModelCallParams *)params
88 completion:(NIMProxyAIModelCallBlock)completion;
89
90
91/**
92 * 停止流式输出
93 *
94 * @param params 接口入参
95 * @param completion 完成后的回调
96 */
97- (void)stopAIModelStreamCall:(NIMAIModelStreamCallStopParams *)params
98 completion:(NIMStopAIModelStreamCallBlock)completion;
99
100
101/**
102* 添加数字人监听器
103*
104* @param listener 消息监听回调
105*/
106- (void)addDelegate:(id<NIMAIListDelegate>)listener;
107
108/**
109* 删除数字人监听器
110*
111* @param listener 消息监听回调
112*/
113- (void)removeDelegate:(id<NIMAIListDelegate>)listener;
114
115@end
116
117// Al数字人监听
118@protocol NIMAIListDelegate <NSObject>
119@optional
120
121/**
122 * AI透传接口的响应的回调
123 * 接口调用完毕后, 接下来服务器响应以通知的形式下发, 端测需要触发回调提供.
124 * @param data 响应内容
125 */
126- (void)onProxyAIModelCall:(NIMAIModelCallResult *)data;
127
128/**
129 * AI 透传接口的流式响应的回调
130 * 流式过程中回调此方法,流式结束后还是会统一调用onProxyAIModelCall方法
131 * @param data 本次响应的结构体
132 */
133- (void)onProxyAIModelStreamCall:(NIMAIModelStreamCallResult *)data;
134
135@end
136
137
138@interface NIMAIModelCallContent : NSObject<NSCopying>
139
140/// 请求/响应的文本内容
141@property(nonatomic,copy) NSString *msg;
142
143/// 类型,暂时只有0,代表文本,预留扩展能力
144@property(nonatomic,assign) NIMAIModelCallContentType type;
145
146@end
147
148/// 请求调用上下文内容
149@interface NIMAIModelCallMessage : NSObject
150
151/// 上下文内容的角色
152@property(nonatomic,assign) NIMAIModelRoleType role;
153
154/// 上下文内容的内容
155@property(nonatomic,copy) NSString *msg;
156
157/// 类型
158@property(nonatomic,assign) NIMAIModelCallContentType type;
159
160@end
161
162/**
163 * Ai 大模型配置覆盖, 配置了该字段, 则默认覆盖控制台相关配置
164 * 如果所有字段均为空,则以控制台配置为准, 本地不做格式校验
165 * 如果设置参数超过范围, 则会主动纠正到正确范围
166 */
167@interface NIMAIModelConfigParams : NSObject<NSCopying>
168
169/// 提示词
170@property(nullable,nonatomic,copy) NSString *prompt;
171
172/// 模型最大tokens数量
173@property(nonatomic,assign) NSInteger maxTokens;
174
175/**
176 * 取值范围(0,1),生成时,核采样方法的概率阈值。
177 * 例如,取值为0.8时,仅保留累计概率之和大于等于0.8的概率分布中的token,作为随机采样的候选集。取值范围为(0,1.0),取值越大,生成的随机性越高;取值越低,生成的随机性越低。
178 * 默认值 0.5。注意,取值不要大于等于1
179 */
180
181@property(nonatomic,assign) CGFloat topP;
182
183/**
184 * 取值范围(0,2),用于控制随机性和多样性的程度。
185 * 具体来说,temperature值控制了生成文本时对每个候选词的概率分布进行平滑的程度。较高的temperature值会降低概率分布的峰值,使得更多的低概率词被选择,生成结果更加多样化;而较低的temperature值则会增强概率分布的峰值,使得高概率词更容易被选择,生成结果更加确定。
186 */
187@property(nonatomic,assign) CGFloat temperature;
188
189@end
190
191@interface NIMProxyAIModelCallParams : NSObject
192
193/// 机器人账号ID
194@property(nonatomic,copy) NSString *accountId;
195
196/// 请求id
197@property(nonatomic,copy) NSString *requestId;
198
199/// 请求大模型的内容
200@property(nonatomic,strong) NIMAIModelCallContent *content;
201
202/// 上下文内容
203@property(nullable,nonatomic,strong) NSArray<NIMAIModelCallMessage *> *messages;
204
205/// 提示词变量占位符替换
206/// JSON 格式的字符串
207/// 用于填充prompt中的变量
208@property(nullable,nonatomic,copy) NSString *promptVariables;
209
210/// 请求接口模型相关参数配置, 如果参数不为空,则默认覆盖控制相关配置
211@property(nullable,nonatomic,strong) NIMAIModelConfigParams *modelConfigParams;
212
213/// AI 透传接口的反垃圾配置
214@property(nullable,nonatomic,strong) NIMProxyAICallAntispamConfig *antispamConfig;
215
216/// 是否是流式响应,默认NO
217@property(nonatomic,assign,readwrite) BOOL aiStream;
218@end
219
220@interface NIMAIModelConfig : NSObject
221
222/// 具体大模型版本模型名
223@property(nonatomic,copy) NSString *model;
224
225/// 提示词
226@property(nonatomic,copy) NSString *prompt;
227
228/// 提示词对应的变量
229@property(nullable,nonatomic,strong) NSArray *promptKeys;
230
231/// 模型最大tokens数量
232@property(nonatomic,assign) NSInteger maxTokens;
233
234/**
235 * 取值范围(0,1),生成时,核采样方法的概率阈值。
236 * 例如,取值为0.8时,仅保留累计概率之和大于等于0.8的概率分布中的token,作为随机采样的候选集。取值范围为(0,1.0),取值越大,生成的随机性越高;取值越低,生成的随机性越低。
237 * 默认值 0.5。注意,取值不要大于等于1
238 */
239
240@property(nonatomic,assign) CGFloat topP;
241
242/**
243 * 取值范围(0,2),用于控制随机性和多样性的程度。
244 * 具体来说,temperature值控制了生成文本时对每个候选词的概率分布进行平滑的程度。较高的temperature值会降低概率分布的峰值,使得更多的低概率词被选择,生成结果更加多样化;而较低的temperature值则会增强概率分布的峰值,使得高概率词更容易被选择,生成结果更加确定。
245 */
246@property(nonatomic,assign) CGFloat temperature;
247
248@end
249
251
252/// 大模型类型
253@property(nonatomic,assign) NIMAIModelType modelType;
254
255/// 模型相关配置信息
256@property(nullable,nonatomic) NIMAIModelConfig *modelConfig;
257
258@end
259
260
261@interface NIMProxyAICallAntispamConfig : NSObject
262/// 指定消息是否需要经过安全通。默认为 true
263/// 对于已开通安全通的用户有效,默认消息都会走安全通,如果对单条消息设置 enable 为 false,则此消息不会走安全通
264@property(nonatomic,assign) BOOL antispamEnabled;
265
266/// 指定易盾业务id
267@property(nullable,nonatomic,copy) NSString *antispamBusinessId;
268@end
269
270@interface NIMAIModelCallResult : NSObject
271
272/// 数字人的accountId
273@property(nonatomic,copy) NSString *accountId;
274
275/// 本次响应的标识
276@property(nonatomic,copy) NSString *requestId;
277
278/// 请求AI的回复
279@property(nonatomic,strong) NIMAIModelCallContent *content;
280
281/// AI响应的状态码
282@property(nonatomic,assign) NSInteger code;
283
284/// 数字人回复内容的引用资源列表
285@property (nonatomic, strong) NSArray<NIMAIRAGInfo *> *aiRAGs;
286
287/// 回复的时间戳
288@property (nonatomic, assign) NSTimeInterval timestamp;
289
290/// 是否是流式响应,默认false
291@property (nonatomic, assign) BOOL aiStream;
292
293/// 数字人流式响应状态
294@property (nonatomic, assign) NIMAIModelStreamCallStatus aiStreamStatus;
295
296@end
297
298/// 透传协议流式分片信息
299@interface NIMAIModelStreamCallChunk : NSObject
300
301/// 数字人流式回复分片文本
302@property (nonatomic, copy) NSString *content;
303
304/// 数字人流式回复当前分片时间
305@property (nonatomic, assign) NSTimeInterval chunkTime;
306
307/// 类型,当前仅支持0表示文本
308@property (nonatomic, assign) NSInteger type;
309
310/// 分片序号,从0开始
311@property (nonatomic, assign) NSInteger index;
312
313@end
314
315/// 流式回复内容
316@interface NIMAIModelStreamCallContent : NSObject
317
318/// 数字人流式回复分片组装好的文本
319@property (nonatomic, copy, readonly) NSString *msg;
320
321/// 类型,当前仅支持0表示文本
322@property (nonatomic, assign, readonly) NSInteger type;
323
324/// 数字人流式回复最近一个分片
325@property (nonatomic, strong, readonly) NIMAIModelStreamCallChunk *lastChunk;
326
327@end
328
329/// 透传接口的 AI 流式回复的结构体
330@interface NIMAIModelStreamCallResult : NSObject
331
332/// AI 响应的状态码
333@property (nonatomic, assign, readonly) NSInteger code;
334
335/// 数字人的 accountId
336@property (nonatomic, copy, readonly) NSString *accountId;
337
338/// 本次响应的标识
339@property (nonatomic, copy, readonly) NSString *requestId;
340
341/// 请求 AI 的回复
342@property (nonatomic, strong, readonly) NIMAIModelStreamCallContent *content;
343
344/// 数字人回复内容的引用资源列表
345/// 第一个分片才下发
346@property (nonatomic, copy, readonly) NSArray<NIMAIRAGInfo *> *aiRAGs;
347
348/// 分片的时间戳
349@property (nonatomic, assign, readonly) NSTimeInterval timestamp;
350
351@end
352
353/// 停止透传接口的 AI 流式回复
355
356/// 机器人账号ID
357/// AIUser对应的账号ID
358@property (nonatomic, copy) NSString *accountId;
359
360/// 请求id
361@property (nonatomic, copy) NSString *requestId;
362
363@end
364
365NS_ASSUME_NONNULL_END
NIMAIModelCallContentType
大模型请求内容类型
Definition: NIMAIManagerProtocol.h:43
@ NIMAIModelCallContentTypeText
Definition: NIMAIManagerProtocol.h:44
void(^ NIMStopAIModelStreamCallBlock)(NSError *__nullable error)
Al数字人停止
Definition: NIMAIManagerProtocol.h:31
NIMAIModelType
大模型类型
Definition: NIMAIManagerProtocol.h:34
@ NIMAIModelTypeQwen
Definition: NIMAIManagerProtocol.h:36
@ NIMAIModelTypeAzure
Definition: NIMAIManagerProtocol.h:37
@ NIMAIModelTypePrivate
Definition: NIMAIManagerProtocol.h:38
@ NIMAIModelTypeUnknow
Definition: NIMAIManagerProtocol.h:35
NIMAIModelRoleType
大模型角色内容
Definition: NIMAIManagerProtocol.h:48
@ NIMAIModelRoleTypeUser
Definition: NIMAIManagerProtocol.h:50
@ NIMAIModelRoleTypeAssistant
Definition: NIMAIManagerProtocol.h:51
@ NIMAIModelRoleTypeSystem
Definition: NIMAIManagerProtocol.h:49
void(^ NIMProxyAIModelCallBlock)(NSError *__nullable error)
Al数字人请求代理接口的回调
Definition: NIMAIManagerProtocol.h:29
NIMAIModelStreamCallStatus
数字人流式消息状态
Definition: NIMAIManagerProtocol.h:55
@ NIM_AI_MODEL_STREAM_CALL_STATUS_NONE
非流式状态
Definition: NIMAIManagerProtocol.h:57
@ NIM_AI_MODEL_STREAM_CALL_STATUS_CANCEL
停止输出
Definition: NIMAIManagerProtocol.h:60
@ NIM_AI_MODEL_STREAM_CALL_STATUS_ABORTED
服务器异常终止
Definition: NIMAIManagerProtocol.h:66
@ NIM_AI_MODEL_STREAM_CALL_STATUS_GENERATED
输出完成
Definition: NIMAIManagerProtocol.h:63
void(^ NIMGetAlUserListBlock)(NSError *__nullable error, NSArray< NIMAIUser * > *_Nullable result)
数字人拉取接口的回调
Definition: NIMAIManagerProtocol.h:27
Definition: NIMAIManagerProtocol.h:138
NIMAIModelCallContentType type
类型,暂时只有0,代表文本,预留扩展能力
Definition: NIMAIManagerProtocol.h:144
NSString * msg
请求/响应的文本内容
Definition: NIMAIManagerProtocol.h:141
请求调用上下文内容
Definition: NIMAIManagerProtocol.h:150
Definition: NIMAIManagerProtocol.h:271
Definition: NIMAIManagerProtocol.h:221
Definition: NIMAIManagerProtocol.h:167
透传协议流式分片信息
Definition: NIMAIManagerProtocol.h:300
流式回复内容
Definition: NIMAIManagerProtocol.h:317
透传接口的 AI 流式回复的结构体
Definition: NIMAIManagerProtocol.h:331
停止透传接口的 AI 流式回复
Definition: NIMAIManagerProtocol.h:355
引用资源信息类
Definition: NIMMessageAIConfig.h:119
Definition: NIMAIManagerProtocol.h:251
Definition: NIMAIManagerProtocol.h:262
Definition: NIMAIManagerProtocol.h:192
Definition: NIMUser.h:114