Add Legal Analysis tool — two-pass DBN-legal pipeline
Restores the dbn-legal-agent-v3 fine-tune on ocelot (was silently aliased to plain qwen2.5:14b in LiteLLM since the viper retirement) and ships a new tool that uses it via a two-pass flow: Pass 1 (Azure 4o-mini) → extract up to 5 distinct legal issues Pass 2 (ocelot v3 only) → answer each issue, ≤350 tokens, with corpus Pass 3 (Azure 4o-mini) → synthesise overall assessment + next steps The 12GB-VRAM constraint motivates the split: dbn-legal-agent-v3 stays hot in VRAM through the 5 sequential per-issue calls because issue extraction and synthesis run on Azure, not on ocelot. New surface: - includes/LegalAnalysisAgent.php - api/legal-analysis.php (NDJSON streaming endpoint) - legal-analysis.php (dedicated tool page) - assets/js/legal-analysis.js (streamed UI with per-issue cards) - Save-result + case-result.php rendering for legal-analysis output - Nav registration in all four UI languages Add-on integration: a "⚖️🇳🇴 Run deep legal analysis on this text" button now appears on Summarize, Ask, and Redact result pages and streams the same pipeline inline below the existing result. Existing tools relabelled: the misleading "🇳🇴 Norwegian specialist v3 ⭐" option on advocate/deep-research/discrepancy/barnevernet is now honestly "DBN Legal Agent" — now that the real fine-tune is actually deployed, the label finally matches reality. The advocate.php v2 option was removed since the v2 GGUF is retired. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -229,6 +229,13 @@
|
||||
resultsEl
|
||||
);
|
||||
}
|
||||
// Offer deep legal analysis on the summarised text
|
||||
if (typeof window.dbnInjectLegalAnalysisButton === 'function') {
|
||||
var sourceText = combined || (_lastPayload && _lastPayload.text) || '';
|
||||
if (sourceText && sourceText.length >= 80) {
|
||||
window.dbnInjectLegalAnalysisButton(sourceText, _currentLang, 'summarize', resultsEl);
|
||||
}
|
||||
}
|
||||
if (data.balance != null) {
|
||||
var credEl = document.getElementById('creditsRemaining');
|
||||
if (credEl) credEl.textContent = data.balance;
|
||||
|
||||
Reference in New Issue
Block a user