Spaces:
Runtime error
Runtime error
| from flask import Flask, request, jsonify | |
| import json | |
| import logging | |
| import time | |
| from gradio_client import Client | |
| app = Flask(__name__) | |
| # Configure logging | |
| logging.basicConfig(level=logging.INFO, | |
| format='%(asctime)s - %(levelname)s - %(message)s') | |
| logger = logging.getLogger(__name__) | |
| # Initialize JARVIS client | |
| jarvis = Client("hadadrjt/ai") | |
| # Define available models | |
| models = [ | |
| "JARVIS: 2.1.2", | |
| "DeepSeek: V3-0324", | |
| "DeepSeek: R1 (Reasoning)", | |
| "DeepSeek: R1 - Distill Qwen 14B (Reasoning)", | |
| "DeepSeek: R1 - Distill Qwen 32B (Reasoning)", | |
| "DeepSeek: R1 - Distill Llama 70B (Reasoning)", | |
| "Google: Gemini 2.0 Flash Thinking (Reasoning)", | |
| "Google: Gemini 2.5 Pro", | |
| "Google: Gemma 3 1B-IT", | |
| "Google: Gemma 3 4B-IT", | |
| "Google: Gemma 3 27B-IT", | |
| "Meta: Llama 3.1 8B Instruct", | |
| "Meta: Llama 3.2 3B Instruct", | |
| "Meta: Llama 3.3 70B Instruct", | |
| "Meta: Llama 4 Maverick 17B 128E Instruct", | |
| "Meta: Llama 4 Scout 17B 16E Instruct", | |
| "Qwen: Qwen2.5 VL 3B Instruct", | |
| "Qwen: Qwen2.5 VL 32B Instruct", | |
| "Qwen: Qwen2.5 VL 72B Instruct", | |
| "Agentica: Deepcoder 14B Preview" | |
| ] | |
| def chat_completions(): | |
| data = request.json | |
| messages = data.get("messages", []) | |
| model = data.get("model", "JARVIS: 2.1.2") | |
| stream = data.get("stream", False) | |
| # Validate messages | |
| if not isinstance(messages, list): | |
| return jsonify({"error": {"message": "'messages' must be a list", "code": "invalid_message_list"}}), 400 | |
| for message in messages: | |
| if not isinstance(message, dict) or 'role' not in message or 'content' not in message: | |
| return jsonify({"error": {"message": "Each message must have a 'role' and a 'content'", "code": "invalid_message"}}), 400 | |
| # Extract the last message content | |
| last_message = messages[-1]["content"] | |
| try: | |
| # Get full response with context | |
| jarvis.predict(new=model, api_name="/change_model") | |
| result = jarvis.predict(multi={"text": last_message}, api_name="/api") | |
| response_text = result[0][0][1] | |
| # Create OpenAI compatible response | |
| response = { | |
| "id": f"chatcmpl-{int(time.time())}", | |
| "object": "chat.completion", | |
| "created": int(time.time()), | |
| "choices": [{ | |
| "index": 0, | |
| "message": { | |
| "role": "assistant", | |
| "content": response_text | |
| }, | |
| "finish_reason": "stop" | |
| }], | |
| "usage": { | |
| "prompt_tokens": 0, | |
| "completion_tokens": 0, | |
| "total_tokens": 0 | |
| } | |
| } | |
| return jsonify(response) | |
| except Exception as e: | |
| logger.error(f"Error processing request: {str(e)}") | |
| return jsonify({"error": {"message": str(e), "code": "jarvis_error"}}), 500 | |
| def list_models(): | |
| return jsonify({"data": [{"id": model} for model in models], "object": "list"}) | |
| if __name__ == "__main__": | |
| app.run(host='0.0.0.0', port=7860) |