connectLlm method

Future<LlmDelegation> connectLlm({
  1. required String projectId,
  2. required AccessSubject subject,
  3. required String maxBudget,
  4. List<LlmProvider>? providers,
  5. List<String>? models,
  6. int? expiresInSeconds,
})

Implementation

Future<LlmDelegation> connectLlm({
  required String projectId,
  required AccessSubject subject,
  required String maxBudget,
  List<LlmProvider>? providers,
  List<String>? models,
  int? expiresInSeconds,
}) async {
  final uri = Uri.parse('$baseUrl/llm/connect');
  final providerNames = providers?.map((provider) => provider.wireName).toList();
  final response = await httpClient.post(
    uri,
    headers: {'Meshagent-Project-Id': projectId, 'Content-Type': 'application/json'},
    body: jsonEncode({
      'subject': subject.toJson(),
      'max_budget': maxBudget,
      'providers': ?providerNames,
      'models': ?models,
      'expires_in_seconds': ?expiresInSeconds,
    }),
  );
  if (response.statusCode >= 400) {
    throw MeshagentException(
      'Failed to connect LLM delegation. '
      'Status code: ${response.statusCode}, body: ${response.body}',
    );
  }
  return LlmDelegation.fromJson((jsonDecode(response.body) as Map).cast<String, dynamic>());
}