import 'dart:async'; import 'dart:convert'; import 'package:workouttest_util/model/openai.dart'; import 'package:workouttest_util/model/openai_chat.dart'; import 'package:workouttest_util/service/api.dart'; import 'package:workouttest_util/util/logging.dart'; class OpenAIApi with Logging { final String modelDavinci = "text-davinci-003"; final String modelGpt35 = "gpt-3.5-turbo"; final String modelGpt4 = "gpt-4"; final String modelAda = "text-embedding-ada-002"; final APIClient _client = APIClient(); Future getOpenAICompletion(String question) async { String? response; try { final body = await _client.post("openai/completion", question); response = body; } on TimeoutException catch (_) { log("Timeout from OpenAI"); } on Exception catch (e) { log(e.toString()); } return response ?? ""; } Future getOpenAICompletionWithModel(OpenAI openai) async { String? response; try { String body = const JsonEncoder().convert(openai.toJson()); response = await _client.post("openai/completion_with_model", body); } on TimeoutException catch (_) { log("Timeout from OpenAI"); } on Exception catch (e) { log(e.toString()); } return response ?? ""; } Future getOpenAIChatCompletion(OpenAIChat openai) async { String? response; try { String body = const JsonEncoder().convert(openai.toJson()); response = await _client.post("openai/chat_completion", body); } on TimeoutException catch (_) { log("Timeout from OpenAI"); } on Exception catch (e) { log(e.toString()); } return response ?? ""; } }