diff --git a/Plugin/unraid/include/ai_web.php b/Plugin/unraid/include/ai_web.php index e0f7fa3..dc722d7 100644 --- a/Plugin/unraid/include/ai_web.php +++ b/Plugin/unraid/include/ai_web.php @@ -274,8 +274,18 @@ function vv_ai_web_search(string $question): array { // renumbering the other. function vv_ai_web_context(array $results, int $offset = 0): string { if (!$results) return ''; - $s = "Web search results. These are from outside this installation — cite them by number, and\n" - . "say when something is a general answer rather than one about this machine.\n\n"; + // Framed as reference material, not as the answer. The search runs whenever the box is + // ticked, because a search is one HTTP request and deciding to run it would cost a whole + // extra generation — but running it must not mean leaning on it. Answering a question the + // model already knows by paraphrasing the first search result is worse than answering it + // directly, and it was doing that because the results announced themselves as the source. + $s = "Reference material from a web search, in case it is useful. It is from outside this\n" + . "installation and nothing here has been verified against this machine.\n\n" + . "Answer from what you already know when you know it. Reach for these when you do not,\n" + . "when the question turns on something current, or when a specific version, release or\n" + . "figure needs checking rather than recalling. Cite by number only what you actually\n" + . "used, ignore the rest, and never imply the web was consulted about this installation —\n" + . "it was not. Say plainly when an answer is general rather than about this machine.\n\n"; foreach ($results as $i => $r) { $s .= '[' . ($offset + $i + 1) . '] ' . $r['title'] . ' — ' . $r['url'] . "\n" . $r['snippet'] . "\n\n"; diff --git a/Plugin/unraid/pages/ai.php b/Plugin/unraid/pages/ai.php index abc4bd9..5d10026 100644 --- a/Plugin/unraid/pages/ai.php +++ b/Plugin/unraid/pages/ai.php @@ -398,13 +398,16 @@ vv_ai_chat_markup('vv-ai', [ reads as broken, and the reason it does nothing is a capability boundary that takes a paragraph to explain. -->