File size: 4,966 Bytes
a1cdcd6 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# API Endpoint Verification Guide
## Overview
This document explains how to verify that the `api_name="safe_gpu_chat_handler"` endpoint is properly deployed and running.
## Implementation Status
β
**Code Deployed**: The API endpoint registration code is present in `app.py`:
- Line 845: `api_name="safe_gpu_chat_handler"` is set on the `api_message.submit()` event
- Line 849: Log message confirms registration
- Lines 1899-1900, 2002-2003: Handler functions are initialized and set globally
- Lines 2073-2097: Verification logging on app startup
## Verification Methods
### 1. Check Application Logs
When the application starts, you should see these log messages:
```
============================================================
VERIFYING API ENDPOINTS
============================================================
β API is enabled in Gradio config: True
Registered API endpoints:
- /api/safe_gpu_chat_handler (POST)
- /api/new_session (POST)
- /api/update_session_info (POST)
...
β API handler function initialized: True
Handler type: function
============================================================
LAUNCHING GRADIO APP
============================================================
API endpoints available at: http://<host>:7860/api/
```
Additionally, during interface creation:
```
β API endpoint '/api/safe_gpu_chat_handler' registered with api_name
β GPU chat handler initialized and set as API handler
```
OR
```
β Non-GPU chat handler initialized and set as API handler
```
### 2. Use the Verification Script
Run the verification script to test the endpoint:
```bash
python verify_api_endpoint.py [base_url]
```
Example:
```bash
# Local testing
python verify_api_endpoint.py http://localhost:7860
# HuggingFace Spaces
python verify_api_endpoint.py https://jatinautonomouslabs-research-ai-assistant.hf.space
```
The script will:
- Check if Gradio API info is accessible
- Verify the endpoint is registered
- Test actual endpoint accessibility
- Return exit code 0 if successful
### 3. Manual HTTP Test
Test the endpoint directly using curl or HTTP client:
```bash
curl -X POST http://localhost:7860/api/safe_gpu_chat_handler \
-H "Content-Type: application/json" \
-d '{
"data": [
"test message",
[],
"Admin_J",
"Session: test123 | User: Admin_J | Interactions: 0"
]
}'
```
Expected responses:
- **200 OK**: Endpoint is working correctly
- **422 Validation Error**: Endpoint exists but validation failed (still confirms deployment)
- **404 Not Found**: Endpoint not registered
### 4. Check Gradio API Documentation
Visit the Gradio API documentation page:
- Local: `http://localhost:7860/docs` or `http://localhost:7860/api/docs`
- Spaces: `https://<your-space>.hf.space/docs`
Look for `/api/safe_gpu_chat_handler` in the list of available endpoints.
### 5. Inspect Gradio Config
If you have access to the running instance, check:
```python
import gradio as gr
# After demo is created
demo.config.api_open # Should be True
demo.config.show_api # Should be True
```
## Code Location Reference
| Component | File | Line(s) |
|-----------|------|---------|
| API Endpoint Registration | `app.py` | 838-849 |
| Handler Initialization (GPU) | `app.py` | 1899-1900 |
| Handler Initialization (Non-GPU) | `app.py` | 2002-2003 |
| Startup Verification | `app.py` | 2073-2097 |
| Global Handler Variable | `app.py` | 27-28 |
## Troubleshooting
### Issue: Endpoint not found (404)
**Check:**
1. Application logs show "API endpoint registered" message
2. `show_api=True` is set in `demo.launch()` (line 2108)
3. Handler function is initialized (check logs for handler type)
**Solution:**
- Ensure `api_name` parameter is correctly set on the submit event
- Verify the handler function is defined before the interface is created
### Issue: Handler function is None
**Check:**
1. Logs show handler initialization message
2. `_api_chat_handler_fn` is set after handlers are defined
**Solution:**
- Verify GPU availability check runs correctly
- Check that handler functions are defined (lines 1779-1997)
### Issue: Endpoint accessible but returns errors
**This is expected** - The endpoint is deployed correctly. The errors are validation or processing errors, not deployment issues.
## Expected Behavior
β
**Deployed Successfully**:
- Application logs show registration messages
- HTTP requests to `/api/safe_gpu_chat_handler` return 200 or 422 (not 404)
- Verification script passes
- Handler function is not None
β **Not Deployed**:
- 404 errors on endpoint access
- Logs don't show registration messages
- Handler function is None
## Additional Notes
- The endpoint uses hidden Gradio components (visible=False) to avoid UI interference
- The handler automatically selects GPU or non-GPU handler based on availability
- Fallback to `process_message` ensures endpoint always works
- All API endpoints are registered with `api_name` parameters for REST access
|