NIMSDK-AOS  10.9.90
V2NIMProxyAIModelCallParams.java
浏览该文件的文档.
1 package com.netease.nimlib.sdk.v2.ai.params;
2 
3 import android.text.TextUtils;
4 import com.netease.nimlib.log.NimLog;
6 import com.netease.nimlib.util.StringUtil;
7 import java.util.List;
8 
9 /**
10  * AI 数字人代理请求参数
11  */
13 
14  private static final String TAG = "V2NIMProxyAIModelCallParams";
15 
16  /**
17  * 机器人账号ID,AIUser对应的账号ID
18  */
19  private final String accountId;
20 
21  /**
22  * 请求id
23  */
24  private final String requestId;
25 
26  /**
27  * 请求大模型的内容
28  */
29  private final V2NIMAIModelCallContent content;
30 
31  /**
32  * 上下文内容
33  */
34  private List<V2NIMAIModelCallMessage> messages;
35 
36  /**
37  * 提示词变量占位符替换,JSON 格式的字符串用于填充prompt中的变量
38  */
39  private String promptVariables;
40 
41  /**
42  * 请求接口模型相关参数配置, 如果参数不为空,则默认覆盖控制相关配置
43  */
44  private V2NIMAIModelConfigParams modelConfigParams;
45 
46  /**
47  * 反垃圾配置, 复用消息体里的部分反垃圾字段
48  */
49  private V2NIMProxyAICallAntispamConfig antispamConfig;
50 
51  /**
52  * 是否流式响应,默认为 false
53  */
54  private boolean aiStream = false;
55 
56  private V2NIMProxyAIModelCallParams() {
57  this(null, null, null);
58  }
59 
60  /**
61  * 构造函数
62  *
63  * @param accountId 机器人账号ID
64  * @param requestId 请求id
65  * @param content 请求大模型的内容
66  */
67  public V2NIMProxyAIModelCallParams(String accountId, String requestId, V2NIMAIModelCallContent content) {
68  this.accountId = accountId;
69  this.requestId = requestId;
70  this.content = content;
71  this.aiStream = false;
72 
73  }
74 
75  /**
76  * 获取机器人账号ID
77  *
78  * @return 机器人账号ID
79  */
80  public String getAccountId() {
81  return accountId;
82  }
83 
84 
85  /**
86  * 获取请求id
87  *
88  * @return 请求id
89  */
90  public String getRequestId() {
91  return requestId;
92  }
93 
94 
95  /**
96  * 获取请求大模型的内容
97  *
98  * @return 请求大模型的内容
99  */
101  return content;
102  }
103 
104  /**
105  * 获取上下文内容
106  *
107  * @return 上下文内容
108  */
109  public List<V2NIMAIModelCallMessage> getMessages() {
110  return messages;
111  }
112 
113  /**
114  * 设置上下文内容
115  *
116  * @param messages 上下文内容
117  */
118  public void setMessages(List<V2NIMAIModelCallMessage> messages) {
119  this.messages = messages;
120  }
121 
122  /**
123  * 获取提示词变量占位符替换
124  *
125  * @return 提示词变量占位符替换
126  */
127  public String getPromptVariables() {
128  return promptVariables;
129  }
130 
131  /**
132  * 设置提示词变量占位符替换
133  *
134  * @param promptVariables 提示词变量占位符替换
135  */
136  public void setPromptVariables(String promptVariables) {
137  this.promptVariables = promptVariables;
138  }
139 
140  /**
141  * 获取请求接口模型相关参数配置
142  *
143  * @return 请求接口模型相关参数配置
144  */
146  return modelConfigParams;
147  }
148 
149  /**
150  * 设置请求接口模型相关参数配置
151  *
152  * @param modelConfigParams 请求接口模型相关参数配置
153  */
154  public void setModelConfigParams(V2NIMAIModelConfigParams modelConfigParams) {
155  this.modelConfigParams = modelConfigParams;
156  }
157 
158  /**
159  * 获取反垃圾配置
160  *
161  * @return 反垃圾配置
162  */
164  return antispamConfig;
165  }
166 
167  /**
168  * 设置反垃圾配置
169  *
170  * @param antispamConfig 反垃圾配置
171  */
172  public void setAntispamConfig(V2NIMProxyAICallAntispamConfig antispamConfig) {
173  this.antispamConfig = antispamConfig;
174  }
175 
176  /**
177  * 获取是否流式响应
178  * @return 是否流式响应
179  */
180  public boolean isAIStream() {
181  return aiStream;
182  }
183 
184  /**
185  * 设置是否流式响应
186  * @param aiStream 是否流式响应
187  */
188  public void setAIStream(boolean aiStream) {
189  this.aiStream = aiStream;
190  }
191 
192  /**
193  * 是否有效
194  * @return 是否有效
195  */
196  public boolean isValid(){
197  if(TextUtils.isEmpty(accountId)){
198  NimLog.e(TAG, "accountId is empty");
199  return false;
200  }
201 
202  if(TextUtils.isEmpty(requestId)){
203  NimLog.e(TAG, "requestId is empty");
204  return false;
205  }
206 
207  if(content == null || !content.isValid()){
208  NimLog.e(TAG, "content is invalid");
209  return false;
210  }
211 
212  if(messages != null && !messages.isEmpty()){
213  for(V2NIMAIModelCallMessage message : messages){
214  if(!message.isValid()){
215  NimLog.e(TAG, "message is invalid");
216  return false;
217  }
218  }
219  }
220 
221  if(promptVariables != null && !StringUtil.isJson(promptVariables)){
222  NimLog.e(TAG, "promptVariables is invalid");
223  return false;
224  }
225 
226  return true;
227  }
228 
229  /**
230  * 构造器
231  */
232  public static class Builder {
233  private String accountId;
234  private String requestId;
235  private V2NIMAIModelCallContent content;
236  private List<V2NIMAIModelCallMessage> messages;
237  private String promptVariables;
238  private V2NIMAIModelConfigParams modelConfigParams;
239  private V2NIMProxyAICallAntispamConfig antispamConfig;
240 
241  /**
242  * 是否流式响应,默认为 false
243  */
244  private boolean aiStream = false;
245 
246  /**
247  * 设置机器人账号ID
248  * @param accountId 机器人账号ID
249  * @return Builder
250  */
251  public Builder accountId(String accountId) {
252  this.accountId = accountId;
253  return this;
254  }
255 
256  /**
257  * 设置请求id
258  * @param requestId 请求id
259  * @return Builder
260  */
261  public Builder requestId(String requestId) {
262  this.requestId = requestId;
263  return this;
264  }
265 
266  /**
267  * 设置请求大模型的内容
268  * @param content 请求大模型的内容
269  * @return Builder
270  */
271  public Builder content(V2NIMAIModelCallContent content) {
272  this.content = content;
273  return this;
274  }
275 
276  /**
277  * 设置上下文内容
278  * @param messages 上下文内容
279  * @return Builder
280  */
281  public Builder messages(List<V2NIMAIModelCallMessage> messages) {
282  this.messages = messages;
283  return this;
284  }
285 
286  /**
287  * 设置提示词变量占位符替换
288  * @param promptVariables 提示词变量占位符替换
289  * @return Builder
290  */
291  public Builder promptVariables(String promptVariables) {
292  this.promptVariables = promptVariables;
293  return this;
294  }
295 
296  /**
297  * 设置请求接口模型相关参数配置
298  * @param modelConfigParams 请求接口模型相关参数配置
299  * @return Builder
300  */
301  public Builder modelConfigParams(V2NIMAIModelConfigParams modelConfigParams) {
302  this.modelConfigParams = modelConfigParams;
303  return this;
304  }
305  /**
306  * 设置反垃圾配置
307  * @param antispamConfig 反垃圾配置
308  * @return Builder
309  */
310  public Builder antispamConfig(V2NIMProxyAICallAntispamConfig antispamConfig) {
311  this.antispamConfig = antispamConfig;
312  return this;
313  }
314  /**
315  * 设置是否流式响应
316  * @param aiStream 是否流式响应
317  * @return Builder
318  */
319  public Builder aiStream(boolean aiStream) {
320  this.aiStream = aiStream;
321  return this;
322  }
323 
324  /**
325  * 构建V2NIMProxyAIModelCallParams
326  * @return V2NIMProxyAIModelCallParams
327  */
328  public V2NIMProxyAIModelCallParams build() {
329  V2NIMProxyAIModelCallParams params = new V2NIMProxyAIModelCallParams(accountId, requestId, content);
330  params.messages = messages;
331  params.promptVariables = promptVariables;
332  params.modelConfigParams = modelConfigParams;
333  params.antispamConfig = antispamConfig;
334  params.aiStream = aiStream;
335  return params;
336  }
337  }
338 }
void setMessages(List< V2NIMAIModelCallMessage > messages)
设置上下文内容
void setPromptVariables(String promptVariables)
设置提示词变量占位符替换
V2NIMProxyAICallAntispamConfig getAntispamConfig()
获取反垃圾配置
List< V2NIMAIModelCallMessage > getMessages()
获取上下文内容
V2NIMAIModelConfigParams getModelConfigParams()
获取请求接口模型相关参数配置
V2NIMAIModelCallContent getContent()
获取请求大模型的内容
V2NIMProxyAIModelCallParams(String accountId, String requestId, V2NIMAIModelCallContent content)
构造函数
void setModelConfigParams(V2NIMAIModelConfigParams modelConfigParams)
设置请求接口模型相关参数配置
void setAntispamConfig(V2NIMProxyAICallAntispamConfig antispamConfig)
设置反垃圾配置