def generate_image_embeddings()

in use-cases/rag-pipeline/embedding-models/multimodal-embedding/src/blip2_server.py [0:0]


def generate_image_embeddings():
    if request.method == "POST":
        try:
            if request.is_json:
                try:
                    json_req = request.get_json()
                except Exception as e:
                    return jsonify({"error": f"Invalid JSON payload: {e}"}), 400
                if "image_uri" not in json_req:
                    return jsonify({"error": "No image_uri provided"}), 400
                try:
                    image = download_image_from_gcs(json_req["image_uri"])
                except Exception as e:
                    return jsonify({"error": str(e)}), 400
            else:
                if "image" not in request.files:
                    return jsonify({"error": "No image provided"}), 400
                try:
                    image_file = request.files["image"]
                    image = Image.open(image_file).convert("RGB")
                except Exception as e:
                    return jsonify({"error": f"Error processing image file: {e}"}), 400
        except Exception as e:
            return jsonify({"error": str(e)}), 400

        try:
            image_features = get_image_embedding(image)
        except Exception as e:
            return jsonify({"error": str(e)}), 400
        logger.info("Image embeddings generated successfully.")
        return jsonify(
            {
                "image_embeds": image_features.tolist()[0][0],
            }
        )
    else:
        return jsonify({"error": "Invalid request method"}), 405