GroqChat.fromJson constructor

GroqChat.fromJson(
  1. Map<String, dynamic> json,
  2. dynamic Function(Map<String, dynamic>) functionNameToFunction(
    1. String
    )
)

Creates a GroqChat instance from a JSON object.

This factory constructor initializes a GroqChat object by deserializing the provided JSON data. The function functionNameToFunction is used to map string identifiers in the JSON to their corresponding function objects. The parameter given in the functionNameToFunction is the function name, which is used in the GroqToolItem. Enabling the proper deserialization of registered tools. Example:

 var groqChat = GroqChat.fromJson(json, (name) {
  if (name == 'exampleFunction') return exampleFunction;
  if (name == 'anotherFunction') return anotherFunction;
  throw ArgumentError('Unknown function name: $name');
});

Implementation

GroqChat.fromJson(Map<String, dynamic> json,
    Function(Map<String, dynamic>) Function(String) functionNameToFunction) {
  _model = json['model'] as String;
  _apiKey = json['apiKey'] as String;
  _settings = GroqParser.settignsFromJson(json['settings']);
  _chatItems = (json['chatItems'] as List<Map<String, dynamic>>)
      .map((item) => GroqParser.chatEventFromJson(item))
      .toList();
  for (final item in _chatItems) {
    if (item is RequestChatEvent) {
      _conversationItems.add(GroqConversationItem(_model, item.message));
    } else if (item is ResponseChatEvent) {
      _conversationItems.last.setResponse(item.response, item.usage);
    }
  }
  _rateLimitInfo =
      GroqParser.rateLimitInformationFromJson(json['rateLimitInfo']);
  _registeredTools = (json['registeredTools'] as List)
      .map((item) =>
          GroqParser.groqToolItemFromChatJson(item, functionNameToFunction))
      .toList();
}