# -*- coding:utf-8 -*- import json import sys import os sys.path.insert(0, os.getcwd()) method = request.method if method == 'GET': return json.dumps({ 'usage': 'POST with JSON body', 'params': { 'texts': 'list[str] (optional)', 'images': 'list[str] (optional, file paths/URLs/base64)' }, 'response': { 'text_embeddings': 'list of vectors (if texts provided)', 'image_embeddings': 'list of vectors (if images provided)' }, 'example': 'POST {texts: [a cat], images: [/path/to/cat.jpg]}' }, ensure_ascii=False) texts = params_kw.get('texts', []) images = params_kw.get('images', []) if isinstance(texts, str): texts = [texts] if isinstance(images, str): images = [images] if not texts and not images: return json.dumps({'error': 'at least one of texts or images is required'}, ensure_ascii=False) try: import time t0 = time.time() result = {'status': 'ok'} if texts: from workers.clip_model import embed_texts result['text_embeddings'] = embed_texts(texts) result['text_count'] = len(texts) if images: from workers.clip_model import embed_images result['image_embeddings'] = embed_images(images) result['image_count'] = len(images) result['dimension'] = 1024 result['elapsed'] = round(time.time() - t0, 3) return json.dumps(result, ensure_ascii=False) except Exception as e: import traceback return json.dumps({'error': str(e), 'traceback': traceback.format_exc()}, ensure_ascii=False)