Spaces:
Sleeping
Sleeping
from flask import Flask, request, jsonify | |
from flask_cors import CORS | |
import json | |
from sentence_transformers import SentenceTransformer | |
from sklearn.metrics.pairwise import cosine_similarity | |
import numpy as np | |
app = Flask(__name__) | |
CORS(app) | |
with open('tools_with_embeddings.json', 'r') as f: | |
tools_data = json.load(f) | |
tools_embeddings = np.array([tool['embedding'] for tool in tools_data]) | |
model = SentenceTransformer('all-mpnet-base-v2') | |
def recommend(): | |
query = request.json.get('query', '') | |
if not query: | |
return jsonify({"error": "Query is required"}), 400 | |
query_embedding = model.encode([query]) | |
similarities = cosine_similarity(query_embedding, tools_embeddings)[0] | |
scored_tools = zip(tools_data, similarities) | |
sorted_tools = sorted(scored_tools,key=lambda x: x[1], reverse=True) | |
results = [] | |
for tool, score in sorted_tools: | |
if score > 0.3 : | |
result_item = tool.copy() | |
del result_item['embedding'] | |
result_item['score'] = float(score) | |
results.append(result_item) | |
return jsonify(results) | |
if __name__ == '__main__': | |
app.run(debug=True, port=5000) |