a8b1bb87a6
Port the dobetterlegal-tools two-tier quality stack to dobetternorge.no: QUALITY_TIERS registry + resolveTier (ToolModels), dbnToolsResolveToolRun (bootstrap), tier read+charge in the 6 analytical endpoints, Quick/Pro UI + payload.tier on the 6 tool pages/JS, and the bounded corpusContextForSummarize RAG fix (per-passage trim + total budget + reranker_enabled). Back-compat: requests without `tier` keep legacy engine behavior. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
25 lines
1.0 KiB
PHP
25 lines
1.0 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
require_once __DIR__ . '/../includes/LegalTools.php';
|
|
require_once __DIR__ . '/../includes/ToolModels.php';
|
|
|
|
dbnToolsRequireMethod('POST');
|
|
dbnToolsRequireAuth();
|
|
$input = dbnToolsJsonInput(25000);
|
|
$language = dbnToolsNormalizeLanguage($input['language'] ?? 'en');
|
|
$run = dbnToolsResolveToolRun('ask', $input);
|
|
$ftUid = $run['ftUid'];
|
|
$engine = $run['engine'];
|
|
|
|
dbnToolsWithChargedTelemetry('ask', $language, $ftUid, function () use ($input, $language, $engine): array {
|
|
$question = dbnToolsInjectDocContent($input, dbnToolsString($input, 'question', 4000, false));
|
|
if (mb_strlen(trim($question), 'UTF-8') < 5) {
|
|
dbnToolsAbort('Enter a question or select a document before running.', 422, 'empty_text');
|
|
}
|
|
$persona = (isset($input['profile']) && is_string($input['profile']) && trim($input['profile']) !== '')
|
|
? trim($input['profile'])
|
|
: null;
|
|
return (new DbnLegalToolsService())->ask($question, $language, $engine, $persona);
|
|
}, $run['credits'], $run['metadata']);
|