Use endpoint from AI capability instead of direct call to LLM
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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,
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user