rodiumai 0.1.0
rodiumai: ^0.1.0 copied to clipboard
Official Dart/Flutter SDK for the RodiumAI API. Access GPT, Claude, Gemini, DeepSeek and more — pay with Mobile Money via RODI credits.
example/main.dart
import 'dart:io';
// ignore_for_file: avoid_print
import 'package:rodiumai/rodiumai.dart';
Future<void> main() async {
final apiKey = Platform.environment['RODIUMAI_API_KEY'] ?? '';
if (apiKey.isEmpty) {
stderr.writeln('Erreur: export RODIUMAI_API_KEY="rd_sk_..."');
exit(1);
}
final client = RodiumAIClient(apiKey: apiKey, logRequests: true);
try {
print('\n=== Catalogue API (GET /v1/models) ===');
final catalogue = await client.models();
print(
'${catalogue.length} modèles — providers: ${catalogue.providerPrefixes.join(', ')}');
final modelInfo = catalogue.preferredChatModel;
if (modelInfo == null) {
stderr.writeln('Aucun modèle chat disponible.');
exit(1);
}
final modelId = modelInfo.id;
print('Modèle utilisé: $modelId');
print('\n=== Chat ===');
final res = await client
.model(modelId)
.temperature(0.7)
.maxTokens(150)
.chat('Présente RodiumAI en 2 phrases.');
print(res.content);
print('Tokens: ${res.totalTokens}');
print('\n=== Streaming ===');
stdout.write('Réponse: ');
await for (final delta
in client.model(modelId).stream('Compte de 1 à 5.')) {
stdout.write(delta.content);
}
print('');
print('\n✓ Tous les tests live sont passés.');
} on UnauthorizedException catch (e) {
stderr.writeln('401 — Clé API invalide: ${e.message}');
exit(1);
} on InsufficientCreditsException catch (e) {
stderr.writeln('402 — Crédits RODI insuffisants: ${e.message}');
exit(1);
} on RodiumAIException catch (e) {
stderr.writeln('Erreur ${e.statusCode}: ${e.message}');
exit(1);
}
}