From 856ce034e699d93dfa0efe411ee789a106bae2f6 Mon Sep 17 00:00:00 2001 From: siddu015 <116783967+siddu015@users.noreply.github.com> Date: Sat, 22 Feb 2025 22:44:06 +0530 Subject: [PATCH] Feat: Added DebugApi --- lib/services/ollama_service.dart | 31 +++++++++++++++++++++++++++++++ lib/widgets/chatbot_widget.dart | 20 ++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/lib/services/ollama_service.dart b/lib/services/ollama_service.dart index f6ae682f..8179b211 100644 --- a/lib/services/ollama_service.dart +++ b/lib/services/ollama_service.dart @@ -39,4 +39,35 @@ class OllamaService { '''; return generateResponse(prompt); } + + Future debugApi({required dynamic requestModel, required dynamic responseModel}) async { + if (requestModel == null || responseModel == null) { + return "There are no recent API Requests to debug."; + } + + final requestJson = jsonEncode(requestModel.toJson()); + final responseJson = jsonEncode(responseModel.toJson()); + final statusCode = responseModel.statusCode; + + final prompt = ''' + Provide detailed debugging steps for this failed API request: + + **Status Code:** $statusCode + **Request Details:** + $requestJson + + **Response Details:** + $responseJson + + Provide a step-by-step debugging guide including: + 1. Common causes for this status code + 2. Specific issues in the request + 3. Potential fixes + 4. Recommended next steps + + Format the response with clear headings and bullet points. + '''; + + return generateResponse(prompt); + } } diff --git a/lib/widgets/chatbot_widget.dart b/lib/widgets/chatbot_widget.dart index 56246980..44f8278c 100644 --- a/lib/widgets/chatbot_widget.dart +++ b/lib/widgets/chatbot_widget.dart @@ -33,6 +33,11 @@ class _ChatbotWidgetState extends ConsumerState { requestModel: requestModel, responseModel: responseModel, ); + } else if (message == "Debug API") { + response = await ollamaService.debugApi( + requestModel: requestModel, + responseModel: responseModel, + ); } else { response = await ollamaService.generateResponse(message); } @@ -51,6 +56,10 @@ class _ChatbotWidgetState extends ConsumerState { @override Widget build(BuildContext context) { + final requestModel = ref.watch(selectedRequestModelProvider); + final statusCode = requestModel?.httpResponseModel?.statusCode; + final showDebugButton = statusCode != null && statusCode >= 400; + return Container( height: 400, padding: const EdgeInsets.all(16), @@ -70,6 +79,17 @@ class _ChatbotWidgetState extends ConsumerState { icon: const Icon(Icons.info_outline), label: const Text("Explain API"), ), + if (showDebugButton) ...[ + const SizedBox(width: 8), + ElevatedButton.icon( + onPressed: () => _sendMessage("Debug API"), + icon: const Icon(Icons.bug_report), + label: const Text("Debug"), + style: ElevatedButton.styleFrom( + backgroundColor: Colors.redAccent, + ), + ), + ], const Spacer(), ], ),