- Mit
/augment/searchdas Live-Web durchsuchen - Entscheiden, welche dieser Ergebnisse es wert sind, gelesen zu werden
- Die ausgewählten Seiten mit
/augment/scrapein Markdown umwandeln - Ein Chat-Modell bitten, das Briefing zu schreiben und die Quellen per Nummer zu zitieren
- Die vier Stufen in einem Skript zusammenführen
venice_parameters.enable_web_search in einer Chat Completion. Der Guide Websuche und Scraping vergleicht die beiden Ansätze.
Einrichtung
Sie benötigen Python 3.9 oder neuer, das Paketrequests und einen Venice-API-Schlüssel. Siehe API-Schlüssel erzeugen, falls Sie noch keinen haben.
research.py und beginnen Sie mit den Imports und einem gemeinsamen Header-Block, den jeder Aufruf wiederverwendet:
1. Das Web durchsuchen
/augment/search nimmt eine Anfrage entgegen und liefert bis zu 20 gerankte Ergebnisse. Brave ist der Standardanbieter und wendet Zero Data Retention an. Google ist ebenfalls verfügbar und wird über Venice geproxyt, sodass die Anfrage nie mit Ihnen in Verbindung gebracht wird.
content kommt mit HTML darin an, weil der Anbieter Trefferbegriffe in <strong>-Tags einwickelt. Die HTML_TAG-Ersetzung oben entfernt sie, damit das Snippet als reiner Text zum Modell gelangt.
Das Feld date ist häufig ein leerer String. Viele Seiten veröffentlichen kein maschinenlesbares Datum, behandeln Sie date daher als Hinweis, den Sie verwenden können, wenn er vorhanden ist, und nicht als Feld, nach dem Sie sortieren oder filtern können.
2. Auswählen, welche Quellen gelesen werden sollen
Alle zehn Ergebnisse zu scrapen wäre langsam, teuer und weitgehend redundant. Suchmaschinen liefern mehrere Seiten von derselben Website, und Dokumentationsseiten insbesondere liefern dieselbe Seite in mehreren Sprachen, sodass derselbe Inhalt drei- oder viermal unter unterschiedlichen URLs auftauchen kann. Nur das am höchsten gerankte Ergebnis pro Domain zu behalten, entfernt den Großteil dieser Duplikate in wenigen Zeilen:date bevorzugen. Jeder Filter, den Sie hier anwenden, ist eine Entscheidung, bei der das Modell keine Chance mehr hat, sie falsch zu treffen.
3. Die ausgewählten Seiten scrapen
/augment/scrape ruft eine öffentliche URL ab und liefert sie als Markdown zurück. Zuerst fragt es die Seite nach einer nativen Markdown-Darstellung und weicht auf browserbasierte Extraktion aus, wenn keine vorhanden ist.
Einige Seiten werden fehlschlagen, und ein Recherche-Tool sollte das als Routine und nicht als fatal behandeln:
200 liefern, aber ein Cookie-Banner oder eine leere Hülle statt eines Artikels zurückgeben.
Fehlgeschlagene Scrapes liefern einen einfachen
{"error": "..."}-Body mit einer lesbaren Meldung, zum Beispiel X (formerly Twitter) blocks automated access to their content. X und Reddit sind grundsätzlich blockiert. Um Beiträge von X in eine Antwort einzubinden, verwenden Sie stattdessen venice_parameters.enable_x_search in einer Chat Completion.4. Das Briefing schreiben
Jetzt übergeben wir dem Modell die gesammelten, nummerierten Seiten und bitten um Zitate, die auf diese Nummern verweisen. Die Nummerierung im Prompt ist das, was es uns erlaubt, ein[2] in der Ausgabe später wieder in eine URL umzuwandeln.
temperature hält die Formulierung nah am Quelltext. enable_web_search auf off zu setzen entspricht dem Standard, aber es explizit auszusprechen garantiert, dass das Modell nicht stillschweigend eine Quelle einführen kann, die in unserer Referenzliste fehlt.
5. Alles zusammenfügen
Das letzte Stück führt die Stufen der Reihe nach aus und hängt die Referenzliste an, die die Zitatnummern auflöst:stderr, sodass Sie das Briefing allein in eine Datei umleiten können:
Die Pipeline optimieren
Der größte Teil der Laufzeit entfällt auf die abschließende Chat Completion, da sich vier gescrapte Seiten auf zehntausende Tokens summieren. Das sind die Stellschrauben, an denen es sich zuerst zu drehen lohnt:Nächste Schritte
Die Pipeline, die Sie jetzt haben, ist eine Grundlage und kein fertiges Produkt. Ein paar Richtungen, die es zu erkunden lohnt:- Gescrapte Markdown-Inhalte pro URL cachen, damit wiederholte Fragen nicht dieselben Seiten erneut abrufen.
- Das Markdown mit Embeddings als Vektoren speichern und Passagen statt ganzer Seiten abrufen.
- Das Modell mehrere Anfragen planen lassen, bevor gesucht wird, wie es die Demo Private Research Agent tut.
- Das Briefing laut vorlesen lassen, indem Sie es in Artikel mit Text-to-Speech vertonen einspeisen.
Websuche und Scraping
Referenz für die Search- und Scrape-Endpunkte.
Artikel mit Text-to-Speech vertonen
Machen Sie aus dem gerade erzeugten Text Audio.
Embeddings
Gescrapte Markdown-Inhalte indexieren, statt sie erneut abzurufen.
Private Research Agent
Ein größerer Agent, der seine eigenen Suchen plant.