ChatMessage constructor

ChatMessage({
  1. required ChatMessageRole role,
  2. required String text,
  3. DateTime? timestamp,
  4. Map<String, Object?> metadata = const <String, Object?>{},
  5. List<ChatInputOmission> omissions = const <acp.ChatInputOmission>[],
  6. 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,
  );
}