KI-Chat: Web-Recherche ueber Ollama Web Search

Der Assistent kannte bisher nur die Datenbank. Fragen wie "Was muss ich
ueber die Firma wissen?" konnte er damit nicht beantworten - Groesse,
Produkte, News, Kultur stehen nirgends in der Bewerbung.

Zwei neue Werkzeuge (web_suche, web_seite_lesen) ueber die Web-Search-API
von ollama.com. Sie authentifizieren sich mit demselben OLLAMA_API_KEY,
den der Benutzer fuer Chat und Dokumente ohnehin hinterlegt hat: keine
zusaetzliche Konfiguration. Anders als /api/chat haengt die Websuche
nicht an OLLAMA_HOST - wer rein lokal chattet, hat schlicht keine
Websuche, der Rest laeuft unveraendert weiter.

- Tool-Runden 4 -> 8: Bewerbung holen, suchen, Seiten lesen, antworten
  lief vorher ins Limit, statt zu antworten.
- Antworten der Websuche hart gedeckelt, sie wandern sonst in jeder
  weiteren Runde erneut ins Kontextfenster.
- Status-Label zeigt, wonach gesucht wird - sonst sieht der Nutzer nicht,
  ob die richtige Firma erwischt wurde.
- Nackte URLs im Chat sind klickbar: Belege nennt das Modell meist als
  reine URL, nicht als Markdown-Link.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-14 12:02:29 +02:00
co-authored by Claude Opus 4.8
parent 9fc4225204
commit 4a036fe215
4 changed files with 188 additions and 6 deletions
+18 -2
View File
@@ -13,7 +13,10 @@
const promptStore = require('./prompts');
const config = require('./config');
const MAX_TOOL_ROUNDS = 4;
// Firmenrecherche braucht mehr Runden als eine reine Datenbankfrage: Bewerbung
// holen -> web_suche -> ein, zwei Seiten lesen -> antworten. Mit 4 Runden lief
// der Assistent dabei ins Limit, statt zu antworten.
const MAX_TOOL_ROUNDS = 8;
function isConfigured() {
return Boolean(config.ollama().apiKey);
@@ -194,7 +197,20 @@ function buildContextPrompt(ctx) {
'Korrespondenz oder einem Termin fragt — rufe niemals Daten aus dem Gedächtnis ' +
'ab, die du per Werkzeug holen kannst. Lege mehrere benötigte Werkzeuge in ' +
'einer Runde parallel an. Wenn eine Suche keine Treffer liefert, weise den ' +
'Nutzer darauf hin und frage nach Details (z. B. Link/Stellenbeschreibung).'
'Nutzer darauf hin und frage nach Details (z. B. Link/Stellenbeschreibung).\n\n' +
'Zusätzlich kannst du mit `web_suche` und `web_seite_lesen` im Internet ' +
'recherchieren. Nutze das für alles, was nicht in den Bewerbungsdaten steht: ' +
'Hintergrund zu einer Firma (Produkte, Größe, Standorte, Kultur, aktuelle ' +
'Nachrichten), Gehaltsspannen, Technologien, Vorbereitung auf ein Gespräch. ' +
'Typischer Ablauf bei „Was muss ich über Firma X wissen?": erst die Bewerbung ' +
'per Werkzeug holen (Stelle, Ort, Stellenbeschreibung, quelle_url), dann ' +
'gezielt im Web nachrecherchieren und beides zusammenführen. Recherchiere ' +
'nicht ungefragt bei jeder Frage — nur, wenn aktuelles oder externes Wissen ' +
'die Antwort wirklich besser macht.\n\n' +
'Bei Web-Rechercheergebnissen: Gib nur wieder, was in den Treffern steht, und ' +
'nenne die Quelle als URL. Wenn du etwas nicht belegen kannst, sage es — rate ' +
'nicht. Achte darauf, dass Treffer wirklich die gemeinte Firma betreffen ' +
'(Namensdopplungen, falscher Standort) und weise auf Zweifel hin.'
);
if (heute) {
parts.push('# Heute\n' + 'Heutiges Datum: ' + heute + '. ' +