fetchSystemPromptParts function

Future<({List<String> defaultSystemPrompt, Map<String, String> systemContext, Map<String, String> userContext})> fetchSystemPromptParts({
  1. required GetSystemPromptFn getSystemPrompt,
  2. required GetUserContextFn getUserContext,
  3. required GetSystemContextFn getSystemContext,
  4. String? customSystemPrompt,
})

Fetch the three context pieces for the API cache-key prefix.

Implementation

Future<
  ({
    List<String> defaultSystemPrompt,
    Map<String, String> userContext,
    Map<String, String> systemContext,
  })
>
fetchSystemPromptParts({
  required GetSystemPromptFn getSystemPrompt,
  required GetUserContextFn getUserContext,
  required GetSystemContextFn getSystemContext,
  String? customSystemPrompt,
}) async {
  late List<String> defaultSystemPrompt;
  late Map<String, String> userContext;
  late Map<String, String> systemContext;

  if (customSystemPrompt != null) {
    defaultSystemPrompt = [];
    systemContext = {};
    userContext = await getUserContext();
  } else {
    final results = await Future.wait([
      getSystemPrompt(),
      getUserContext(),
      getSystemContext(),
    ]);
    defaultSystemPrompt = results[0] as List<String>;
    userContext = results[1] as Map<String, String>;
    systemContext = results[2] as Map<String, String>;
  }

  return (
    defaultSystemPrompt: defaultSystemPrompt,
    userContext: userContext,
    systemContext: systemContext,
  );
}