route method

Future<AIResponse> route(
  1. List<AIMessage> messages, {
  2. int? maxTokens,
  3. double? temperature,
  4. AICapability? requiredCapability,
  5. List<AITool>? tools,
})

Routes a completion request to the best available provider.

Implementation

Future<AIResponse> route(
  List<AIMessage> messages, {
  int? maxTokens,
  double? temperature,
  AICapability? requiredCapability,
  List<AITool>? tools,
}) async {
  final chain = FallbackChain(
    providers: _selectProviders(requiredCapability),
    circuitBreakers: _circuitBreakers,
  );

  final response = await chain.execute(
    (provider) => provider.complete(
      messages,
      maxTokens: maxTokens,
      temperature: temperature,
      tools: tools,
    ),
  );

  _recordLatency(response.provider, response.latency);
  return response;
}