Refactor genai package to new modular interface

Reorganized the genai package by removing legacy LLM-related files and introducing a new modular interface under the 'interface' directory. Added provider-specific model classes, centralized constants, and updated the example to use the new API and data structures. Updated exports in genai.dart and improved dependency management.
This commit is contained in:
Ankit Mahato
2025-08-27 02:08:36 +05:30
parent 36f58ba26a
commit 72fea1ba65
54 changed files with 2470 additions and 1736 deletions

View File

@@ -0,0 +1,49 @@
import 'package:better_networking/better_networking.dart';
import '../../models/models.dart';
import '../consts.dart';
class OpenAIModel extends ModelProvider {
static final instance = OpenAIModel();
@override
ModelRequestData get defaultRequestData =>
kDefaultModelRequestData.copyWith(url: kOpenAIUrl);
@override
HttpRequestModel? createRequest(ModelRequestData? requestData) {
if (requestData == null) {
return null;
}
return HttpRequestModel(
method: HTTPVerb.post,
url: requestData.url,
authModel: AuthModel(
type: APIAuthType.bearer,
bearer: AuthBearerModel(token: requestData.apiKey),
),
body: kJsonEncoder.convert({
"model": requestData.model,
"messages": [
{"role": "system", "content": requestData.systemPrompt},
if (requestData.userPrompt.isNotEmpty) ...{
{"role": "user", "content": requestData.userPrompt},
} else ...{
{"role": "user", "content": "Generate"},
},
],
...requestData.getModelConfigMap(),
if (requestData.stream ?? false) ...{'stream': true},
}),
);
}
@override
String? outputFormatter(Map x) {
return x["choices"]?[0]["message"]?["content"]?.trim();
}
@override
String? streamOutputFormatter(Map x) {
return x["choices"]?[0]["delta"]?["content"];
}
}