mirror of
https://github.com/foss42/apidash.git
synced 2025-12-01 18:28:25 +08:00
FEAT: Debug API prompt for clear analysis
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user