mirror of
https://github.com/foss42/apidash.git
synced 2025-12-04 03:46:57 +08:00
AIProviderSelector Impl & AI Models added to RequestModel
This commit is contained in:
@@ -4,6 +4,8 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:apidash/providers/providers.dart';
|
||||
import 'package:apidash/widgets/widgets.dart';
|
||||
import 'package:genai/genai.dart';
|
||||
import 'package:genai/widgets/llm_selector.dart';
|
||||
import '../../common_widgets/common_widgets.dart';
|
||||
|
||||
class EditorPaneRequestURLCard extends ConsumerWidget {
|
||||
@@ -35,6 +37,7 @@ class EditorPaneRequestURLCard extends ConsumerWidget {
|
||||
switch (apiType) {
|
||||
APIType.rest => const DropdownButtonHTTPMethod(),
|
||||
APIType.graphql => kSizedBoxEmpty,
|
||||
APIType.ai => const AIProviderSelector(),
|
||||
null => kSizedBoxEmpty,
|
||||
},
|
||||
switch (apiType) {
|
||||
@@ -51,6 +54,7 @@ class EditorPaneRequestURLCard extends ConsumerWidget {
|
||||
switch (apiType) {
|
||||
APIType.rest => const DropdownButtonHTTPMethod(),
|
||||
APIType.graphql => kSizedBoxEmpty,
|
||||
APIType.ai => const AIProviderSelector(),
|
||||
null => kSizedBoxEmpty,
|
||||
},
|
||||
switch (apiType) {
|
||||
@@ -145,3 +149,48 @@ class SendRequestButton extends ConsumerWidget {
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class AIProviderSelector extends ConsumerWidget {
|
||||
const AIProviderSelector({
|
||||
super.key,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final selectedId = ref.watch(selectedIdStateProvider);
|
||||
final req = ref.watch(collectionStateNotifierProvider)![selectedId]!;
|
||||
final aiRequestModel = req.aiRequestModel;
|
||||
final defaultLLMSO = aiRequestModel == null
|
||||
? ref
|
||||
.read(settingsProvider.notifier)
|
||||
.settingsModel
|
||||
?.defaultLLMSaveObject
|
||||
: LLMSaveObject(
|
||||
endpoint: aiRequestModel.payload.endpoint,
|
||||
credential: aiRequestModel.payload.credential,
|
||||
configMap: aiRequestModel.payload.configMap,
|
||||
selectedLLM: aiRequestModel.model,
|
||||
provider: aiRequestModel.provider,
|
||||
);
|
||||
|
||||
return DefaultLLMSelectorButton(
|
||||
key: ValueKey(ref.watch(selectedIdStateProvider)),
|
||||
defaultLLM: defaultLLMSO,
|
||||
onDefaultLLMUpdated: (llmso) {
|
||||
ref.read(collectionStateNotifierProvider.notifier).update(
|
||||
aiRequestModel: AIRequestModel(
|
||||
model: llmso.selectedLLM,
|
||||
provider: llmso.provider,
|
||||
payload: LLMInputPayload(
|
||||
endpoint: llmso.endpoint,
|
||||
credential: llmso.credential,
|
||||
systemPrompt: aiRequestModel?.payload.systemPrompt ?? '',
|
||||
userPrompt: aiRequestModel?.payload.userPrompt ?? '',
|
||||
configMap: llmso.configMap,
|
||||
),
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user