Spaces:
Paused
Paused
| """ | |
| API Testing Script for Lovebird Reply Generator | |
| This script helps you test the deployed Hugging Face Space API. | |
| Usage: | |
| python test_api.py --space_url https://your-space-name.hf.space | |
| """ | |
| import argparse | |
| import requests | |
| import json | |
| from typing import Dict, Any | |
| def test_intent_api(space_url: str, text: str): | |
| """Test Intent classification API""" | |
| api_url = f"{space_url}/api/intent" | |
| response = requests.post(api_url, json={"data": [text]}) | |
| if response.status_code == 200: | |
| result = response.json() | |
| print("\n✅ Intent API Response:") | |
| print(json.dumps(result, indent=2, ensure_ascii=False)) | |
| return result | |
| else: | |
| print(f"\n❌ Intent API Error: {response.status_code}") | |
| print(response.text) | |
| return None | |
| def test_tone_api(space_url: str, text: str): | |
| """Test Tone classification API""" | |
| api_url = f"{space_url}/api/tone" | |
| response = requests.post(api_url, json={"data": [text]}) | |
| if response.status_code == 200: | |
| result = response.json() | |
| print("\n✅ Tone API Response:") | |
| print(json.dumps(result, indent=2, ensure_ascii=False)) | |
| return result | |
| else: | |
| print(f"\n❌ Tone API Error: {response.status_code}") | |
| print(response.text) | |
| return None | |
| def test_reply_api(space_url: str, conversation: str): | |
| """Test Reply Suggestion API""" | |
| api_url = f"{space_url}/api/reply" | |
| response = requests.post(api_url, json={"data": [conversation]}) | |
| if response.status_code == 200: | |
| result = response.json() | |
| print("\n✅ Reply Suggestion API Response:") | |
| print(json.dumps(result, indent=2, ensure_ascii=False)) | |
| return result | |
| else: | |
| print(f"\n❌ Reply API Error: {response.status_code}") | |
| print(response.text) | |
| return None | |
| def test_gradio_api(space_url: str, conversation: str, fn_index: int = 2): | |
| """Test using Gradio API endpoint""" | |
| api_url = f"{space_url}/api/predict" | |
| payload = { | |
| "data": [conversation], | |
| "fn_index": fn_index # 2 = Reply Suggestion tab | |
| } | |
| response = requests.post(api_url, json=payload) | |
| if response.status_code == 200: | |
| result = response.json() | |
| print("\n✅ Gradio API Response:") | |
| print(json.dumps(result, indent=2, ensure_ascii=False)) | |
| return result | |
| else: | |
| print(f"\n❌ Gradio API Error: {response.status_code}") | |
| print(response.text) | |
| return None | |
| def main(): | |
| parser = argparse.ArgumentParser(description="Test Lovebird API endpoints") | |
| parser.add_argument( | |
| "--space_url", | |
| type=str, | |
| required=True, | |
| help="URL of your Hugging Face Space (e.g., https://your-space-name.hf.space)" | |
| ) | |
| parser.add_argument( | |
| "--test_conversation", | |
| type=str, | |
| default="Tối nay anh có lịch đột xuất. ||| Thế mai được không?", | |
| help="Conversation to test (format: 'male ||| female')" | |
| ) | |
| parser.add_argument( | |
| "--test_text", | |
| type=str, | |
| default="Tối nay anh có lịch đột xuất. ||| Thế mai được không?", | |
| help="Text to test for intent/tone" | |
| ) | |
| args = parser.parse_args() | |
| print("=" * 60) | |
| print("Testing Lovebird API") | |
| print("=" * 60) | |
| print(f"Space URL: {args.space_url}") | |
| print(f"Test conversation: {args.test_conversation}") | |
| print() | |
| # Test 1: Intent API | |
| print("=" * 60) | |
| print("Test 1: Intent Classification") | |
| print("=" * 60) | |
| intent_result = test_intent_api(args.space_url, args.test_text) | |
| # Test 2: Tone API | |
| print("\n" + "=" * 60) | |
| print("Test 2: Tone Classification") | |
| print("=" * 60) | |
| tone_result = test_tone_api(args.space_url, args.test_text) | |
| # Test 3: Reply Suggestion API | |
| print("\n" + "=" * 60) | |
| print("Test 3: Reply Suggestion (Direct API)") | |
| print("=" * 60) | |
| reply_result = test_reply_api(args.space_url, args.test_conversation) | |
| # Test 4: Gradio API (alternative) | |
| print("\n" + "=" * 60) | |
| print("Test 4: Reply Suggestion (Gradio API)") | |
| print("=" * 60) | |
| gradio_result = test_gradio_api(args.space_url, args.test_conversation) | |
| # Summary | |
| print("\n" + "=" * 60) | |
| print("Test Summary") | |
| print("=" * 60) | |
| print(f"Intent API: {'✅ PASS' if intent_result else '❌ FAIL'}") | |
| print(f"Tone API: {'✅ PASS' if tone_result else '❌ FAIL'}") | |
| print(f"Reply API: {'✅ PASS' if reply_result else '❌ FAIL'}") | |
| print(f"Gradio API: {'✅ PASS' if gradio_result else '❌ FAIL'}") | |
| # Show generated reply if available | |
| if reply_result and "data" in reply_result: | |
| reply_data = reply_result["data"][0] if isinstance(reply_result["data"], list) else reply_result["data"] | |
| if isinstance(reply_data, list) and len(reply_data) > 1: | |
| suggestion = reply_data[1] # Second element is the suggestion text | |
| print(f"\n💬 Generated Reply: {suggestion}") | |
| if __name__ == "__main__": | |
| main() | |