Use endpoint from AI capability instead of direct call to LLM

This commit is contained in:
Théo Poizat
2025-12-11 16:45:52 +01:00
committed by Dat H. Pham
parent 2325df616f
commit 2c364ea08a
4 changed files with 61 additions and 19 deletions
@@ -1,5 +1,4 @@
import 'package:dio/dio.dart';
import 'package:scribe/scribe/ai/data/config/ai_config.dart';
import 'package:scribe/scribe/ai/data/datasource/ai_datasource.dart';
import 'package:scribe/scribe/ai/data/model/ai_message.dart';
import 'package:scribe/scribe/ai/data/model/ai_api_request.dart';
@@ -11,10 +10,10 @@ class AIDataSourceImpl implements AIDataSource {
AIDataSourceImpl({
required Dio dio,
String? endpoint,
}) : _aiApi = AIApi(
dio: dio,
apiKey: AIConfig.aiApiKey,
baseUrl: AIConfig.aiApiUrl,
endpoint: endpoint,
);
@override
+14 -15
View File
@@ -4,26 +4,25 @@ import 'package:scribe/scribe/ai/data/model/ai_api_request.dart';
class AIApi {
final Dio _dio;
final String _apiKey;
final String _baseUrl;
final String? _endpoint;
AIApi({
required Dio dio,
required String apiKey,
required String baseUrl,
}) : _dio = dio,
_apiKey = apiKey,
_baseUrl = baseUrl;
String? endpoint,
}) : _dio = dio,
_endpoint = endpoint;
Future<AIApiResponse> chatCompletion(
AIAPIRequest request
) async {
final url = _endpoint;
if (url == null) {
throw Exception('AI API is not available');
}
Future<AIApiResponse> chatCompletion(AIAPIRequest request) async {
final response = await _dio.post(
'$_baseUrl/chat/completions',
options: Options(
headers: {
'Authorization': 'Bearer $_apiKey',
'Content-Type': 'application/json',
},
),
url,
data: request.toJson(),
);
@@ -7,6 +7,10 @@ import 'package:scribe/scribe/ai/domain/repository/ai_scribe_repository.dart';
import 'package:scribe/scribe/ai/domain/usecases/generate_ai_text_interactor.dart';
class AIScribeBindings extends Bindings {
final String? scribeEndpoint;
AIScribeBindings({this.scribeEndpoint});
@override
void dependencies() {
_bindingsDataSourceImpl();
@@ -18,7 +22,8 @@ class AIScribeBindings extends Bindings {
void _bindingsDataSourceImpl() {
Get.lazyPut<AIDataSourceImpl>(() => AIDataSourceImpl(
dio: Dio(), // Dedicated Dio instance without authorization interceptors
dio: Get.find<Dio>(),
endpoint: scribeEndpoint,
));
}