{"id":20031,"date":"2026-09-28T00:19:15","date_gmt":"2026-09-28T04:19:15","guid":{"rendered":"https:\/\/wp.glbgpt.com\/?p=20031"},"modified":"2026-09-28T00:19:17","modified_gmt":"2026-09-28T04:19:17","slug":"perplexity-api-tutorial","status":"publish","type":"post","link":"https:\/\/wp.glbgpt.com\/de\/hub\/perplexity-api-tutorial","title":{"rendered":"Perplexity-API-Tutorial: Schritt f\u00fcr Schritt zum Aufbau einer quellgeerdeten Antwort"},"content":{"rendered":"<style>\n[class*=\"pat-\"]{box-sizing:border-box}\np.pat-p,ul.pat-list{font:17px\/1.8 system-ui,-apple-system,\"Segoe UI\",sans-serif;color:#243F46;margin:0 0 22px}\np.pat-eyebrow{font:750 12px\/1.5 system-ui,sans-serif;letter-spacing:.12em;color:#35756f;margin:0 0 22px}\nh2.pat-h2{font:750 30px\/1.28 system-ui,sans-serif;color:#173E48;border-top:1px solid #D5E1DB;padding-top:23px;margin:58px 0 22px;scroll-margin-top:24px}\nh3.pat-h3{font:700 22px\/1.4 system-ui,sans-serif;color:#245D56;margin:30px 0 14px}\n.pat-p a,.pat-list a,.pat-table a{color:#146B61;text-decoration:underline;text-underline-offset:3px}\n.pat-p code,.pat-list code,.pat-table code{font:.88em Consolas,monospace;overflow-wrap:anywhere;background:#EEF3EF;padding:2px 4px;border-radius:3px}\np.pat-quick{background:#F5EDDA;border-left:4px solid #B99749;padding:23px 26px}\np.pat-note{background:#EEF4EF;border-radius:10px;padding:20px 24px}\nul.pat-toc{background:#EEF4EF;padding:24px 24px 24px 46px;border-radius:10px;columns:2;column-gap:32px;font-size:15px}\n.pat-list li{margin:8px 0;break-inside:avoid}\nul.pat-checklist{background:#F7F2E8;border:1px solid #DFD1B2;border-radius:10px;padding:20px 24px 20px 46px}\nfigure.pat-table{display:block;max-width:100%;overflow-x:auto;border:1px solid #CEDDD5;border-radius:10px;margin:26px 0}\n.pat-table table{border-collapse:collapse;width:100%;min-width:610px;font:14px\/1.65 system-ui,sans-serif}\n.pat-table th{background:#215957;color:white;text-align:left;padding:14px 16px;font-weight:650}\n.pat-table td{padding:13px 16px;vertical-align:top;border-bottom:1px solid #DFE7DF}\n.pat-table tbody tr:nth-child(even){background:#F2F6F0}\n.pat-table td:first-child{font-weight:600}\npre.pat-code{max-width:100%;overflow-x:auto;white-space:pre;padding:24px;border-radius:10px;background:#142F3C;color:#ECF7EF;font:14px\/1.7 Consolas,monospace;margin:24px 0}\n.pat-code code{font:inherit;white-space:pre;overflow-wrap:normal}\nfigure.pat-image{margin:30px 0}.pat-image img{display:block;width:100%;height:auto;border-radius:12px}\n.pat-image figcaption{font:14px\/1.6 system-ui,sans-serif;color:#627773;margin-top:10px}\n@media(max-width:650px){p.pat-p,ul.pat-list{font-size:16px}h2.pat-h2{font-size:26px;margin-top:44px}h3.pat-h3{font-size:20px}ul.pat-toc{columns:1}pre.pat-code{padding:18px;font-size:13px}p.pat-quick{padding:18px}.pat-table th,.pat-table td{padding:11px 12px}}\n\n\/* Native image blocks: same presentation as the approved preview. *\/\nfigure.wp-block-image.pat-image{display:block;max-width:100%;margin:30px 0}\nfigure.wp-block-image.pat-official{width:100%;max-width:848px;margin:30px auto}\nfigure.pat-image>a{display:block}figure.pat-image img{display:block;width:100%;max-width:100%;height:auto;border-radius:12px}\nfigure.pat-image figcaption.wp-element-caption{font:14px\/1.6 system-ui,sans-serif;color:#627773;margin:10px 0 0;text-align:left}\n.pat-image figcaption a{color:#146B61;text-decoration:underline;text-underline-offset:3px}\n<\/style>\n\n\n\n<p class=\"pat-p pat-eyebrow wp-block-paragraph\">PERPLEXITY-API \u00b7 PYTHON-ANLEITUNG \u00b7 2026<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Dieses Tutorial zur Perplexity-API zeigt Ihnen, wie Sie ein Python-Skript erstellen, das eine Antwort mit anklickbaren Webquellen zur\u00fcckgibt. Verwenden Sie die Agent-API, um eine Frage zu senden, die Antwort auszulesen, deren Zitiermarkierungen den Quellen-IDs zuzuordnen und eine Markdown-Datei zu exportieren, die Sie \u00fcberpr\u00fcfen k\u00f6nnen.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Wir werden uns dabei durchgehend auf eine Frage konzentrieren: <em>Wie sollte ein kleines Python-Projekt virtuelle Umgebungen nutzen und Abh\u00e4ngigkeiten verwalten?<\/em> Beginnen Sie mit einer einfachen Anfrage und f\u00fcgen Sie anschlie\u00dfend die Quelldatenanalyse und Dom\u00e4nenfilter hinzu. Sie ben\u00f6tigen grundlegende Python-Kenntnisse sowie ein Perplexity-Entwicklerkonto mit aktivierter API-Abrechnung.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Wenn auch Sie KI f\u00fcr Ihre t\u00e4gliche Recherche und beim Schreiben nutzen, <a href=\"https:\/\/www.glbgpt.com\/perplexity?inviter=hub_content_perplexity&amp;login=1\">Perplexity auf GlobalGPT<\/a> bietet Zugriff innerhalb einer All-in-One-KI-Arbeitsumgebung, wodurch das Wechseln zwischen verschiedenen Tools entf\u00e4llt. Dieser Workflow f\u00fcr Endnutzer ist unabh\u00e4ngig von dem hier verwendeten Entwickler-Schl\u00fcssel und der API-Abrechnung.<\/p>\n\n\n\n<p class=\"pat-p pat-quick wp-block-paragraph\"><strong>Kurze Antwort:<\/strong> Verwenden Sie die <code>schnell<\/code> Agent-Voreinstellung f\u00fcr eine erste, auf der Web-Basis basierende Antwort, lesen <code>response.output_text<\/code> f\u00fcr die Antwort und lies den <code>Suchergebnisse<\/code> Eintrag in <code>response.output<\/code> f\u00fcr Quellen. Ordne jede Inline-Markierung anhand des zur\u00fcckgegebenen Werts einer Quelle zu <code>id<\/code>. Ein Verweis bedeutet, dass \u201cdie Antwort auf dieses Ergebnis hinweist\u201d; er garantiert nicht, dass die Seite jede Behauptung belegt.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><strong>Beispielstatus:<\/strong> Die Syntax der Anfrage entspricht der offiziellen Dokumentation, die am 28. September 2026 \u00fcberpr\u00fcft wurde. Der Zitierassistent wurde anhand von Offline-Beispieldaten getestet; f\u00fcr dieses Tutorial wurde keine kostenpflichtige API-Anfrage ausgef\u00fchrt. Die in der Abbildung gezeigten Quelldatens\u00e4tze dienen lediglich der Veranschaulichung.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><a href=\"https:\/\/www.glbgpt.com\/perplexity?inviter=hub_content_perplexity&amp;login=1\"><img alt=\"\" decoding=\"async\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2025\/10\/image-33.png\" class=\"wp-image-2306\"\/><\/a><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-3e41869c wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link has-black-color has-text-color has-background has-link-color has-medium-font-size has-custom-font-size wp-element-button\" href=\"https:\/\/www.glbgpt.com\/perplexity?inviter=hub_content_perplexity&amp;login=1\" style=\"background-color:#fec33a;line-height:1\"><strong>Perplexity jetzt ausprobieren &gt;<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-list pat-list pat-toc\">\n<li><a href=\"#api-choice\">Welche Perplexity-API sollten Sie verwenden?<\/a><\/li>\n\n\n\n<li><a href=\"#setup\">Schritt 1: API-Schl\u00fcssel anfordern und Python einrichten<\/a><\/li>\n\n\n\n<li><a href=\"#first-request\">Schritt 2: Senden Sie Ihre erste Anfrage mit geerdeter Quelle<\/a><\/li>\n\n\n\n<li><a href=\"#sources\">Schritt 3: Die Antwort herausarbeiten und die Quellen zuordnen<\/a><\/li>\n\n\n\n<li><a href=\"#filters\">Schritt 4: Verfeinern Sie das Ergebnis mithilfe von Suchfiltern<\/a><\/li>\n\n\n\n<li><a href=\"#export\">Schritt 5: Speichern Sie eine vollst\u00e4ndige Antwort mit anklickbaren Quellen<\/a><\/li>\n\n\n\n<li><a href=\"#advanced\">Streaming und strukturierte Ausgabe<\/a><\/li>\n\n\n\n<li><a href=\"#cost-errors\">Kosten und h\u00e4ufige Fehler<\/a><\/li>\n\n\n\n<li><a href=\"#migration\">Umstieg von einem \u00e4lteren Sonar-Tutorial<\/a><\/li>\n\n\n\n<li><a href=\"#faq\">H\u00e4ufig gestellte Fragen<\/a><\/li>\n<\/ul>\n\n\n\n<h2 id=\"api-choice\" class=\"wp-block-heading pat-h2\">Perplexity-API-Tutorial: Die richtige API ausw\u00e4hlen<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Dies sind Entwickler-Schnittstellen. Das Chat-Produkt bietet \u00e4hnliche Funktionen m\u00f6glicherweise in anderer Form an; unsere \u00dcbersicht \u00fcber <a href=\"https:\/\/www.glbgpt.com\/hub\/what-are-the-main-features-of-perplexity-ai\/\">Funktionen von Perplexity<\/a> beschreibt die Benutzererfahrung.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Perplexity\u2019s <a href=\"https:\/\/docs.perplexity.ai\/docs\/getting-started\/quickstart\">Schnellstart f\u00fcr die offizielle API<\/a> gruppiert seine Entwicklerprodukte nach den Aufgaben, die Sie erledigen m\u00fcssen. W\u00e4hlen Sie die kleinste Oberfl\u00e4che, die die Daten liefert, die Ihre Anwendung tats\u00e4chlich ben\u00f6tigt.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>API<\/th><th>Beste Passform<\/th><th>Was Ihr Code erh\u00e4lt<\/th><\/tr><\/thead><tbody><tr><td><strong>Agent<\/strong><\/td><td>Eine fertige Antwort, die auf einer Websuche oder anderen Tools basiert<\/td><td>Ausgabeposten, Antworttext und Suchergebnisdatens\u00e4tze<\/td><\/tr><tr><td><strong>Suche<\/strong><\/td><td>Ihre Anwendung wird die Ergebnisse selbst sortieren, filtern oder zusammenfassen.<\/td><td>Suchergebnisse, ohne Perplexity zu bitten, die endg\u00fcltige Antwort zu schreiben<\/td><\/tr><tr><td><strong>Router<\/strong><\/td><td>Anfragen an ein geeignetes Modell weiterleiten<\/td><td>Eine \u00fcber den Router ausgew\u00e4hlte Musterantwort<\/td><\/tr><tr><td><strong>Einbettungen<\/strong><\/td><td>Semantische Suche und ein RAG-Index<\/td><td>Vektordaten f\u00fcr Ihre eigene Suchebene<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">In diesem Tutorial wird \u201eAgent\u201c ausgew\u00e4hlt, da das gew\u00fcnschte Ergebnis eine fertige Antwort samt Quellenangaben ist. Informationen zum allgemeinen Recherche-Workflow finden Sie in unserem Leitfaden zu <a href=\"https:\/\/www.glbgpt.com\/hub\/how-to-use-perplexity-for-research\/\">Einsatz von Perplexity f\u00fcr Forschungszwecke<\/a>.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><strong>\u00dcber Sonar:<\/strong> Der aktuelle <a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/migrate-from-sonar\/overview\">\u00dcbersicht \u00fcber die Migration<\/a> Es hei\u00dft, dass \u201eSonar Chat Completions\u201c weiterhin unterst\u00fctzt wird, und f\u00fcr alle neuen Projekte wird \u201eAgent\u201c empfohlen. In diesem Tutorial wird daher \u201eAgent\u201c verwendet. Leiten Sie aus einem in einem \u00e4lteren Tutorial genannten Stichtag nicht ab, dass eine alte Integration nicht mehr funktioniert.<\/p>\n\n\n\n<h2 id=\"setup\" class=\"wp-block-heading pat-h2\">Schritt 1: API-Schl\u00fcssel anfordern und Python einrichten<\/h2>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Schl\u00fcssel erstellen und Abrechnung vorbereiten<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><a href=\"https:\/\/console.perplexity.ai\/\">\u00d6ffnen Sie die Perplexity-API-Konsole<\/a>, w\u00e4hlen Sie das gew\u00fcnschte Projekt aus oder erstellen Sie eines, konfigurieren Sie die API-Abrechnung und erstellen Sie einen Schl\u00fcssel. Speichern Sie diesen serverseitig. Die Entwickler-APIs werden getrennt von den Verbraucher-Abonnements abgerechnet; \u00fcberpr\u00fcfen Sie Ihr Projektguthaben, bevor Sie Anfragen stellen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Installieren Sie das offizielle SDK<\/h3>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>python -m venv .venv\n\n# macOS\/Linux: W\u00e4hlen Sie diesen Aktivierungsbefehl\nsource .venv\/bin\/activate\n\n# Windows PowerShell: Verwenden Sie stattdessen diesen Befehl\n.venv\\Scripts\\Activate.ps1\n\npython -m pip install --upgrade perplexityai<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Verwenden Sie f\u00fcr den folgenden Code Python 3.10 oder eine neuere Version. Aktivieren Sie die Umgebung mit dem f\u00fcr Ihr Betriebssystem geeigneten Befehl und installieren Sie anschlie\u00dfend das SDK. Falls PowerShell die Aktivierung blockiert, verwenden Sie <code>.venv\\Scripts\\python.exe<\/code> anstelle von <code>Python<\/code> f\u00fcr die Installation und die Ausf\u00fchrung von Skripten.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Der Name des Pakets lautet <code>perplexityai<\/code>, w\u00e4hrend der Python-Import lautet <code>Ratlosigkeit<\/code>. Verwenden Sie eine virtuelle Umgebung, damit die Abh\u00e4ngigkeiten dieses Tutorials kein anderes Projekt beeinflussen.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">In diesem Beispiel wird eine Frage zur Programmierung verwendet, da sich die darin enthaltenen Aussagen anhand der gepflegten Dokumentation \u00fcberpr\u00fcfen lassen. Unser Leitfaden zu <a href=\"https:\/\/www.glbgpt.com\/hub\/is-perplexity-good-for-coding\/\">Perplexity zur Codierung<\/a> erl\u00e4utert, welchen Stellenwert die Unterst\u00fctzung durch die Forschung im Vergleich zum eigenst\u00e4ndigen Testen von Code einnimmt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Legen Sie den API-Schl\u00fcssel als Umgebungsvariable fest<\/h3>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code># macOS\/Linux\nexport PERPLEXITY_API_KEY=\"Ihr-Schl\u00fcssel-hier\"\n\n# Windows PowerShell\n$env:PERPLEXITY_API_KEY = \"Ihr-Schl\u00fcssel-hier\"<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Das SDK liest <code>PERPLEXITY_API_SCHL\u00dcSSEL<\/code> beim Erstellen des Clients. F\u00fcgen Sie den Schl\u00fcssel nicht in ein Notizbuch ein, \u00fcbertragen Sie ihn nicht in Git und senden Sie ihn nicht an einen Browser. Wenn Sie lokal eine .env-Datei verwenden, halten Sie diese Datei aus der Versionskontrolle heraus und laden Sie sie mit der von Ihnen gew\u00e4hlten Bibliothek f\u00fcr Umgebungsvariablen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"848\" height=\"632\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-sdk-authentication.webp\" alt=\"Offizielle Perplexity-Dokumentation zur Installation des Python-SDK und zur Umgebungsvariable PERPLEXITY_API_KEY.\" class=\"wp-image-20033\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-sdk-authentication.webp 848w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-sdk-authentication-300x224.webp 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-sdk-authentication-16x12.webp 16w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-sdk-authentication-767x572.webp 767w\" sizes=\"(max-width: 848px) 100vw, 848px\" \/><\/figure>\n\n\n\n<h2 id=\"first-request\" class=\"wp-block-heading pat-h2\">Schritt 2: Senden Sie Ihre erste Anfrage mit geerdeter Quelle<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/quickstart\">Schnellstart f\u00fcr die Agent-API<\/a> Dokumente <code>POST-https:\/\/api.perplexity.ai\/v1\/agent<\/code>. Sein Python-Client umschlie\u00dft die Anfrage mit <code>client.responses.create()<\/code>. Das <code>schnell<\/code> Die Voreinstellung aktiviert standardm\u00e4\u00dfig die Websuche, wodurch das erste Beispiel \u00fcberschaubar bleibt.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>from perplexity import Perplexity\n\nclient = Perplexity()\n\nquestion = (\n    \"Wie sollte ein kleines Python-Projekt virtuelle Umgebungen nutzen \"\n    \"und Abh\u00e4ngigkeiten verwalten?\"\n)\n\nresponse = client.responses.create(\n    preset=\"fast\",\n    input=question,\n)\n\nprint(response.output_text)<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Speichere den Codeausschnitt unter dem Namen <code>first_request.py<\/code>, dann f\u00fchren Sie Folgendes aus <code>python first_request.py<\/code> in demselben Terminal, in dem Sie den Schl\u00fcssel festgelegt haben. Bei einem erfolgreichen Aufruf sollte ein nicht leerer Antworttext ausgegeben werden. Wenn Sie einen Nachweis f\u00fcr das Ergebnis ben\u00f6tigen, fahren Sie mit dem Schritt zur Quellenextraktion fort; der Text allein stellt noch keine abgeschlossene \u00dcberpr\u00fcfung dar.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Die Komfort-Eigenschaft <code>Ausgabetext<\/code> liefert Ihnen den endg\u00fcltigen Antworttext. Behalten Sie auch das gesamte Antwortobjekt bei: Quelldatens\u00e4tze und Nutzungsdetails sind in der getippten Ausgabe enthalten, nicht nur im gedruckten Absatz.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Die gleiche Anfrage mit cURL<\/h3>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>curl https:\/\/api.perplexity.ai\/v1\/agent \\\n  -H \"Authorization: Bearer $PERPLEXITY_API_KEY\" \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"preset\": \"fast\",\n    \"input\": \"Wie sollte ein kleines Python-Projekt virtuelle Umgebungen nutzen und Abh\u00e4ngigkeiten verwalten?\"\n  }'<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Dieses cURL-Beispiel verwendet die Bash-Syntax f\u00fcr macOS\/Linux oder eine Bash-kompatible Shell. Bei jeder Ausf\u00fchrung wird eine weitere abrechnungspflichtige Anfrage gestellt. Verwenden Sie es nur, wenn Sie ein Endpunktproblem von einem Python-Problem unterscheiden m\u00fcssen; f\u00fchren Sie nicht jede Version aus, nur um dem Beispiel zu folgen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Entsprechung in serverseitigem JavaScript<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Node.js 18+ enth\u00e4lt <code>holen<\/code>, daher ben\u00f6tigt ein serverseitiger Smoke-Test keine zus\u00e4tzliche Bibliothek. Lesen Sie den Rohtext <code>Ausgabe<\/code> Elemente in der JSON-Antwort; das Python-SDK bietet die praktische <code>Ausgabetext<\/code> Zubeh\u00f6rteil.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>const res = await fetch(\"https:\/\/api.perplexity.ai\/v1\/agent\", {\n  method: \"POST\",\n  headers: {\n    Authorization: `Bearer ${process.env.PERPLEXITY_API_KEY}`,\n    \"Content-Type\": \"application\/json\"\n  },\n  body: JSON.stringify({\n    preset: \"fast\",\n    input: \"Wie sollte ein kleines Python-Projekt virtuelle Umgebungen nutzen und Abh\u00e4ngigkeiten verwalten?\"\n  })\n});\nif (!res.ok) throw new Error(`Perplexity HTTP ${res.status}`);\nconsole.log(await res.json());<\/code><\/pre>\n\n\n\n<h2 id=\"sources\" class=\"wp-block-heading pat-h2\">Schritt 3: Die Antwort herausarbeiten und die Quellen zuordnen<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/migrate-from-sonar\/how-to#inline-citations\">Die offiziellen Richtlinien zur Quellenangabe<\/a> unterscheidet die Prosa von ihren Beweisunterlagen. Die Quellen treffen in einem <code>Ausgabe<\/code> Element vom Typ <code>Suchergebnisse<\/code>. Lies den Artikel dazu <code>Ergebnisse<\/code> und ordne jede Quellenangabe dem entsprechenden Ergebnis zu <code>id<\/code>. Ein Ergebnis verf\u00fcgt \u00fcber einen Titel und eine URL; fehlende Werte sollten vor der Anzeige ber\u00fccksichtigt werden.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"848\" height=\"880\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-inline-citations.webp\" alt=\"Offizielle Perplexity-Dokumentation zur Erl\u00e4uterung von nummerierten Zitaten, quellentypbezogenen Zitaten und Zuordnungsmarkern zu Suchergebnis-IDs.\" class=\"wp-image-20034\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-inline-citations.webp 848w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-inline-citations-289x300.webp 289w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-inline-citations-12x12.webp 12w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-inline-citations-767x796.webp 767w\" sizes=\"(max-width: 848px) 100vw, 848px\" \/><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Dieses letzte Detail ist wichtig. Gehen Sie nicht davon aus, dass \u201cZitat 1\u201d immer das erste Element in einem Array ist, nachdem ein anderes Tool einen Eintrag hinzugef\u00fcgt hat. Erstellen Sie eine Suche nach ID und ermitteln Sie dann die Marker, die tats\u00e4chlich in der Antwort erscheinen.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>def field(obj, name, default=None):\n    return obj.get(name, default), falls obj ein W\u00f6rterbuch ist, andernfalls getattr(obj, name, default)\n\ndef source_index(output):\n    sources = {}\n    for item in output or []:\n    if field(item, \"type\") != \"search_results\":\n        continue\n    for result in field(item, \"results\", []) or []:\n            sid, url = field(result, \"id\"), field(result, \"url\")\n if sid is None:\n continue\n key = str(sid)\n if key in sources and field(sources[key], \"url\") != url:\n                raise ValueError(f\"Konflikte bei den URLs f\u00fcr die Quellen-ID {key}\")\n sources[key] = result\n    return sources\n\nsources = source_index(response.output)\nprint(sources.get(\"7\"))  # Eine Quellen-ID, nicht die Array-Position 7<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Das folgende vollst\u00e4ndige Skript erkennt <code>[1]<\/code> und <code>[web:1]<\/code>, die dokumentierten Zitierformen f\u00fcr die g\u00e4ngigen Voreinstellungen. Die oben genannte Hilfsfunktion verarbeitet sowohl SDK-Objekte als auch W\u00f6rterb\u00fccher und lehnt widerspr\u00fcchliche URLs ab, die derselben ID zugewiesen sind. Sie nummeriert die Ergebnisse nicht neu und versucht auch nicht, eine fehlende Quelle zu erraten.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Eine ausf\u00fchrlichere Er\u00f6rterung der Zitierqualit\u00e4t finden Sie in unserem <a href=\"https:\/\/www.glbgpt.com\/hub\/perplexity-citation-accuracy\/\">Leitfaden zur Zitiergenauigkeit bei Perplexity<\/a>. Ein Verweis ist ein Nachverfolgungspfad; Ihre Anwendung ben\u00f6tigt weiterhin Richtlinien f\u00fcr veraltete Seiten, doppelte URLs und nicht unterst\u00fctzte Angaben.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Wenn das zur\u00fcckgegebene Array beispielsweise die ID 2 gefolgt von der ID 7 enth\u00e4lt, lautet die Markierung <code>[7]<\/code> muss auf ID 7 verweisen. Wenn dieselbe URL unter den IDs 7 und 9 erscheint, kannst du diese URL einmal anzeigen und dabei beide IDs beibehalten. Wenn ID 8 nie eintrifft, behalte <code>[8]<\/code> sichtbar machen und als nicht zugeordnet kennzeichnen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"597\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow-1024x597.webp\" alt=\"Zitat 7 wird dem Suchergebnis mit der ID 7 zugeordnet, auch wenn ein anderes Ergebnis an erster Stelle aufgef\u00fchrt ist.\" class=\"wp-image-20035\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow-1024x597.webp 1024w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow-300x175.webp 300w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow-768x448.webp 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow-18x10.webp 18w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-citation-id-workflow.webp 1440w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 id=\"filters\" class=\"wp-block-heading pat-h2\">Schritt 4: Verfeinern Sie das Ergebnis mithilfe von Suchfiltern<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Sobald die grundlegende Abfrage funktioniert, schr\u00e4nken Sie die Suche ein, wenn Ihre Frage eine klare Abgrenzung hinsichtlich der Zust\u00e4ndigkeit aufweist. F\u00fcr Python-Pakete sind die Sprachdokumentation und der Leitfaden zur Paketierung bessere Ausgangspunkte als ein beliebiges Tutorial.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>response = client.responses.create(\n    preset=\"fast\",\n    input=(\n \"Wie sollte ein kleines Python-Projekt virtuelle Umgebungen nutzen \"\n \"und Abh\u00e4ngigkeiten verwalten? Geben Sie die von Ihnen verwendeten Leitlinien an.\"\n    ),\n    tools=[\n {\n \"type\": \"web_search\",\n \"filters\": {\n \"search_domain_filter\": [\n \"docs.python.org\",\n                    \"packaging.python.org\",\n ]\n },\n }\n    ],\n)<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Der Filter geh\u00f6rt in die Konfiguration des Web-Suchtools. In der Migrationsdokumentation wird au\u00dferdem beschrieben, <code>search_recency_filter<\/code> bei zeitkritischen Fragen. Nutzen Sie den Aktualit\u00e4tsfaktor, wenn die Frage von aktuellen Ver\u00f6ffentlichungen oder Nachrichten abh\u00e4ngt; eine sehr enge Kombination aus Fachgebiet und Datum kann dazu f\u00fchren, dass Ihnen zu wenig Belege zur Verf\u00fcgung stehen.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">F\u00fcr eine Frage zu Ver\u00f6ffentlichungen im vergangenen Monat f\u00fcge Folgendes hinzu: <code>\"search_recency_filter\": \"Monat\"<\/code> neben <code>search_domain_filter<\/code>. Lassen Sie dies im Beispiel zur virtuellen Umgebung weg: Die Dokumentation in der stabilen Version kann ein \u00e4lteres Ver\u00f6ffentlichungsdatum aufweisen. Wenn Sie von einem voreingestellten zu einem direkt ausgew\u00e4hlten Modell wechseln, f\u00fcgen Sie das Web-Such-Tool ausdr\u00fccklich hinzu.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Vergleichen Sie w\u00e4hrend der Entwicklung die gefilterten und ungefilterten Ergebnisse. Wenn sich die Antwort \u00e4ndert, halten Sie den Grund daf\u00fcr fest: Ein Filter kann n\u00fctzlichen Kontext entfernen oder Seiten mit geringer Autorit\u00e4t aussortieren, die das Modell abgelenkt haben. Dies ist eine Qualit\u00e4tsentscheidung und keine Garantie daf\u00fcr, dass jede verbleibende Seite korrekt ist.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Wenn Ihre Anwendung lediglich gerangierte Links und Ausschnitte ben\u00f6tigt, rufen Sie die <a href=\"https:\/\/docs.perplexity.ai\/docs\/getting-started\/quickstart\">Such-API<\/a> und f\u00fchren Sie die Synthese selbst durch. Diese Trennung kann die \u00dcberpr\u00fcfung und das Zwischenspeichern erleichtern. Einen umfassenderen Vergleich mit Google finden Sie unter <a href=\"https:\/\/www.glbgpt.com\/hub\/how-is-perplexity-different-than-google\/\">Inwiefern sich Perplexity von Google unterscheidet<\/a>.<\/p>\n\n\n\n<h2 id=\"export\" class=\"wp-block-heading pat-h2\">Schritt 5: Speichern Sie eine vollst\u00e4ndige Antwort mit anklickbaren Quellen<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Speichern Sie Folgendes unter dem Namen <code>perplexity_tutorial.py<\/code>. Es ist in sich geschlossen: Es enth\u00e4lt den Quellcode-Helper, wendet den Python-Dokumentations-Dom\u00e4nenfilter an, wandelt \u00fcbereinstimmende Zitationsmarkierungen in Links um, gruppiert doppelte URLs, ohne dabei die IDs zu verlieren, und speichert die vollst\u00e4ndige SDK-Antwort zusammen mit dem Markdown.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>from pathlib import Path\nfrom collections import defaultdict\nfrom urllib.parse import urlsplit\nimport json\nimport re\n\nQUESTION = (\n    \"How should a small Python project use virtual environments \"\n    \"and manage dependencies?\"\n)\n# Supports the documented &#91;1] and &#91;web:1] forms in prose answers.\nCITATION_RE = re.compile(r\"(?&lt;!!)\\&#91;(?:web:)?(\\d+)\\](?!\\()\")\n\ndef field(obj, name, default=None):\n    return obj.get(name, default) if isinstance(obj, dict) else getattr(obj, name, default)\n\ndef source_index(output):\n    sources = {}\n    for item in output or &#91;]:\n        if field(item, \"type\") != \"search_results\":\n            continue\n        for result in field(item, \"results\", &#91;]) or &#91;]:\n            sid, url = field(result, \"id\"), field(result, \"url\")\n            if sid is None:\n                continue\n            key = str(sid)\n            if key in sources and field(sources&#91;key], \"url\") != url:\n                raise ValueError(f\"Conflicting URLs for source ID {key}\")\n            sources&#91;key] = result\n    return sources\n\ndef safe_url(value):\n    if not isinstance(value, str):\n        return None\n    parsed = urlsplit(value)\n    if parsed.scheme not in (\"http\", \"https\") or not parsed.netloc:\n        return None\n    # Protect a Markdown angle-bracket destination.\n    return value.replace(\"&lt;\", \"%3C\").replace(\"&gt;\", \"%3E\").replace(\" \", \"%20\")\n\ndef md_label(value):\n    return re.sub(r\"(&#91;\\\\\\&#91;\\]&lt;&gt;])\", r\"\\\\\\1\", str(value).replace(\"\\n\", \" \"))\n\ndef export_markdown(answer, output, question=QUESTION):\n    sources = source_index(output)\n    cited = list(dict.fromkeys(CITATION_RE.findall(answer)))\n    missing = &#91;\n        sid for sid in cited\n        if sid not in sources or not safe_url(field(sources&#91;sid], \"url\"))\n    ]\n    def link(match):\n        sid = match.group(1)\n        url = safe_url(field(sources.get(sid, {}), \"url\"))\n        return f\"&#91;{match.group(0)&#91;1:-1]}](&lt;{url}&gt;)\" if url else match.group(0)\n\n    # Keep every ID when the same URL appears under different IDs.\n    grouped = defaultdict(list)\n    titles = {}\n    for sid in cited:\n        source = sources.get(sid, {})\n        url = safe_url(field(source, \"url\"))\n        if url:\n            grouped&#91;url].append(sid)\n            titles.setdefault(url, field(source, \"title\") or url)\n\n    lines = &#91;\"# Source-grounded answer\", \"\", question, \"\",\n             CITATION_RE.sub(link, answer), \"\", \"## Cited sources\", \"\"]\n    for url, ids in grouped.items():\n        lines.append(f\"- IDs {', '.join(ids)}: &#91;{md_label(titles&#91;url])}](&lt;{url}&gt;)\")\n    if missing:\n        lines.append(\"- Unmatched or unusable source IDs: \" + \", \".join(missing))\n    if not cited:\n        lines.append(\"- No recognized inline citations; evidence not verified.\")\n    lines.extend(&#91;\"\", \"Source links require review; matching IDs does not verify claims.\"])\n    return \"\\n\".join(lines) + \"\\n\"\n\ndef main():\n    from perplexity import Perplexity\n    response = Perplexity().responses.create(\n        preset=\"fast\",\n        input=QUESTION,\n        tools=&#91;{\"type\": \"web_search\", \"filters\": {\n            \"search_domain_filter\": &#91;\"docs.python.org\", \"packaging.python.org\"]\n        }}],\n    )\n    answer = response.output_text or \"\"\n    if not answer.strip():\n        raise RuntimeError(\"No answer text returned; inspect response status and errors.\")\n    Path(\"perplexity-response.json\").write_text(\n        response.model_dump_json(indent=2), encoding=\"utf-8\"\n    )\n    Path(\"perplexity-answer.md\").write_text(\n        export_markdown(answer, response.output), encoding=\"utf-8\"\n    )\n    print(\"Saved perplexity-answer.md and perplexity-response.json\")\n\nif __name__ == \"__main__\":\n    main()\n\n<\/code><\/pre>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Ausf\u00fchren <code>python perplexity_tutorial.py<\/code> aus Ihrem Projektverzeichnis. Es schreibt <code>perplexity-answer.md<\/code> und <code>perplexity-response.json<\/code> Dort werden fr\u00fchere Dateien mit diesen Namen ersetzt. Die Markdown-Datei enth\u00e4lt die Frage, die verlinkte Antwort, die zitierten Quellen sowie etwaige nicht zugeordnete IDs. Die JSON-Datei speichert die zur\u00fcckgegebene Ausgabe und die Nutzungsdaten zu Diagnosezwecken.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Der Parser ist auf die dokumentierten Formen mit einem einzigen Marker in Prosa ausgerichtet. Es handelt sich nicht um einen vollst\u00e4ndigen Markdown-Parser: Wenn Ihre Anwendung beliebiges Markdown, Code-Beispiele oder Zitate wie beispielsweise <code>[1,2]<\/code>, f\u00fcge einen syntaxsensitiven Renderer sowie Tests f\u00fcr dieses Format hinzu. Unbekannte Marker d\u00fcrfen nicht stillschweigend neu interpretiert werden.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">\u00dcberpr\u00fcfen Sie, ob die verlinkte Seite die Antwort best\u00e4tigt.<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Pr\u00fcfen Sie in diesem Beispiel, ob die zitierte Dokumentation tats\u00e4chlich die Isolierung der Umgebung und die Installation von Abh\u00e4ngigkeiten erl\u00e4utert. Ein Link zur Python-Homepage ist weniger hilfreich als der entsprechende Abschnitt in der Dokumentation. Wenn in einer Antwort ein bestimmter Befehl empfohlen wird, \u00fcberpr\u00fcfen Sie vor der Ausf\u00fchrung das Betriebssystem und die Python-Version. Mark behauptet, dass der zitierte Text den Status \u201eungel\u00f6st\u201c nicht st\u00fctzt.<\/p>\n\n\n\n<h2 id=\"advanced\" class=\"wp-block-heading pat-h2\">F\u00fcgen Sie bei Bedarf eine Streaming- oder strukturierte Ausgabe hinzu<\/h2>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Streaming<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Durch Streaming l\u00e4sst sich die wahrgenommene Latenz bei einer Chat-Oberfl\u00e4che verbessern. Im Leitfaden zur Agentenmigration werden Text-Delta-Ereignisse wie beispielsweise <code>response.output_text.delta<\/code>. Gib diese Deltas sofort nach ihrem Eintreffen wieder, sammle aber auch die endg\u00fcltigen Antwortelemente, damit deine Benutzeroberfl\u00e4che die Quellen anzeigen kann, sobald die Antwort vollst\u00e4ndig ist. Ein reiner Textstrom ist noch keine Quellenliste.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Der folgende Text dient lediglich zur Veranschaulichung. Behalten Sie den Export ohne Streaming f\u00fcr Ihren ersten vollst\u00e4ndigen Quelldatensatz bei; eine Streaming-Implementierung im Produktivbetrieb muss zudem die Tool-\/Ausgabeereignisse erfassen und unterbrochene oder fehlgeschlagene L\u00e4ufe behandeln.<\/p>\n\n\n\n<pre class=\"wp-block-code pat-code\"><code>stream = client.responses.create(\n    preset=\"fast\", input=question, stream=True\n)\nfor event in stream:\n    if event.type == \"response.output_text.delta\":\n print(event.delta, end=\"\", flush=True)<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Strukturierte Ausgabe<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Verwenden Sie eine strukturierte Antwort, wenn der nachgelagerte Code Felder wie beispielsweise <code>Antwort<\/code>, <code>Vertrauenshinweis<\/code> und <code>Folgefragen<\/code>. Behalten Sie die Quell-IDs als separates Feld bei oder bewahren Sie die urspr\u00fcngliche Agent-Ausgabe bei, damit Ihr Schema die Nachweise nicht verdeckt. \u00dcberpr\u00fcfen Sie das Schema anhand Ihrer eigenen Testf\u00e4lle, bevor Sie es in einem Workflow einsetzen.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Die Migrationsreferenz beh\u00e4lt <code>Antwortformat<\/code> mit <code>Typ: \"json_schema\"<\/code> f\u00fcr strukturierte Ausgaben. Definieren Sie Pflichtfelder und unterbinden Sie gegebenenfalls unerwartete Eigenschaften. Schema-G\u00fcltigkeitspr\u00fcfungen beziehen sich auf die Form, nicht auf den Wahrheitsgehalt: Quell-IDs m\u00fcssen weiterhin zu tats\u00e4chlich zur\u00fcckgegebenen Datens\u00e4tzen f\u00fchren, und eine vom Modell generierte Konfidenzkennzeichnung ist kein Ma\u00df f\u00fcr die Genauigkeit.<\/p>\n\n\n\n<h2 id=\"cost-errors\" class=\"wp-block-heading pat-h2\">Kosten der Perplexity-API und h\u00e4ufige Fehler<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><a href=\"https:\/\/docs.perplexity.ai\/docs\/getting-started\/pricing\">Die offizielle Preisseite von Perplexity<\/a>, Stand: 28. September 2026, trennt Agent-Modell-Token von Tool-Aufrufen. Im Folgenden sind die USD-Geb\u00fchren f\u00fcr Tools und Suchanfragen aufgef\u00fchrt. Die <code>schnell<\/code> Agent-Voreinstellung und <code>search_type: \"fast\"<\/code> Es gibt verschiedene Konfigurationsm\u00f6glichkeiten; leiten Sie die Suchrate nicht aus dem Namen der Voreinstellung ab.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>Abrechnungsf\u00e4hige Ma\u00dfnahme<\/th><th>USD pro Aktie<\/th><th>USD pro 1.000<\/th><\/tr><\/thead><tbody><tr><td>Standard-Websuche des Agenten<\/td><td>$0.0025<\/td><td>$2.50<\/td><\/tr><tr><td>Aufruf der Agent-Schnellsuche<\/td><td>$0.001<\/td><td>$1.00<\/td><\/tr><tr><td>Agent-URL abrufen<\/td><td>$0.0005<\/td><td>$0.50<\/td><\/tr><tr><td>Suche \u00fcber die API \u2013 Anfrage erfolgreich<\/td><td>$0.005<\/td><td>$5.00<\/td><\/tr><tr><td>Such-API mit Fast Search<\/td><td>$0.001<\/td><td>$1.00<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"736\" height=\"1024\" src=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing-736x1024.webp\" alt=\"Offizielle Perplexity-Preistabellen mit den Preisen f\u00fcr den Aufruf des Agent-Tools und den Preisen f\u00fcr die Such-API pro 1.000 Anfragen.\" class=\"wp-image-20036\" srcset=\"https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing-736x1024.webp 736w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing-216x300.webp 216w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing-9x12.webp 9w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing-768x1068.webp 768w, https:\/\/wp.glbgpt.com\/wp-content\/uploads\/2026\/09\/perplexity-api-official-tool-search-pricing.webp 848w\" sizes=\"(max-width: 736px) 100vw, 736px\" \/><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\"><strong>Beispiel:<\/strong> 1.000 Standard-Websuchen sowie 1.000 URL-Abrufe kosten <strong>$3.00 an Werkzeugkosten<\/strong> ($2.50 + $0.50), vor Modell-Tokens oder anderen Geb\u00fchren. Dabei handelt es sich um eine gesch\u00e4tzte Arbeitslast und nicht um die tats\u00e4chlich gemessenen Kosten f\u00fcr das Tutorial. Eine einzelne Agent-Anfrage kann mehrere Tools aufrufen. Sofern verf\u00fcgbar, \u00fcberpr\u00fcfen Sie <code>Nutzung.Kosten.Gesamtkosten<\/code> auf der ausgef\u00fcllten Antwort.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>Symptom<\/th><th>Was Sie zuerst \u00fcberpr\u00fcfen sollten<\/th><\/tr><\/thead><tbody><tr><td>401 oder 403<\/td><td>Name der Umgebungsvariable, G\u00fcltigkeit des Schl\u00fcssels, Kontozugriff und ob die Anfrage den aktuellen Endpunkt erreicht.<\/td><\/tr><tr><td>Fehler bei der Abrechnung oder beim Kontingent<\/td><td>API-Guthaben, Zahlungseinstellungen, Modell-\/Tool-Geb\u00fchren und Kontolimits. Ein Perplexity-Privatkunden-Tarif beinhaltet nicht automatisch API-Guthaben.<\/td><\/tr><tr><td>429<\/td><td>Ratenbegrenzungen und Wiederholungsverhalten. Verwenden Sie einen begrenzten exponentiellen Backoff und vermeiden Sie es, eine bereits bearbeitete Anfrage blindlings erneut zu senden.<\/td><\/tr><tr><td>Zeit\u00fcberschreitung<\/td><td>Einstellungen f\u00fcr Netzwerkpfad, Eingabeaufforderungsgr\u00f6\u00dfe, Anzahl der Werkzeuge und Client-Timeout. Protokollieren Sie eine Anforderungs-ID, falls das SDK eine bereitstellt, protokollieren Sie jedoch niemals den Schl\u00fcssel.<\/td><\/tr><tr><td>F\u00fcr die Antwort gibt es keine passenden Quellen.<\/td><td>Die Rohware pr\u00fcfen <code>response.output<\/code>, Zitierweise und Quellen-IDs; kennzeichnen Sie die Antwort als \u201eunverifiziert\u201c, anstatt Links zu erfinden.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Die Such-API berechnet erfolgreiche Anfragen, einschlie\u00dflich solcher, die keine Ergebnisse liefern; f\u00fcr die Anfrage fallen keine zus\u00e4tzlichen Token-Kosten an. Die Kosten f\u00fcr Agenten h\u00e4ngen von den Modell-Tokens und den Tools ab. Beachten Sie diese unterschiedlichen Abrechnungseinheiten, wenn Sie einen Antwort-Workflow mit einem reinen Such-Workflow vergleichen.<\/p>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">F\u00fcr einen Vergleich der API-Kosten bietet unsere <a href=\"https:\/\/www.glbgpt.com\/hub\/perplexity-api-cost-2025\/\">Perplexity \u2013 Kosten\u00fcbersicht f\u00fcr die API<\/a> liefert zus\u00e4tzliche Hintergrundinformationen, w\u00e4hrend die offizielle Preisseite weiterhin als ma\u00dfgebliche Quelle f\u00fcr die aktuellen Preise gilt.<\/p>\n\n\n\n<h2 id=\"migration\" class=\"wp-block-heading pat-h2\">Umstieg von einem \u00e4lteren Sonar-Tutorial<\/h2>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">In vielen Suchergebnissen wird nach wie vor die \u00e4ltere Form \u201eChat Completions\u201c angezeigt. Der Leitfaden zur Migration f\u00fcr Agenten verwendet eine direkte konzeptionelle Zuordnung. Wenn Sie die Bezeichnungen des Verbrauchermodells mit den API-Voreinstellungen vergleichen m\u00f6chten, finden Sie in unserer Erkl\u00e4rung zu <a href=\"https:\/\/www.glbgpt.com\/hub\/what-llm-does-perplexity-use\/\">was LLM Perplexity verwendet<\/a> bietet Hintergrundinformationen, ersetzt jedoch nicht die Dokumentation zur Agent-API.<\/p>\n\n\n\n<figure class=\"wp-block-table pat-table\"><table><thead><tr><th>\u00c4lteres Sonar-Muster<\/th><th>Agent-API-Muster<\/th><\/tr><\/thead><tbody><tr><td><code>Nachrichten<\/code><\/td><td><code>Eingabe<\/code><\/td><\/tr><tr><td><code>Modell<\/code><\/td><td><code>Voreinstellung<\/code><\/td><\/tr><tr><td><code>choices[0].message.content<\/code><\/td><td><code>Ausgabetext<\/code><\/td><\/tr><tr><td>\u00c4ltere Annahmen bez\u00fcglich Zitiermatrizen<\/td><td><code>Suchergebnisse<\/code> Ausgabeposten und ID-basierter Abgleich<\/td><\/tr><tr><td>Suchparameter in der Anfrage<\/td><td><code>tools=[{\"type\":\"web_search\",\"filters\":{...}}]<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Lies den Live-Bericht <a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/migrate-from-sonar\/overview\">\u00dcbersicht \u00fcber die Migration<\/a> und <a href=\"https:\/\/docs.perplexity.ai\/docs\/agent-api\/migrate-from-sonar\/how-to\">Details zur Migration<\/a> bevor Sie den Produktionscode \u00e4ndern. Die voreingestellten Zuordnungen dienen als Ausgangspunkt und stellen keine Garantie daf\u00fcr dar, dass alte und neue Modelle identische Qualit\u00e4t, Latenz oder Kosten liefern.<\/p>\n\n\n\n<h2 id=\"faq\" class=\"wp-block-heading pat-h2\">H\u00e4ufig gestellte Fragen<\/h2>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Ist die Perplexity-API kostenlos?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Die APIs werden gem\u00e4\u00df der aktuellen Schnellstart- und Preisdokumentation nach tats\u00e4chlicher Nutzung abgerechnet. Gehen Sie nicht davon aus, dass ein Consumer-Abonnement, eine Testversion oder ein Aktionsguthaben jede API-Anfrage kostenlos macht.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Ben\u00f6tige ich Perplexity Pro, um die API zu nutzen?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Der API-Zugang und der \u201eConsumer Pro\u201c-Tarif sind separate Produkte. Erstellen Sie API-Zugangsdaten und \u00fcberpr\u00fcfen Sie die API-Abrechnung f\u00fcr das Entwicklerkonto, das Sie verwenden m\u00f6chten.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Sollte ich die Agent-API oder die Such-API verwenden?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">W\u00e4hlen Sie \u201eAgent\u201c, wenn Sie eine fertige, fundierte Antwort mit Quellenangaben w\u00fcnschen. W\u00e4hlen Sie \u201eSuche\u201c, wenn Ihre Anwendung selbst f\u00fcr die Rangfolge, Filterung und Zusammenfassung zust\u00e4ndig sein soll. Sie k\u00f6nnen \u201eSuche\u201c mit Ihrem eigenen Modell kombinieren, wenn Sie eine strenge Kontrolle \u00fcber jeden Generierungsschritt ben\u00f6tigen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Kann ich Perplexity von JavaScript aus aufrufen?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Ja. Verwenden Sie das oben genannte serverseitige Node.js-Beispiel oder das offizielle JavaScript-SDK. Speichern Sie den Schl\u00fcssel auf dem Server. Wenn Sie Roh-JSON einlesen, \u00fcberpr\u00fcfen Sie die typisierten Ausgabeelemente und wenden Sie dieselben Regeln f\u00fcr die Zuordnung der Quell-IDs an.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Ist die Richtigkeit der Perplexity-Zitate garantiert?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Nein. Ein Verweis gibt an, auf welches Suchergebnis sich die Antwort bezieht. Ihre Anwendung oder der Pr\u00fcfer muss dennoch die Aktualit\u00e4t und die Zuverl\u00e4ssigkeit \u00fcberpr\u00fcfen und sicherstellen, dass die Seite genau diese Aussage st\u00fctzt.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Warum hat mein Parser keine Quellen gefunden?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">\u00dcberpr\u00fcfen Sie die Typen der Rohausgabe, vergewissern Sie sich, dass die Websuche durchgef\u00fchrt wurde, und pr\u00fcfen Sie, ob Ihr regul\u00e4rer Ausdruck mit der Zitierform der Voreinstellung \u00fcbereinstimmt. Wenn keine Markierung angezeigt wird, speichern Sie die Antwort als \u201eunbest\u00e4tigt\u201c und gehen Sie der Anfrage nach, anstatt einen vermuteten Link hinzuzuf\u00fcgen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading pat-h3\">Kann ein GlobalGPT-Schl\u00fcssel einen Perplexity-API-Schl\u00fcssel ersetzen?<\/h3>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">GlobalGPT ist eine All-in-One-KI-Arbeitsumgebung f\u00fcr den allt\u00e4glichen Einsatz von KI. Das Abonnement und der Zugriff auf Modelle sind unabh\u00e4ngig vom Perplexity-Entwicklerkonto, dem API-Schl\u00fcssel und den API-Guthaben; in diesem Python-Tutorial wird das Entwicklerkonto verwendet.<\/p>\n\n\n\n<h2 id=\"checklist\" class=\"wp-block-heading pat-h2\">Eine praktische Checkliste f\u00fcr die Markteinf\u00fchrung<\/h2>\n\n\n\n<ul class=\"wp-block-list pat-list pat-checklist\">\n<li>Erstellen Sie einen serverseitigen Schl\u00fcssel und best\u00e4tigen Sie die API-Abrechnung.<\/li>\n\n\n\n<li>F\u00fchren Sie die Minimalversion aus <code>schnell<\/code> Anfrage vor dem Hinzuf\u00fcgen von Filtern oder dem Streaming.<\/li>\n\n\n\n<li>Speichern Sie die vollst\u00e4ndige Antwort, nicht nur den sichtbaren Antworttext.<\/li>\n\n\n\n<li>Ordne Zitiermarker den zur\u00fcckgegebenen Quellen-IDs zu und kennzeichne nicht zugeordnete Marker.<\/li>\n\n\n\n<li>\u00dcberpr\u00fcfen Sie die zitierten Seiten auf Belegung der Aussagen, Aktualit\u00e4t und doppelte URLs.<\/li>\n\n\n\n<li>\u00dcberpr\u00fcfen Sie vor der Bereitstellung noch einmal die Dokumentation zu Live Agent, den Preisen und der Migration.<\/li>\n<\/ul>\n\n\n\n<p class=\"pat-p wp-block-paragraph\">Sie verf\u00fcgen nun \u00fcber das Grundmuster f\u00fcr eine zuverl\u00e4ssige Perplexity-API-Integration: Stellen Sie eine gezielte Frage, lassen Sie die Agent-API die Suche durchf\u00fchren, halten Sie die Antwort und die Belege zusammen und sorgen Sie daf\u00fcr, dass jede Quellenangabe nachvollziehbar ist. Bauen Sie darauf auf und f\u00fcgen Sie Caching, Wiederholungsversuche und Ihre eigenen \u00dcberpr\u00fcfungsregeln rund um denselben Workflow mit der Quellen-ID hinzu.<\/p>\n\n\n\n<script type=\"application\/ld+json\">{\n    \"@context\": \"https:\\\/\\\/schema.org\",\n    \"@type\": \"FAQPage\",\n    \"mainEntity\": [\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Is the Perplexity API free?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"The APIs are pay-as-you-go according to the current quickstart and pricing documentation. Do not assume that a consumer subscription, a trial or a promotional credit makes every API request free.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Do I need Perplexity Pro to use the API?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"API access and a consumer Pro plan are separate products. Create API credentials and check API billing for the developer account you plan to use.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Should I use Agent API or Search API?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Choose Agent when you want a finished grounded answer with sources. Choose Search when your application should own ranking, filtering and synthesis. You can combine Search with your own model if you need strict control over every generation step.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Can I call Perplexity from JavaScript?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Yes. Use the server-side Node.js example above or the official JavaScript SDK. Keep the key on the server. When reading raw JSON, inspect the typed output items and apply the same source-ID mapping rules.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Are Perplexity citations guaranteed to be correct?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"No. A citation tells you which returned result the answer points to. Your application or reviewer must still check freshness, authority and whether the page supports the exact claim.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Why did my parser find no sources?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"Inspect the raw output item types, confirm that web search ran, and check whether your regular expression matches the preset's citation form. If no marker appears, save the answer as unverified and investigate the request rather than adding a guessed link.\"\n            }\n        },\n        {\n            \"@type\": \"Question\",\n            \"name\": \"Can GlobalGPT replace a Perplexity API key?\",\n            \"acceptedAnswer\": {\n                \"@type\": \"Answer\",\n                \"text\": \"GlobalGPT is an all-in-one AI workspace for everyday AI use. Its subscription and model access are separate from a Perplexity developer account, API key and API credits; this Python tutorial uses the developer account.\"\n            }\n        }\n    ]\n}<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>","protected":false},"excerpt":{"rendered":"<p>PERPLEXITY-API \u00b7 PYTHON-TUTORIAL \u00b7 2026 Dieses Tutorial zur Perplexity-API zeigt Ihnen, wie Sie ein Python-Skript erstellen, das eine Antwort mit anklickbaren Webquellen zur\u00fcckgibt. Verwenden Sie die Agent-API, um eine Frage zu senden, die Antwort zu lesen, deren Zitiermarkierungen den Quellen-IDs zuzuordnen und eine Markdown-Datei zu exportieren, die Sie \u00fcberpr\u00fcfen k\u00f6nnen. Wir werden [\u2026]<\/p>","protected":false},"author":17,"featured_media":20032,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"","_seopress_titles_title":"Perplexity API Tutorial: Build Answers with Sources","_seopress_titles_desc":"Perplexity API tutorial for Python: get a key, build answers with clickable sources, and match citation IDs correctly. Follow the complete script step by step.","_seopress_robots_index":"","footnotes":""},"categories":[7],"tags":[],"class_list":["post-20031","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-chat"],"acf":[],"_links":{"self":[{"href":"https:\/\/wp.glbgpt.com\/de\/wp-json\/wp\/v2\/posts\/20031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.glbgpt.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.glbgpt.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/de\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/de\/wp-json\/wp\/v2\/comments?post=20031"}],"version-history":[{"count":2,"href":"https:\/\/wp.glbgpt.com\/de\/wp-json\/wp\/v2\/posts\/20031\/revisions"}],"predecessor-version":[{"id":20038,"href":"https:\/\/wp.glbgpt.com\/de\/wp-json\/wp\/v2\/posts\/20031\/revisions\/20038"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wp.glbgpt.com\/de\/wp-json\/wp\/v2\/media\/20032"}],"wp:attachment":[{"href":"https:\/\/wp.glbgpt.com\/de\/wp-json\/wp\/v2\/media?parent=20031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.glbgpt.com\/de\/wp-json\/wp\/v2\/categories?post=20031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.glbgpt.com\/de\/wp-json\/wp\/v2\/tags?post=20031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}