search_provider auf "exa", und Venice führt die Suche mit Exa unter Zero Data Retention aus. Sie authentifizieren sich mit Ihrem Venice-API-Schlüssel, Venice rechnet die Suche ab, und Sie benötigen kein Exa-Konto.
Die Ergebnisse haben bei jedem Anbieter dasselbe Format, sodass sich Exa in alles einfügt, was Sie auf Basis der standardmäßigen Brave-Suche von Venice gebaut haben. Ein Anbieterwechsel erfordert nur die Änderung eines Feldes. Dieser Leitfaden behandelt den Aufruf des Endpunkts, die Bereitstellung der Exa-Suche als Tool für ein Venice-Modell, das eigene Fundieren eines Prompts in Exa-Ergebnissen und die Frage, wann Sie stattdessen die eigene API von Exa aufrufen sollten.
Voraussetzungen
- Ein Venice-API-Schlüssel
- Python 3.10 oder neuer bzw. Node.js 22 oder neuer
- Für das Agenten-Beispiel ein Venice-Modell, das Function Calling unterstützt. Die Beispiele verwenden
z-ai-glm-5-3-flash.
Einrichtung
Installieren Sie das OpenAI SDK sowierequests für Python. Node.js enthält fetch bereits:
Mit Exa suchen
Senden Sie eine Anfrage an/augment/search, wobei search_provider auf "exa" gesetzt ist:
limit ist standardmäßig 10 und akzeptiert Werte von 1 bis 20, query akzeptiert 1 bis 400 Zeichen. Werte außerhalb dieser Bereiche liefern 400, statt begrenzt zu werden. Behandeln Sie date als optional, da viele Seiten kein Datum veröffentlichen.
Einem Venice-Modell die Exa-Suche bereitstellen
Damit ein Modell entscheiden kann, wann und wonach es sucht, beschreiben Sie eineweb_search-Funktion im tools-Array einer Chat-Anfrage und führen die Suche selbst aus, wann immer das Modell sie aufruft. Dieses Programm verpackt die obige Anfrage in eine Such-Hilfsfunktion, gibt die Ergebnisse als tool-Nachricht an das Modell zurück und wiederholt den Vorgang, bis das Modell mit Text antwortet:
- Vom Modell geschriebene Anfragen kürzen. Der Endpunkt lehnt Anfragen mit mehr als 400 Zeichen ab, statt sie zu kürzen, und Modelle schreiben manchmal lange Anfragen.
- Fehler als Tool-Ergebnisse zurückgeben. Eine fehlgeschlagene Suche wird zu einer Tool-Nachricht, die mit
Error:beginnt. So kann das Modell eine andere Anfrage versuchen oder den Fehler erklären, statt dass die Schleife abstürzt. - Die Assistant-Nachricht vor ihren Tool-Ergebnissen anhängen. Jede
tool-Nachricht muss auf den Assistant-Turn folgen, der sie angefordert hat. Wenn Sie das Nachrichtenobjekt selbst anhängen, bleibt außerdemreasoning_contenterhalten, das Reasoning-Modelle wie GLM 5.3 Flash zurückgeben. So behält das Modell sein Reasoning über mehrere Runden hinweg.
content jedes Ergebnisses enthält Seitentext mit bis zu etwa 10.000 Zeichen, sodass das Modell meist allein anhand der Suchergebnisse antworten kann. Wenn es eine ganze Seite benötigt, fügen Sie ein zweites Tool hinzu, das /augment/scrape aufruft und die Seite als Markdown zurückgibt.
Erst suchen, dann generieren
Mit Function Calling entscheidet das Modell, wann und wonach es sucht. Wenn Ihr Code bereits weiß, wonach gesucht werden soll, können Sie die Tool-Schleife überspringen: Führen Sie eine Exa-Suche aus, nummerieren Sie die Ergebnisse und lassen Sie Venice auf dieser Grundlage antworten. Das funktioniert mit jedem Venice-Textmodell, und da Sie die Liste der Quellen behalten, die in den Prompt eingeflossen sind, lässt sich jedes Zitat in der Antwort einer URL zuordnen. Mit der Such-Hilfsfunktion, dem Client und dem Modell aus dem vorherigen Beispiel:"exa", um sie mit Exa auszuführen.
Die Exa-API direkt verwenden
Der Suchendpunkt von Venice nimmt eine Anfrage und eine Ergebnisanzahl entgegen. Die eigene API von Exa bietet mehr Steuerungsmöglichkeiten: Kategorien für Nachrichten, wissenschaftliche Arbeiten, Unternehmen, Personen und Finanzberichte, Domain- und Datumsfilter, anfragebezogene Highlights und vollständigen Seitentext sowie eine tiefe, mehrstufige Suche. Um diese zu nutzen, rufen Sie Exa direkt mit einem API-Schlüssel aus dem Exa-Dashboard auf. Diese Anfragen gehen von Ihrer Anwendung direkt an Exa, unterliegen den Bedingungen von Exa statt denen von Venice und werden Ihrem Exa-Konto in Rechnung gestellt. Exa bietet Zero Data Retention in Enterprise-Tarifen an. Die Exa-SDKsexa-py und exa-js (ab Version 2.24.0) enthalten Tools im Chat-Completions-Format, die sich direkt in die obige Schleife einfügen lassen. Ersetzen Sie die Tool-Liste durch die Tools von Exa:
messages += exa.openai.handle_tool_calls(message) in Python oder messages.push(...(await exa.openai.handleToolCalls(message))) in Node.js. Das SDK führt jeden Exa-Aufruf aus und gibt die passenden tool-Nachrichten zurück, wobei Fehler als Error:-Ergebnisse gemeldet werden. Behalten Sie die Begrenzung des Seitentexts bei, da exa-js ohne sie ganze Seiten zurückgibt. Schlüsselwortargumente wie category, include_domains und start_published_date werden an die Exa-Suche durchgereicht. Alle Optionen finden Sie im Tool-Calling-Leitfaden von Exa.
Empfohlene Modelle
Modell-IDs ändern sich. Ermitteln Sie den aktuellen Function-Calling-Standard zur Laufzeit mit
GET /models/traits, oder durchsuchen Sie die Textmodelle nach weiteren Modellen mit Function-Calling-Unterstützung.
Datenschutz
Mitsearch_provider: "exa" kommuniziert Ihre Anwendung nur mit Venice, und Venice führt jede Suche mit Exa unter Zero Data Retention aus. Venice speichert keine Prompt- oder Antwortinhalte, und die Datenschutzstufe des Modells bestimmt, was auf der Inferenzebene geschieht. Private Modelle laufen auf einer Infrastruktur mit Zero Data Retention.
Leicht übersehen wird, dass das Modell Suchanfragen aus dem Gesprächsverlauf formuliert, sodass Details aus einem Prompt in einer an Exa gesendeten Anfrage landen können. Wenn Prompts personenbezogene oder vertrauliche Informationen enthalten können, weisen Sie das Modell in Ihrem System-Prompt an, diese Details aus Suchanfragen herauszuhalten, oder verwenden Sie das Muster „Erst suchen“, sodass Ihr eigener Code jede Anfrage schreibt.
Wenn Sie die Exa-API direkt aufrufen, gehen diese Anfragen stattdessen gemäß den Bedingungen von Exa an Exa.
Kosten
Jede Suche kostet 0,01 pro 1.000 Suchen, genauso viel wie eine Brave- oder Google-Suche. Venice rechnet sie zusammen mit den Tokens Ihrer Chat-Anfragen über Ihr Venice-Konto ab, sodass keine separate Exa-Rechnung anfällt. Suchen, die mit einem Fehler fehlschlagen, werden nicht berechnet, eine Suche ohne Ergebnisse dagegen schon. Suchergebnisse gehen in der nächsten Runde als Eingabe an das Modell zurück, und da sie Seitentext enthalten, fügt eine Suche mit fünf Ergebnissen oft 5.000 bis 10.000 Eingabe-Tokens hinzu. Einige Gewohnheiten halten beides niedrig:- Senken Sie
limit, wenn wenige Quellen ausreichen. Eine Suche kostet bei jedemlimitgleich viel, aber weniger Ergebnisse bedeuten weniger Eingabe-Tokens in der nächsten Runde. - Halten Sie
max_roundsniedrig. Jede zusätzliche Runde kann sowohl Suchen als auch Tokens hinzufügen. - Verwenden Sie das Muster „Erst suchen“, wenn Ihr Code weiß, wonach gesucht werden soll. Es führt genau eine Suche und eine Chat-Anfrage aus.
Fehlerbehebung
400 vom Suchendpunkt
400 vom Suchendpunkt
query muss 1 bis 400 Zeichen lang sein, limit muss zwischen 1 und 20 liegen, und search_provider muss brave, google oder exa sein. Werte außerhalb dieser Bereiche werden abgelehnt, statt begrenzt zu werden. In der Tool-Schleife erreicht eine abgelehnte Suche das Modell als Error:-Tool-Ergebnis, statt eine Ausnahme auszulösen.402 Payment Required
402 Payment Required
Ihr Venice-Guthaben reicht für die Anfrage nicht aus. Anfragen mit einem API-Schlüssel liefern
INSUFFICIENT_BALANCE. Laden Sie in diesem Fall Ihr Venice-Guthaben auf. Anfragen mit x402-Wallet-Authentifizierung enthalten in der Antwort Anweisungen zum Aufladen.400 von Venice nach einer Tool-Runde
400 von Venice nach einer Tool-Runde
Einige Modelle, darunter Claude- und GPT-Modelle, liefern
400, wenn auf einen Tool-Aufruf keine tool-Nachricht mit dessen tool_call_id folgt. GLM-Modelle akzeptieren den Gesprächsverlauf trotzdem, daher kann dieser Fehler erstmals auftreten, wenn Sie das Modell wechseln. Die Schleife beantwortet jeden Aufruf direkt nach der Assistant-Nachricht, die ihn ausgelöst hat. Behalten Sie diese Struktur bei, wenn Sie Tools hinzufügen.Das Modell antwortet ohne zu suchen
Das Modell antwortet ohne zu suchen
Prüfen Sie, ob das Modell Function Calling unterstützt, und geben Sie im System-Prompt an, wann gesucht werden soll. Modelle überspringen das Tool oft, wenn sie glauben, aus dem Gedächtnis antworten zu können, sofern Sie sie nicht anweisen, nach aktuellen oder spezifischen Fakten zu suchen.
Ressourcen
Web Search API
Parameter, Suchanbieter und das Antwortschema
Zitierte Antworten
Eine vollständige Pipeline zum Suchen, Scrapen und Zitieren auf Venice
Function Calling
So funktionieren Tool-Aufrufe auf Venice
Exa-Dokumentation
Die eigene API, SDKs und Suchoptionen von Exa