salience-editor/api/salience/__init__.py

58 lines
1.8 KiB
Python
Raw Normal View History

2025-10-30 16:26:48 -07:00
from flask import Flask, request
2025-11-01 12:08:03 -07:00
from flask_cors import CORS
import numpy as np
2025-10-30 16:26:48 -07:00
from .salience import extract, AVAILABLE_MODELS
import json
app = Flask(__name__)
2025-11-01 12:08:03 -07:00
CORS(app, origins=["http://localhost:5173"])
2025-11-01 12:08:03 -07:00
# Load default text from transcript.txt for GET requests
with open('./transcript.txt', 'r') as file:
2025-11-01 12:08:03 -07:00
default_source_text = file.read().strip()
2025-10-30 16:26:48 -07:00
@app.route("/models")
def models_view():
return json.dumps(list(AVAILABLE_MODELS.keys()))
2025-11-01 12:08:03 -07:00
@app.route("/salience", methods=['GET'])
def salience_view_default():
"""GET endpoint - processes default text from transcript.txt"""
2025-10-30 16:26:48 -07:00
model_name = request.args.get('model', 'all-mpnet-base-v2')
# Validate model name
if model_name not in AVAILABLE_MODELS:
return json.dumps({'error': f'Invalid model: {model_name}'}), 400
2025-11-01 12:08:03 -07:00
sentence_ranges, adjacency = extract(default_source_text, model_name)
return json.dumps({
'source': default_source_text,
'intervals': sentence_ranges,
'adjacency': np.nan_to_num(adjacency.numpy()).tolist(),
'model': model_name,
})
@app.route("/salience", methods=['POST'])
def salience_view_custom():
"""POST endpoint - processes text from request body"""
model_name = request.args.get('model', 'all-mpnet-base-v2')
# Validate model name
if model_name not in AVAILABLE_MODELS:
return json.dumps({'error': f'Invalid model: {model_name}'}), 400
# Get document content from request body as plain text
source_text = request.data.decode('utf-8').strip()
if not source_text:
return json.dumps({'error': 'No text provided'}), 400
2025-10-30 16:26:48 -07:00
sentence_ranges, adjacency = extract(source_text, model_name)
return json.dumps({
'source': source_text,
'intervals': sentence_ranges,
'adjacency': np.nan_to_num(adjacency.numpy()).tolist(),
2025-10-30 16:26:48 -07:00
'model': model_name,
})