import 'dart:convert'; import 'package:http/http.dart' as http; import '../http_client.dart'; import '../models.dart'; import 'base_provider.dart'; class AiChatOs extends BaseProvider { @override String get name => 'AiChatOs'; @override bool get working => true; @override List get models => [G4FModels.gpt4]; @override String get defaultModel => G4FModels.gpt4; @override Stream createAsyncGenerator( String model, List messages, { bool stream = false, }) async* { final url = Uri.parse('https://api.aichatos.cloud/api/generateStream'); final userId = '#/chat/${DateTime.now().millisecondsSinceEpoch}'; final systemMessage = extractSystemMessage(messages); final formattedPrompt = formatPrompt(messages); final req = http.Request('POST', url); req.headers.addAll({ 'Content-Type': 'application/json', 'Origin': 'https://chat.aichatos.top', 'Referer': 'https://chat.aichatos.top/', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36', }); req.body = jsonEncode({ 'prompt': formattedPrompt, 'userId': userId, 'network': true, 'system': systemMessage, 'withoutContext': false, 'stream': stream, }); final response = await g4fHttp.send(req); if (response.statusCode == 200) { final resBytes = await response.stream.toBytes(); final fullText = utf8.decode(resBytes).trim(); if (fullText.isNotEmpty && !fullText.startsWith('