diff --git a/lib/src/core/constants/config.dart b/lib/src/core/constants/config.dart index 0ea1dd05..eef8d51e 100644 --- a/lib/src/core/constants/config.dart +++ b/lib/src/core/constants/config.dart @@ -1,8 +1,25 @@ +import 'package:dart_openai/src/core/utils/logger.dart'; import 'package:meta/meta.dart'; @immutable @internal abstract class OpenAIConfig { - static String get baseUrl => "https://api.openai.com"; + static String? _baseUrl; + + @internal + static String get baseUrl { + if (_baseUrl == null) { + return "https://api.openai.com"; + } + + return _baseUrl!; + } + + @internal + static set baseUrl(String? baseUrl) { + _baseUrl = baseUrl; + OpenAILogger.logBaseUrl(); + } + static String get version => "v1"; } diff --git a/lib/src/core/utils/logger.dart b/lib/src/core/utils/logger.dart index d4d0ee6f..63a53a60 100644 --- a/lib/src/core/utils/logger.dart +++ b/lib/src/core/utils/logger.dart @@ -43,6 +43,11 @@ abstract class OpenAILogger { log("api key is set"); } + /// Logs that an baseUrl key is being set, if the logger is active. + static void logBaseUrl() { + log("baseUrl is set"); + } + /// Logs that an organization id is being set, if the logger is active. static void logOrganization(String? organizationId) { log("organization id set to $organizationId"); diff --git a/lib/src/instance/openai.dart b/lib/src/instance/openai.dart index f87b0509..a91018c8 100644 --- a/lib/src/instance/openai.dart +++ b/lib/src/instance/openai.dart @@ -4,6 +4,7 @@ import 'package:dart_openai/src/instance/moderations/moderations.dart'; import '../core/base/openai_client/base.dart'; import '../core/builder/headers.dart'; +import '../core/constants/config.dart'; import '../core/exceptions/api_key_not_set.dart'; import '../core/utils/logger.dart'; import 'audio/audio.dart'; @@ -52,6 +53,10 @@ class OpenAI extends OpenAIClientBase { _internalApiKey = apiKey; } + static set baseUrl(String baseUrl) { + OpenAIConfig.baseUrl = baseUrl; + } + /// If you have multiple organizations, you can set it's id with this. /// once this is set, it will be used in all the requests to the OpenAI API. /// Example: