FEAT: Debug API prompt for clear analysis

This commit is contained in:
siddu015
2025-03-05 23:12:32 +05:30
parent 2f84eab461
commit ebe4bdba2d
3 changed files with 55 additions and 40 deletions

View File

@@ -1,5 +1,6 @@
import '../../models/request_model.dart'; import 'dart:convert';
import '../services/dashbot_service.dart'; import '../services/dashbot_service.dart';
import 'package:apidash/models/request_model.dart';
class DebugFeature { class DebugFeature {
final DashBotService _service; final DashBotService _service;
@@ -10,35 +11,47 @@ class DebugFeature {
required RequestModel? requestModel, required RequestModel? requestModel,
required dynamic responseModel, required dynamic responseModel,
}) async { }) async {
// Handle case where no request or response is available
if (requestModel == null || responseModel == null) { if (requestModel == null || responseModel == null) {
return "No recent API requests found."; return "No recent API requests found.";
} }
// Extract status code and error message from the response final method = requestModel.httpRequestModel?.method.toString().split('.').last.toUpperCase() ?? "GET";
final endpoint = requestModel.httpRequestModel?.url ?? "Unknown Endpoint";
final headers = requestModel.httpRequestModel?.enabledHeadersMap ?? {};
final parameters = requestModel.httpRequestModel?.enabledParamsMap ?? {};
final body = requestModel.httpRequestModel?.body;
final rawResponse = responseModel.body;
final responseBody = rawResponse is String ? rawResponse : jsonEncode(rawResponse);
final statusCode = responseModel.statusCode ?? 0; final statusCode = responseModel.statusCode ?? 0;
final errorMessage = responseModel.body ?? "No error message available.";
// Create a prompt for the AI to analyze the request and response
final prompt = ''' final prompt = '''
Debug this API request based on the status code and error message: URGENT API DEBUG ANALYSIS
**API Request:** **Request Overview:**
- Endpoint: `${requestModel.httpRequestModel?.url ?? "unknown"}` - Endpoint: $endpoint
- Method: `${requestModel.httpRequestModel?.method.toString().split('.').last.toUpperCase() ?? "GET"}` - Method: $method
**API Response:**
- Status Code: $statusCode - Status Code: $statusCode
- Error Message: $errorMessage
**Instructions:** **Debugging Instructions:**
- Explain what the status code $statusCode typically means. Provide a PRECISE, TEXT-ONLY explanation that:
- Suggest possible reasons for the error based on the status code and error message. 1. Identifies the EXACT problem
- Provide actionable steps to resolve the issue. 2. Explains WHY the request failed
- Use Markdown for formatting with headings and bullet points. 3. Describes SPECIFIC steps to resolve the issue
4. NO CODE SNIPPETS ALLOWED
**Request Details:**
- Headers: ${headers.isNotEmpty ? jsonEncode(headers) : "No headers"}
- Parameters: ${parameters.isNotEmpty ? jsonEncode(parameters) : "No parameters"}
- Request Body: ${body ?? "Empty body"}
**Response Context:**
\`\`\`
$responseBody
\`\`\`
Provide a CLEAR, ACTIONABLE solution in the SIMPLEST possible language.
'''; ''';
// Use DashBotService to generate the AI response
return _service.generateResponse(prompt); return _service.generateResponse(prompt);
} }
} }

View File

@@ -29,31 +29,32 @@ class ExplainFeature {
final statusCode = responseModel.statusCode ?? 0; final statusCode = responseModel.statusCode ?? 0;
final prompt = ''' final prompt = '''
Analyze this API interaction and **identify discrepancies**: FOCUSED API INTERACTION BREAKDOWN
**API Request:** **Essential Request Details:**
- Endpoint: `$endpoint` - Endpoint Purpose: What is this API endpoint designed to do?
- Method: `$method` - Interaction Type: Describe the core purpose of this specific request
- Headers: ${headers.isNotEmpty ? jsonEncode(headers) : "None"}
- Parameters: ${parameters.isNotEmpty ? jsonEncode(parameters) : "None"}
- Body: ${body ?? "None"}
**API Response:** **Request Mechanics:**
- Status Code: $statusCode - Exact Endpoint: $endpoint
- Body: - HTTP Method: $method
\`\`\`json - Key Parameters: ${parameters.isNotEmpty ? 'Specific inputs driving the request' : 'No custom parameters'}
$responseBody
\`\`\`
**Instructions:** **Response CORE Insights:**
1. Start with a **summary** of the API interaction. - Status: Success or Failure?
2. List **validation issues** (e.g., missing headers, invalid parameters). - Key Data Extracted: What CRITICAL information does the response contain?
3. Highlight **request/response mismatches** (e.g., unexpected data types, missing fields).
4. Suggest **concrete improvements** (e.g., fix parameters, add error handling).
**Format:** **Precise Analysis Requirements:**
- Use Markdown with headings (`##`, `###`). 1. Explain the API's PRIMARY function in ONE clear sentence
- Include bullet points for clarity. 2. Identify the MOST IMPORTANT piece of information returned
3. Describe the PRACTICAL significance of this API call
AVOID:
- Technical jargon
- Unnecessary details
- Verbose explanations
Deliver a CRYSTAL CLEAR, CONCISE explanation that anyone can understand.
'''; ''';
return _service.generateResponse(prompt); return _service.generateResponse(prompt);

View File

@@ -24,8 +24,9 @@ class DashBotService {
if (input == "Explain API") { if (input == "Explain API") {
return _explainFeature.explainLatestApi(requestModel: requestModel, responseModel: responseModel); return _explainFeature.explainLatestApi(requestModel: requestModel, responseModel: responseModel);
} else if(input == "Debug API") { } else if(input == "Debug API") {
_debugFeature.debugApi(requestModel: requestModel, responseModel: responseModel); return _debugFeature.debugApi(requestModel: requestModel, responseModel: responseModel);
} }
return generateResponse(input); return generateResponse(input);
} }
} }