NIMSDK-AOS  10.9.80
NIMMessageAIConfigParams.java
浏览该文件的文档.
1 package com.netease.nimlib.sdk.msg.model;
2 
3 import android.text.TextUtils;
4 import com.netease.nimlib.log.NimLog;
8 import com.netease.nimlib.util.StringUtil;
9 import java.io.Serializable;
10 import java.util.List;
11 
12 /**
13  * 用于配置 NIM 消息 AI 的参数类
14  */
15 public class NIMMessageAIConfigParams implements Serializable {
16 
17  private static final String TAG = "NIMMessageAIConfigParams";
18  /** 数字人的 accountId,发送/响应 都存在 */
19  private final String accountId;
20 
21  /** 请求大模型的内容,发送入参 */
22  private NIMAIModelCallContent content;
23 
24  /** 上下文内容,当前只支持文本消息,发送入参 */
25  private List<NIMAIModelCallMessage> messages;
26 
27  /** 提示词变量占位符替换,JSON 格式的字符串,用于填充 prompt 中的变量。如果 NIMAIUser 中的 modelConfig.prompt 定义了变量,则必填. 端测不校验,发送入参 */
28  private String promptVariables;
29 
30  /** 请求接口模型相关参数配置,如果参数不为空,则默认覆盖控制相关配置,发送入参 */
31  private NIMAIModelConfigParams modelConfigParams;
32  /**
33  * 是否流式响应,默认为 false
34  */
35  private boolean aiStream = false;
36 
37  private NIMMessageAIConfigParams() {
38  this(null);
39  }
40 
41  /**
42  * 构造函数
43  * @param accountId 数字人的 accountId
44  */
45  public NIMMessageAIConfigParams(String accountId) {
46  this.accountId = accountId;
47  }
48 
49  /**
50  * 获取数字人的 accountId
51  * @return 数字人的 accountId
52  */
53  public String getAccountId() {
54  return accountId;
55  }
56 
57 
58  /**
59  * 获取请求大模型的内容
60  * @return 请求大模型的内容
61  */
63  return content;
64  }
65 
66  /**
67  * 设置请求大模型的内容
68  * @param content 请求大模型的内容
69  */
70  public void setContent(NIMAIModelCallContent content) {
71  this.content = content;
72  }
73 
74  /**
75  * 获取上下文内容
76  * @return 上下文内容
77  */
78  public List<NIMAIModelCallMessage> getMessages() {
79  return messages;
80  }
81 
82  /**
83  * 设置上下文内容
84  * @param messages 上下文内容
85  */
86  public void setMessages(List<NIMAIModelCallMessage> messages) {
87  this.messages = messages;
88  }
89 
90  /**
91  * 获取提示词变量占位符替换
92  * @return 提示词变量占位符替换
93  */
94  public String getPromptVariables() {
95  return promptVariables;
96  }
97 
98  /**
99  * 设置提示词变量占位符替换
100  * @param promptVariables 提示词变量占位符替换
101  */
102  public void setPromptVariables(String promptVariables) {
103  this.promptVariables = promptVariables;
104  }
105 
106  /**
107  * 获取请求接口模型相关参数配置
108  * @return 请求接口模型相关参数配置
109  */
111  return modelConfigParams;
112  }
113 
114  /**
115  * 设置请求接口模型相关参数配置
116  * @param modelConfigParams 请求接口模型相关参数配置
117  */
118  public void setModelConfigParams(NIMAIModelConfigParams modelConfigParams) {
119  this.modelConfigParams = modelConfigParams;
120  }
121 
122  /**
123  * 是否流式响应
124  * @return 是否流式响应
125  */
126  public boolean isAIStream() {
127  return aiStream;
128  }
129 
130  /**
131  * 设置是否流式响应
132  * @param aiStream 是否流式响应
133  */
134  public void setAIStream(boolean aiStream) {
135  this.aiStream = aiStream;
136  }
137 
138  public boolean isValid() {
139  if (TextUtils.isEmpty(accountId)) {
140  NimLog.e(TAG, "accountId is empty");
141  return false;
142  }
143 
144  if (content != null && !content.isValid()) {
145  NimLog.e(TAG, "content is invalid");
146  return false;
147  }
148 
149  if(messages != null && !messages.isEmpty()){
150  for(NIMAIModelCallMessage message : messages){
151  if(!message.isValid()){
152  NimLog.e(TAG, "message is invalid");
153  return false;
154  }
155  }
156  }
157 
158  if(promptVariables != null && !StringUtil.isJson(promptVariables)){
159  NimLog.e(TAG, "promptVariables is invalid");
160  return false;
161  }
162 
163  return true;
164  }
165 
166  /**
167  * 构造器
168  */
169  public static class Builder {
170  private String accountId;
171  private NIMAIModelCallContent content;
172  private List<NIMAIModelCallMessage> messages;
173  private String promptVariables;
174  private NIMAIModelConfigParams modelConfigParams;
175  private boolean aiStream = false;
176 
177  /**
178  * 设置机器人账号ID
179  * @param accountId 机器人账号ID
180  * @return Builder
181  */
182  public Builder accountId(String accountId) {
183  this.accountId = accountId;
184  return this;
185  }
186 
187  /**
188  * 设置请求大模型的内容
189  * @param content 请求大模型的内容
190  * @return Builder
191  */
192  public Builder content(NIMAIModelCallContent content) {
193  this.content = content;
194  return this;
195  }
196 
197  /**
198  * 设置上下文内容
199  * @param messages 上下文内容
200  * @return Builder
201  */
202  public Builder messages(List<NIMAIModelCallMessage> messages) {
203  this.messages = messages;
204  return this;
205  }
206 
207  /**
208  * 设置提示词变量占位符替换
209  * @param promptVariables 提示词变量占位符替换
210  * @return Builder
211  */
212  public Builder promptVariables(String promptVariables) {
213  this.promptVariables = promptVariables;
214  return this;
215  }
216 
217  /**
218  * 设置请求接口模型相关参数配置
219  * @param modelConfigParams 请求接口模型相关参数配置
220  * @return Builder
221  */
222  public Builder modelConfigParams(NIMAIModelConfigParams modelConfigParams) {
223  this.modelConfigParams = modelConfigParams;
224  return this;
225  }
226 
227  /**
228  * 设置是否流式响应
229  * @param aiStream 是否流式响应
230  * @return Builder
231  */
232  public Builder aiStream(boolean aiStream) {
233  this.aiStream = aiStream;
234  return this;
235  }
236 
237  /**
238  * 构建 NIMMessageAIConfigParams 对象
239  * @return NIMMessageAIConfigParams 对象
240  */
241  public NIMMessageAIConfigParams build() {
242  NIMMessageAIConfigParams params = new NIMMessageAIConfigParams(accountId);
243  params.content = content;
244  params.messages = messages;
245  params.promptVariables = promptVariables;
246  params.modelConfigParams = modelConfigParams;
247  params.aiStream= aiStream;
248  return params;
249  }
250  }
251 }
void setPromptVariables(String promptVariables)
设置提示词变量占位符替换
void setAIStream(boolean aiStream)
设置是否流式响应
List< NIMAIModelCallMessage > getMessages()
获取上下文内容
NIMAIModelConfigParams getModelConfigParams()
获取请求接口模型相关参数配置
NIMAIModelCallContent getContent()
获取请求大模型的内容
void setModelConfigParams(NIMAIModelConfigParams modelConfigParams)
设置请求接口模型相关参数配置
String getPromptVariables()
获取提示词变量占位符替换
void setContent(NIMAIModelCallContent content)
设置请求大模型的内容
void setMessages(List< NIMAIModelCallMessage > messages)
设置上下文内容