buildRequestBody method

Map<String, dynamic> buildRequestBody(
  1. List<ChatMessage> messages,
  2. List<Tool>? tools,
  3. bool stream
)

Build complete request body for Anthropic API

Implementation

Map<String, dynamic> buildRequestBody(
  List<ChatMessage> messages,
  List<Tool>? tools,
  bool stream,
) {
  // Extract processed data
  final processedData = _processMessages(messages);
  final processedTools = _processTools(messages, tools);

  // Validate that we have at least one non-system message
  if (processedData.anthropicMessages.isEmpty) {
    throw const InvalidRequestError(
        'At least one non-system message is required');
  }

  // Ensure messages follow Anthropic's requirements
  _validateMessageSequence(processedData.anthropicMessages);

  // Build base request body
  final body = <String, dynamic>{
    'model': config.model,
    'messages': processedData.anthropicMessages,
    'max_tokens': config.maxTokens ?? 1024,
    'stream': stream,
  };

  // Add system content if present
  _addSystemContent(body, processedData);

  // Add tools if present
  _addTools(body, processedTools);

  // Add optional parameters
  _addOptionalParameters(body);

  return body;
}