buildOpenAiBody function

Map<String, dynamic> buildOpenAiBody(
  1. LLMCompletionRequest request, {
  2. required String maxTokensKey,
})

LLMCompletionRequest を OpenAI 互換のリクエストボディに変換する。

Implementation

Map<String, dynamic> buildOpenAiBody(
  LLMCompletionRequest request, {
  required String maxTokensKey,
}) {
  final body = <String, dynamic>{
    'model': request.model,
    'messages': _toOpenAiMessages(request.messages),
  };
  if (request.maxTokens != null) body[maxTokensKey] = request.maxTokens;
  if (request.temperature != null) body['temperature'] = request.temperature;
  if (request.topP != null) body['top_p'] = request.topP;
  if (request.stop != null) body['stop'] = request.stop;
  if (request.seed != null) body['seed'] = request.seed;
  if (request.frequencyPenalty != null) {
    body['frequency_penalty'] = request.frequencyPenalty;
  }
  if (request.presencePenalty != null) {
    body['presence_penalty'] = request.presencePenalty;
  }
  final rf = _toOpenAiResponseFormat(request.responseFormat);
  if (rf != null) body['response_format'] = rf;
  final tools = request.tools;
  if (tools != null && tools.isNotEmpty) {
    body['tools'] = [
      for (final t in tools)
        {
          'type': 'function',
          'function': {
            'name': t.name,
            'description': t.description,
            'parameters': t.parameters,
          },
        },
    ];
    final tc = _toOpenAiToolChoice(request.toolChoice);
    if (tc != null) body['tool_choice'] = tc;
  }
  return body;
}