Spaces:
Runtime error
Runtime error
File size: 4,811 Bytes
45ef827 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Legal Document Summarizer</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
background-color: #f4f4f4;
color: #333;
}
.container {
max-width: 900px;
margin: 0 auto;
background-color: #fff;
padding: 30px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
h1 {
color: #0056b3;
text-align: center;
margin-bottom: 30px;
}
label {
display: block;
margin-bottom: 8px;
font-weight: bold;
}
textarea,
input[type="text"] {
width: 100%;
padding: 10px;
margin-bottom: 20px;
border: 1px solid #ddd;
border-radius: 4px;
box-sizing: border-box;
font-size: 16px;
}
button {
background-color: #007bff;
color: white;
padding: 12px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 18px;
width: 100%;
transition: background-color 0.2s ease-in-out;
}
button:hover {
background-color: #0056b3;
}
#loading {
display: none;
text-align: center;
margin-top: 20px;
font-size: 1.1em;
color: #007bff;
}
#summaryOutput {
margin-top: 30px;
padding: 15px;
background-color: #e9ecef;
border: 1px solid #ced4da;
border-radius: 4px;
white-space: pre-wrap;
word-wrap: break-word;
min-height: 100px;
}
.error {
color: red;
font-weight: bold;
margin-top: 10px;
}
</style>
</head>
<body>
<div class="container">
<h1>Legal Document Summarizer (Mistral-7B QLoRA)</h1>
<p>Enter an instruction and a legal document to generate a summary.</p>
<label for="instruction">Instruction:</label>
<input type="text" id="instruction" placeholder="e.g., Summarize the key legal points." value="Summarize the key legal points.">
<label for="inputDocument">Input Document:</label>
<textarea id="inputDocument" rows="10" placeholder="Paste your legal document here..."></textarea>
<button onclick="getSummary()">Generate Summary</button>
<div id="loading">Generating summary... Please wait.</div>
<div id="error" class="error"></div>
<label for="summaryOutput">Generated Summary:</label>
<div id="summaryOutput"></div>
</div>
<script>
async function getSummary() {
const instruction = document.getElementById('instruction').value;
const inputDocument = document.getElementById('inputDocument').value;
const summaryOutput = document.getElementById('summaryOutput');
const loadingDiv = document.getElementById('loading');
const errorDiv = document.getElementById('error');
summaryOutput.textContent = ''; // Clear previous output
errorDiv.textContent = ''; // Clear previous errors
if (!instruction || !inputDocument) {
errorDiv.textContent = 'Please provide both an instruction and an input document.';
return;
}
loadingDiv.style.display = 'block'; // Show loading message
try {
// Adjust this URL if your Flask app is hosted elsewhere
const response = await fetch('http://localhost:8000/summarize', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ instruction: instruction, input_document: inputDocument }),
});
const data = await response.json();
if (response.ok) {
summaryOutput.textContent = data.summary;
}
else {
errorDiv.textContent = 'Error: ' + (data.error || 'Unknown error');
}
} catch (e) {
errorDiv.textContent = 'Network error or server unavailable: ' + e.message;
console.error('Fetch error:', e);
} finally {
loadingDiv.style.display = 'none'; // Hide loading message
}
}
</script>
</body>
</html>
|