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
21@protocol NIMAIListDelegate;
22
23/// 数字人拉取接口的回调
24typedef void(^NIMGetAlUserListBlock)(NSError * __nullable error,NSArray <NIMAIUser *> * _Nullable result);
25/// Al数字人请求代理接口的回调
26typedef void(^NIMProxyAIModelCallBlock)(NSError * __nullable error);
27
28/// 大模型类型
29typedef NS_ENUM(NSInteger, NIMAIModelType) {
31 NIMAIModelTypeQwen, // 通义千问大模型
32 NIMAIModelTypeAzure, // 微软Azure
33 NIMAIModelTypePrivate // 私有本地大模型
34};
35
36
37/// 大模型请求内容类型
38typedef NS_ENUM(NSInteger, NIMAIModelCallContentType) {
39 NIMAIModelCallContentTypeText = 0 // 暂时只有0,代表文本,预留扩展能力
40};
41
42/// 大模型角色内容
43typedef NS_ENUM(NSInteger, NIMAIModelRoleType) {
47};
48
49@protocol NIMAIManager <NSObject>
50
51/**
52 * 数字人拉取接口
53 * 返回全量的本Appkey相关的数字人用户
54 *
55 * @param completion 完成后的回调
56 */
57- (void)getAIUserList:(NIMGetAlUserListBlock)completion;
58
59
60/**
61 * Al数字人请求代理接口
62 *
63 * @param params 接口入参
64 * @param completion 完成后的回调
65 */
66
67- (void)proxyAIModelCall:(NIMProxyAIModelCallParams *)params
68 completion:(NIMProxyAIModelCallBlock)completion;
69
70
71
72/**
73* 添加数字人监听器
74*
75* @param listener 消息监听回调
76*/
77- (void)addDelegate:(id<NIMAIListDelegate>)listener;
78
79/**
80* 删除数字人监听器
81*
82* @param listener 消息监听回调
83*/
84- (void)removeDelegate:(id<NIMAIListDelegate>)listener;
85
86@end
87
88// Al数字人监听
89@protocol NIMAIListDelegate <NSObject>
90
91/**
92 * AI透传接口的响应的回调
93 * 接口调用完毕后, 接下来服务器响应以通知的形式下发, 端测需要触发回调提供.
94 * @param data 响应内容
95 */
96- (void)onProxyAIModelCall:(NIMAIModelCallResult *)data;
97
98@end
99
100
101@interface NIMAIModelCallContent : NSObject<NSCopying>
102
103/// 请求/响应的文本内容
104@property(nonatomic,copy) NSString *msg;
105
106/// 类型,暂时只有0,代表文本,预留扩展能力
107@property(nonatomic,assign) NIMAIModelCallContentType type;
108
109@end
110
111/// 请求调用上下文内容
112@interface NIMAIModelCallMessage : NSObject
113
114/// 上下文内容的角色
115@property(nonatomic,assign) NIMAIModelRoleType role;
116
117/// 上下文内容的内容
118@property(nonatomic,copy) NSString *msg;
119
120/// 类型
121@property(nonatomic,assign) NIMAIModelCallContentType type;
122
123@end
124
125/**
126 * Ai 大模型配置覆盖, 配置了该字段, 则默认覆盖控制台相关配置
127 * 如果所有字段均为空,则以控制台配置为准, 本地不做格式校验
128 * 如果设置参数超过范围, 则会主动纠正到正确范围
129 */
130@interface NIMAIModelConfigParams : NSObject<NSCopying>
131
132/// 提示词
133@property(nullable,nonatomic,copy) NSString *prompt;
134
135/// 模型最大tokens数量
136@property(nonatomic,assign) NSInteger maxTokens;
137
138/**
139 * 取值范围(0,1),生成时,核采样方法的概率阈值。
140 * 例如,取值为0.8时,仅保留累计概率之和大于等于0.8的概率分布中的token,作为随机采样的候选集。取值范围为(0,1.0),取值越大,生成的随机性越高;取值越低,生成的随机性越低。
141 * 默认值 0.5。注意,取值不要大于等于1
142 */
143
144@property(nonatomic,assign) CGFloat topP;
145
146/**
147 * 取值范围(0,2),用于控制随机性和多样性的程度。
148 * 具体来说,temperature值控制了生成文本时对每个候选词的概率分布进行平滑的程度。较高的temperature值会降低概率分布的峰值,使得更多的低概率词被选择,生成结果更加多样化;而较低的temperature值则会增强概率分布的峰值,使得高概率词更容易被选择,生成结果更加确定。
149 */
150@property(nonatomic,assign) CGFloat temperature;
151
152@end
153
154@interface NIMProxyAIModelCallParams : NSObject
155
156/// 机器人账号ID
157@property(nonatomic,copy) NSString *accountId;
158
159/// 请求id
160@property(nonatomic,copy) NSString *requestId;
161
162/// 请求大模型的内容
163@property(nonatomic,strong) NIMAIModelCallContent *content;
164
165/// 上下文内容
166@property(nullable,nonatomic,strong) NSArray<NIMAIModelCallMessage *> *messages;
167
168/// 提示词变量占位符替换
169/// JSON 格式的字符串
170/// 用于填充prompt中的变量
171@property(nullable,nonatomic,copy) NSString *promptVariables;
172
173/// 请求接口模型相关参数配置, 如果参数不为空,则默认覆盖控制相关配置
174@property(nullable,nonatomic,strong) NIMAIModelConfigParams *modelConfigParams;
175
176/// AI 透传接口的反垃圾配置
177@property(nullable,nonatomic,strong) NIMProxyAICallAntispamConfig *antispamConfig;
178@end
179
180@interface NIMAIModelConfig : NSObject
181
182/// 具体大模型版本模型名
183@property(nonatomic,copy) NSString *model;
184
185/// 提示词
186@property(nonatomic,copy) NSString *prompt;
187
188/// 提示词对应的变量
189@property(nullable,nonatomic,strong) NSArray *promptKeys;
190
191/// 模型最大tokens数量
192@property(nonatomic,assign) NSInteger maxTokens;
193
194/**
195 * 取值范围(0,1),生成时,核采样方法的概率阈值。
196 * 例如,取值为0.8时,仅保留累计概率之和大于等于0.8的概率分布中的token,作为随机采样的候选集。取值范围为(0,1.0),取值越大,生成的随机性越高;取值越低,生成的随机性越低。
197 * 默认值 0.5。注意,取值不要大于等于1
198 */
199
200@property(nonatomic,assign) CGFloat topP;
201
202/**
203 * 取值范围(0,2),用于控制随机性和多样性的程度。
204 * 具体来说,temperature值控制了生成文本时对每个候选词的概率分布进行平滑的程度。较高的temperature值会降低概率分布的峰值,使得更多的低概率词被选择,生成结果更加多样化;而较低的temperature值则会增强概率分布的峰值,使得高概率词更容易被选择,生成结果更加确定。
205 */
206@property(nonatomic,assign) CGFloat temperature;
207
208@end
209
211
212/// 大模型类型
213@property(nonatomic,assign) NIMAIModelType modelType;
214
215/// 模型相关配置信息
216@property(nullable,nonatomic) NIMAIModelConfig *modelConfig;
217
218@end
219
220
221@interface NIMProxyAICallAntispamConfig : NSObject
222/// 指定消息是否需要经过安全通。默认为 true
223/// 对于已开通安全通的用户有效,默认消息都会走安全通,如果对单条消息设置 enable 为 false,则此消息不会走安全通
224@property(nonatomic,assign) BOOL antispamEnabled;
225
226/// 指定易盾业务id
227@property(nullable,nonatomic,copy) NSString *antispamBusinessId;
228@end
229
230@interface NIMAIModelCallResult : NSObject
231
232/// 数字人的accountId
233@property(nonatomic,copy) NSString *accountId;
234
235/// 本次响应的标识
236@property(nonatomic,copy) NSString *requestId;
237
238/// 请求AI的回复
239@property(nonatomic,strong) NIMAIModelCallContent *content;
240
241/// AI响应的状态码
242@property(nonatomic,assign) NSInteger code;
243
244@end
245
246NS_ASSUME_NONNULL_END
NIMAIModelCallContentType
大模型请求内容类型
Definition: NIMAIManagerProtocol.h:38
@ NIMAIModelCallContentTypeText
Definition: NIMAIManagerProtocol.h:39
NIMAIModelType
大模型类型
Definition: NIMAIManagerProtocol.h:29
@ NIMAIModelTypeQwen
Definition: NIMAIManagerProtocol.h:31
@ NIMAIModelTypeAzure
Definition: NIMAIManagerProtocol.h:32
@ NIMAIModelTypePrivate
Definition: NIMAIManagerProtocol.h:33
@ NIMAIModelTypeUnknow
Definition: NIMAIManagerProtocol.h:30
NIMAIModelRoleType
大模型角色内容
Definition: NIMAIManagerProtocol.h:43
@ NIMAIModelRoleTypeUser
Definition: NIMAIManagerProtocol.h:45
@ NIMAIModelRoleTypeAssistant
Definition: NIMAIManagerProtocol.h:46
@ NIMAIModelRoleTypeSystem
Definition: NIMAIManagerProtocol.h:44
void(^ NIMProxyAIModelCallBlock)(NSError *__nullable error)
Al数字人请求代理接口的回调
Definition: NIMAIManagerProtocol.h:26
void(^ NIMGetAlUserListBlock)(NSError *__nullable error, NSArray< NIMAIUser * > *_Nullable result)
数字人拉取接口的回调
Definition: NIMAIManagerProtocol.h:24
Definition: NIMAIManagerProtocol.h:101
NIMAIModelCallContentType type
类型,暂时只有0,代表文本,预留扩展能力
Definition: NIMAIManagerProtocol.h:107
NSString * msg
请求/响应的文本内容
Definition: NIMAIManagerProtocol.h:104
请求调用上下文内容
Definition: NIMAIManagerProtocol.h:113
Definition: NIMAIManagerProtocol.h:231
Definition: NIMAIManagerProtocol.h:181
Definition: NIMAIManagerProtocol.h:130
Definition: NIMAIManagerProtocol.h:211
Definition: NIMAIManagerProtocol.h:222
Definition: NIMAIManagerProtocol.h:155
Definition: NIMUser.h:114