mirror of
https://github.com/foss42/apidash.git
synced 2025-12-03 19:39:25 +08:00
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:
49
packages/genai/lib/interface/model_providers/openai.dart
Normal file
49
packages/genai/lib/interface/model_providers/openai.dart
Normal 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"];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user