mirror of
https://github.com/foss42/apidash.git
synced 2025-12-03 03:17:00 +08:00
53 lines
1.4 KiB
Dart
53 lines
1.4 KiB
Dart
import 'package:better_networking/better_networking.dart';
|
|
import '../../models/models.dart';
|
|
import '../consts.dart';
|
|
|
|
class AnthropicModel extends ModelProvider {
|
|
static final instance = AnthropicModel();
|
|
|
|
@override
|
|
AIRequestModel get defaultAIRequestModel => kDefaultAiRequestModel.copyWith(
|
|
modelApiProvider: ModelAPIProvider.anthropic,
|
|
url: kAnthropicUrl,
|
|
);
|
|
|
|
@override
|
|
HttpRequestModel? createRequest(AIRequestModel? aiRequestModel) {
|
|
if (aiRequestModel == null) {
|
|
return null;
|
|
}
|
|
return HttpRequestModel(
|
|
method: HTTPVerb.post,
|
|
url: aiRequestModel.url,
|
|
headers: const [
|
|
NameValueModel(name: "anthropic-version", value: "2023-06-01"),
|
|
],
|
|
authModel: aiRequestModel.apiKey == null
|
|
? null
|
|
: AuthModel(
|
|
type: APIAuthType.apiKey,
|
|
apikey: AuthApiKeyModel(key: aiRequestModel.apiKey!),
|
|
),
|
|
body: kJsonEncoder.convert({
|
|
"model": aiRequestModel.model,
|
|
"messages": [
|
|
{"role": "system", "content": aiRequestModel.systemPrompt},
|
|
{"role": "user", "content": aiRequestModel.userPrompt},
|
|
],
|
|
...aiRequestModel.getModelConfigMap(),
|
|
if (aiRequestModel.stream ?? false) ...{'stream': true},
|
|
}),
|
|
);
|
|
}
|
|
|
|
@override
|
|
String? outputFormatter(Map x) {
|
|
return x['content']?[0]['text'];
|
|
}
|
|
|
|
@override
|
|
String? streamOutputFormatter(Map x) {
|
|
return x['text'];
|
|
}
|
|
}
|