ChatMessage constructor
ChatMessage({
- required ChatMessageRole role,
- required String text,
- DateTime? timestamp,
- Map<
String, Object?> metadata = const <String, Object?>{}, - List<
ChatInputOmission> omissions = const <acp.ChatInputOmission>[], - ChatInputBudget inputBudget = const acp.ChatInputBudget(),
Implementation
factory ChatMessage({
required ChatMessageRole role,
required String text,
DateTime? timestamp,
Map<String, Object?> metadata = const <String, Object?>{},
List<acp.ChatInputOmission> omissions = const <acp.ChatInputOmission>[],
acp.ChatInputBudget inputBudget = const acp.ChatInputBudget(),
}) {
inputBudget.validate();
final guarded = projectionGuardChatMessageMetadata(metadata, inputBudget);
var boundedOmissions = projectionBoundedChatMessageOmissions(
omissions,
guarded.omission,
inputBudget.maxCollectionItems,
);
for (final omission in guarded.localOmissions) {
boundedOmissions = projectionBoundedChatMessageOmissions(
boundedOmissions,
omission,
inputBudget.maxCollectionItems,
);
}
return ChatMessage._(
role: role,
text: text,
timestamp: timestamp ?? DateTime.now(),
metadata: guarded.metadata,
omissions: boundedOmissions,
maxOmissions: inputBudget.maxCollectionItems,
inputBudget: inputBudget,
frozen: false,
);
}