AIProviderSelector Impl & AI Models added to RequestModel

This commit is contained in:
Manas Hejmadi
2025-07-09 15:08:06 +05:30
parent 90b4b99135
commit d923996dc8
10 changed files with 159 additions and 7 deletions

View File

@@ -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,
),
),
);
},
);
}
}