createRequest method

  1. @override
HttpRequestModel? createRequest(
  1. AIRequestModel? aiRequestModel
)
override

Implementation

@override
HttpRequestModel? createRequest(AIRequestModel? aiRequestModel) {
  if (aiRequestModel == null) {
    return null;
  }
  List<NameValueModel> params = [];
  String endpoint = "${aiRequestModel.url}/${aiRequestModel.model}:";
  if (aiRequestModel.stream ?? false) {
    endpoint += 'streamGenerateContent';
    params.add(const NameValueModel(name: "alt", value: "sse"));
  } else {
    endpoint += 'generateContent';
  }

  return HttpRequestModel(
    method: HTTPVerb.post,
    url: endpoint,
    authModel: aiRequestModel.apiKey == null
        ? null
        : AuthModel(
            type: APIAuthType.apiKey,
            apikey: AuthApiKeyModel(
              key: aiRequestModel.apiKey!,
              location: 'query',
              name: 'key',
            ),
          ),
    body: kJsonEncoder.convert({
      "contents": [
        {
          "role": "user",
          "parts": [
            {"text": aiRequestModel.userPrompt},
          ],
        },
      ],
      "systemInstruction": {
        "role": "system",
        "parts": [
          {"text": aiRequestModel.systemPrompt},
        ],
      },
      "generationConfig": aiRequestModel.getModelConfigMap(),
    }),
  );
}