Download test_multimodal.py from cong182/firstAI: direct link, hf CLI and curl.
- Browser
- Download file 4.32 kB
-
https://huggingface.co/spaces/cong182/firstAI/resolve/main/test_multimodal.py
- Command line
-
hf download hf://spaces/cong182/firstAI/test_multimodal.py
-
curl -L -o test_multimodal.py https://huggingface.co/spaces/cong182/firstAI/resolve/main/test_multimodal.py
4.32 kB
| #!/usr/bin/env python3 | |
| """ | |
| Test script for multimodal AI backend service | |
| Tests both text-only and image+text functionality | |
| """ | |
| import requests | |
| import json | |
| import time | |
| # Service configuration | |
| BASE_URL = "http://localhost:8000" | |
| def test_text_only(): | |
| """Test text-only chat completion""" | |
| print("π§ͺ Testing text-only chat completion...") | |
| payload = { | |
| "model": "microsoft/DialoGPT-medium", | |
| "messages": [ | |
| {"role": "user", "content": "Hello! How are you today?"} | |
| ], | |
| "max_tokens": 100, | |
| "temperature": 0.7 | |
| } | |
| try: | |
| response = requests.post(f"{BASE_URL}/v1/chat/completions", json=payload, timeout=30) | |
| if response.status_code == 200: | |
| result = response.json() | |
| print(f"β Text-only response: {result['choices'][0]['message']['content']}") | |
| return True | |
| else: | |
| print(f"β Text-only failed: {response.status_code} - {response.text}") | |
| return False | |
| except Exception as e: | |
| print(f"β Text-only error: {e}") | |
| return False | |
| def test_multimodal(): | |
| """Test multimodal (image + text) chat completion""" | |
| print("πΌοΈ Testing multimodal chat completion...") | |
| payload = { | |
| "model": "unsloth/DeepSeek-R1-0528-Qwen3-8B-GGUF", | |
| "messages": [ | |
| { | |
| "role": "user", | |
| "content": [ | |
| { | |
| "type": "image", | |
| "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG" | |
| }, | |
| { | |
| "type": "text", | |
| "text": "What animal is on the candy?" | |
| } | |
| ] | |
| } | |
| ], | |
| "max_tokens": 150, | |
| "temperature": 0.7 | |
| } | |
| try: | |
| response = requests.post(f"{BASE_URL}/v1/chat/completions", json=payload, timeout=60) | |
| if response.status_code == 200: | |
| result = response.json() | |
| print(f"β Multimodal response: {result['choices'][0]['message']['content']}") | |
| return True | |
| else: | |
| print(f"β Multimodal failed: {response.status_code} - {response.text}") | |
| return False | |
| except Exception as e: | |
| print(f"β Multimodal error: {e}") | |
| return False | |
| def test_service_info(): | |
| """Test service information endpoint""" | |
| print("βΉοΈ Testing service information...") | |
| try: | |
| response = requests.get(f"{BASE_URL}/", timeout=10) | |
| if response.status_code == 200: | |
| result = response.json() | |
| print(f"β Service info: {result['message']}") | |
| return True | |
| else: | |
| print(f"β Service info failed: {response.status_code}") | |
| return False | |
| except Exception as e: | |
| print(f"β Service info error: {e}") | |
| return False | |
| def test_health(): | |
| """Test health check endpoint""" | |
| print("π₯ Testing health check...") | |
| try: | |
| response = requests.get(f"{BASE_URL}/health", timeout=10) | |
| if response.status_code == 200: | |
| result = response.json() | |
| print(f"β Health: {result['status']} - Model: {result['model']}") | |
| return True | |
| else: | |
| print(f"β Health check failed: {response.status_code}") | |
| return False | |
| except Exception as e: | |
| print(f"β Health check error: {e}") | |
| return False | |
| def main(): | |
| """Run all tests""" | |
| print("π Starting multimodal AI backend tests...\n") | |
| tests = [ | |
| ("Service Info", test_service_info), | |
| ("Health Check", test_health), | |
| ("Text-only Chat", test_text_only), | |
| ("Multimodal Chat", test_multimodal), | |
| ] | |
| passed = 0 | |
| total = len(tests) | |
| for test_name, test_func in tests: | |
| print(f"\n--- {test_name} ---") | |
| if test_func(): | |
| passed += 1 | |
| time.sleep(1) | |
| print(f"\nπ― Test Results: {passed}/{total} tests passed") | |
| if passed == total: | |
| print("π All tests passed! Multimodal AI backend is working correctly!") | |
| else: | |
| print("β οΈ Some tests failed. Check the output above for details.") | |
| if __name__ == "__main__": | |
| main() | |