Maschinenübersetzung
Diese Seite wurde automatisch von KI übersetzt und kann Fehler enthalten. Bei Unklarheiten konsultieren Sie die englische Quelle.
pplx-ask: Interaktive Abfragen¶
pplx-ask ist der zweite CLI-Einstiegspunkt des Projekts: Es stellt Perplexity Fragen
interaktiv über SSE-Streaming, verarbeitet den resultierenden Thread nach – verschiebt ihn
in den BOT-Bereich, sendet optional eine Lesebestätigung und menschenähnliche Ansichts-Telemetrie und
archiviert ihn automatisch mit derselben Export-Pipeline wie pplx-export. Es teilt sich den
Kern (Transport / Cookies / Zustand / Logging) mit pplx-export, und alle API-Formen werden
gegen die Live-Plattform verifiziert.
Quelle: pplx_export/ask_cli.py (CLI), pplx_export/sites/perplexity/ask_api.py (API-Ebene).
pplx-ask models # list the authoritative model table
pplx-ask models --refresh # refresh + persist the catalog into config.toml [models]
pplx-ask ask "What is the time resolution of an example parameter?" # search mode (default)
pplx-ask ask "<long prompt>" --mode council # model council (default three models)
pplx-ask ask "<prompt>" --mode council --models gpt56_sol_thinking,claude50opusthinking
pplx-ask ask "<prompt>" --mode deep-research # deep research (fixed pplx_alpha)
pplx-ask ask "<prompt>" --space some-space-slug # create inside a space, then move into BOT
pplx-ask ask "<prompt>" --mark-read # send a read receipt after completion
pplx-ask mark-read <thread_url|uuid> # standalone read receipt
pplx-ask space-create "My Space" # create a space
a. Unterbefehle¶
a.1 models¶
Gibt die live, maßgebliche Modelltabelle aus von
GET https://www.perplexity.ai/rest/models/config/v2 (pplx_export/ask_cli.py,
cmd_models): Standardmodelle pro Modus, die drei Standardmodelle des Councils, die
im Suchmodus auswählbaren Modelle und die speziellen Modi (research / study /
agentic_research / studio).
| Option | Standard | Beschreibung |
|---|---|---|
--refresh |
aus | Den abgerufenen Katalog in die [models]-Tabelle der Konfiguration persistieren (automatisch verwaltet): last_refreshed, mode_defaults, council_defaults, search_models und die vollständige [models.catalog]. pplx-ask erstellt dann Anfragen aus [models] und fällt auf die festgelegte Basislinie in pplx_export/sites/perplexity/platform.py zurück. Erfordert eine geladene Konfigurationsdatei (zuerst pplx-export init ausführen). Siehe Konfiguration. |
a.2 ask¶
Stellt eine Frage (pplx_export/ask_cli.py:86). Streamt den Fortschritt per SSE an die Konsole,
führt die Nachverarbeitungspipeline aus (siehe Der Ask-Ablauf) und gibt am Ende ein
maschinenlesbares JSON-Objekt auf stdout aus.
| Option | Standard | Beschreibung |
|---|---|---|
prompt (positionsabhängig) |
— | Die Frage. Lange, aussagekräftige Eingabeaufforderungen funktionieren besser. |
--mode |
search |
search = normale Suche (Modell auswählbar); deep-research = Deep Research (festes Modell); council = Modell-Council (2–3 Modelle parallel + Synthese); study = Schritt-für-Schritt-Studie |
--models |
keine | council: Komma-getrennte 2–3 Modell-IDs (Standard: die Council-Modelle aus dem [models]-Katalog oder die festgelegte platform.py-Fallback; aktualisieren mit pplx-ask models --refresh); search: eine einzelne Modell-ID; wird von deep-research / study ignoriert |
--space |
home |
home = von der Startseite aus erstellen, dann in den BOT-Bereich verschieben; <slug> = direkt in diesem Bereich erstellen, dann in den BOT-Bereich verschieben |
--mark-read |
aus | Eine Lesebestätigung senden (mark_viewed) nach Abschluss |
--no-telemetry |
aus | Keine menschenähnliche Ansichts-Telemetrie senden (Standard: senden — ask context pane viewed / thread viewed / thread entry exited mit zufälligem Timing) |
--no-export |
aus | Nicht automatisch in web_archive archivieren |
--timeout |
600 |
SSE-Stream-Timeout in Sekunden |
Die Modellauflösung erfolgt offline: Die model_preference pro Modus und die Council-Vergleichsmodelle
stammen aus der [models]-Tabelle der Konfiguration, falls vorhanden, andernfalls aus der festgelegten
Basislinie in pplx_export/sites/perplexity/platform.py (die Anfrageerstellung greift nie auf das
Netzwerk zu). Wenn [models] fehlt oder älter als 7 Tage ist
(platform.MODELS_REFRESH_TTL_DAYS), warnt ask Sie, pplx-ask models --refresh auszuführen
(Standard) – oder aktualisiert automatisch, wenn das [models].auto_refresh-Flag auf true gesetzt ist.
HTTP-Fehlerhinweise von ask (pplx_export/ask_cli.py:124): 401/403 = das
Cookie ist abgelaufen oder risikokontrolliert (Cookie aktualisieren), 429 = Ratenbegrenzung (später
wiederholen), 5xx = Serverfehler (später wiederholen). Siehe Fehlerbehebung.
a.3 mark-read¶
Sendet eine Lesebestätigung für einen vorhandenen Thread (pplx_export/ask_cli.py:201): Akzeptiert eine
Thread-URL oder eine reine UUID, löst die context_uuid des Threads über
GET /rest/thread/<uuid> auf und ruft dann POST /rest/thread/mark_viewed mit
{"context_uuids": [ctx]} auf (pplx_export/sites/perplexity/ask_api.py:190). Das ungelesene
Flag wird sofort umgeschaltet. Gibt {"uuid", "context_uuid", "result"} als JSON aus.
Hinweis: Das Analytics thread viewed-Ereignis schaltet nicht ungelesen um – die echte
Lesebestätigung ist dieser Endpunkt.
a.4 space-create¶
Erstellt einen Bereich über POST /rest/collections/create_collection
(pplx_export/sites/perplexity/ask_api.py:179) mit den verifizierten festen Feldern
(emoji: "1f4c1", access: 1). Gibt {"uuid", "slug", "url"} als JSON aus.
| Option | Standard | Beschreibung |
|---|---|---|
title (positionsabhängig) |
— | Bereichstitel |
--description |
"" |
Bereichsbeschreibung |
Um den neuen Bereich als BOT-Bereich zu verwenden, registrieren Sie seine uuid/slug unter [bot_space]
in der Benutzerkonfiguration (siehe Konfiguration).
b. Gemeinsame Optionen¶
Geteilt mit pplx-export (identische Namen und Standardwerte, pplx_export/commands/common.py:232):
| Option | Standard | Beschreibung |
|---|---|---|
--account |
Konfiguration default_account |
Zielkonto; bei Cookie/E-Mail-Konflikt werden die Sitzungstoken des Browsers pro Konto aufgelistet und automatisch umgeschaltet |
--config PATH |
~/.config/pplx-export/config.toml |
Benutzerkonfiguration (Kontoregistrierung / BOT-Bereich); Priorität: --config > PPLX_EXPORT_CONFIG Umgebungsvariable > Standardpfad |
--out |
./web_archive |
Archivausgabeverzeichnis |
--cookies-from BROWSER |
automatisch erkennen | Cookies aus dem benannten Browser importieren (edge/chrome/firefox/safari/brave…) |
--cookies FILE |
— | Netscape-Cookie-Datei oder JSON-Cookie-Datei |
-v / --verbose |
aus | DEBUG-Ausgabe (Anfrageverfolgung / interne Entscheidungen) |
--log-file [PATH] |
aus | Vollständiges DEBUG-Protokoll in Datei; ohne Wert landet es unter <out>/index/logs/<cmd>-<timestamp>.log |
Cookie-Quellpriorität: --cookies-from / --cookies > frischer Cache
(<out>/index/.cookies.json, 12 h) > Browser-Automatik. Siehe
Erste Schritte für die Ersteinrichtung.
c. Der Ask-Ablauf¶
flowchart TD
A["build_envelope(prompt, mode, models, space)"] --> B["SSE stream: POST /rest/sse/perplexity_ask"]
B --> C{"final status == COMPLETED?"}
C -- "no" --> X["abort — no move / no telemetry / no export"]
C -- "yes" --> D["move thread into BOT space (best-effort)"]
D --> E["read receipt, if --mark-read (best-effort)"]
E --> F["view telemetry, unless --no-telemetry (best-effort)"]
F --> G["auto-archive via the export pipeline (core step)"]
G --> H["stdout: result JSON"]
- Umschlagserstellung —
build_envelope(pplx_export/sites/perplexity/ask_api.py:71) füllt die verifizierte Parametervorlage:modeist immer"copilot"undquery_sourceist"home"(jedeaskstartet ein neues Gespräch; Folge- Fortsetzung wird von der CLI nicht bereitgestellt). Mit--space <slug>wird der Bereichs-Slug zuerst in eine UUID aufgelöst, und der Umschlag trägttarget_collection_uuid+target_thread_access_level: 1. - SSE-Streaming —
sse_ask(pplx_export/sites/perplexity/ask_api.py:153) sendet POST anhttps://www.perplexity.ai/rest/sse/perplexity_askund konsumiert den Ereignisstrom, protokolliert Thread-Erstellung (https://www.perplexity.ai/search/<uuid>), Status- Übergänge und Generierungsfortschritt. Der Strom endet beifinal_sse_message. Wenn der Strom für ein Intervall inaktiv wird (Deep-Research / Council können für Minuten still sein; das offene Timeout beträgt 600 s), gibtpost_streameinen "warte noch auf den Antwortstrom" INFO-Herzschlag bei Standard-Ausführlichkeit aus, sodass ein laufender Durchlauf nie mit einem Hänger verwechselt wird. - Abschluss-Gate — Die Nachverarbeitung läuft nur, wenn der endgültige Status
COMPLETEDist (pplx_export/ask_cli.py:134). Bei einem abnormalen Stromende wird alles nach diesem Punkt übersprungen (keine Verschiebung, keine Telemetrie, kein Export), sodass ein halbfertiger Zustand nie in das Archiv gelangt. - Verschieben in den BOT-Bereich (Best-Effort) —
batch_move_threadsmit dercontext_uuiddes Threads in die konfigurierte[bot_space]-UUID. Übersprungen, wenn kein BOT-Bereich konfiguriert ist oder wenn der Thread bereits im BOT-Bereich erstellt wurde. - Lesebestätigung (Best-Effort,
--mark-read) —POST /rest/thread/mark_viewed; das ungelesene Flag wird sofort umgeschaltet. - Menschenähnliche Ansichts-Telemetrie (Best-Effort, standardmäßig an) —
send_view_telemetry(pplx_export/sites/perplexity/ask_api.py:234) ahmt reale Browsing-Zeitsteuerung nach:ask context pane viewed→thread viewed→ask context pane viewed→thread entry exited(randomtimeOnEntryMsvon 12–45 s, 0,6–2,4 s Pausen zwischen Ereignissen, Gerät zufällig aus einem kleinen Pool ausgewählt). - Automatische Archivierung (Kernschritt, es sei denn
--no-export) — Der Thread wird exportiert durch dieselbe Pipeline wiepplx-export export(Force-Modus) und landet unter<out>/<account>/<mode>/<date>_<title>_<uuid8>/— siehe Archiv-Layout und Export-Pipeline. Anders als die Best-Effort-Schritte pflanzt sich ein Archivierungsfehler fort und lässt den Befehl fehlschlagen.
Fehlerisolierung: Schritte 4–6 sind als Best-Effort isoliert (pplx_export/ask_cli.py:36):
Ein Fehler protokolliert eine Warnung, setzt den JSON-Schlüssel des Schritts auf false, zeichnet das Detail unter
step_errors auf und blockiert niemals die Archivierung. Die Archivierung (Schritt 7) ist der Kernschritt und ihre
Fehler werden niemals geschluckt.
d. Modi und Modellauswahl¶
Die maßgebliche Modelltabelle der Plattform ist GET /rest/models/config/v2 (was
pplx-ask models ausgibt). Die Unterscheidung liegt im model_preference-Feld — der
Umschlag mode ist immer "copilot".
| Modus | --mode-Wert |
model_preference |
Modellauswahl |
|---|---|---|---|
| Suche | search |
pplx_pro ("Best" in der UI) standardmäßig |
Einzelne Modell-ID über --models (siehe pplx-ask models für die auswählbare Liste) |
| Deep Research | deep-research |
pplx_alpha |
Fest — kein Auswahlfeld |
| Modell-Council | council |
pplx_agentic_research + compare_model_preferences |
2–3 Komma-getrennte IDs über --models; Standard aus dem [models]-Katalog (oder dem platform.py-Fallback), aktualisierbar über pplx-ask models --refresh |
| Schritt-für-Schritt-Studie | study |
pplx_study |
Fest — kein Auswahlfeld |
| Computer | (nicht verfügbar) | pplx_asi*-Familie |
Nicht unterstützt von pplx-ask |
Hinweise:
- Council führt die Modelle parallel aus und synthetisiert; beobachtete Latenz bis zum ersten Token kann
3 Minuten überschreiten, daher
--timeoutfür Council / Deep-Research-Läufe erhöhen. - Die modusseitige Taxonomie des Archivs (wie exportierte Threads klassifiziert werden, einschließlich
computer) ist dokumentiert in Modi; die Details des Anfrageumschlags befinden sich in REST-Endpunkte.
e. Verwendung von pplx-ask durch andere Agenten¶
pplx-ask ist so gebaut, dass andere Agenten Echtzeitinformationen abrufen können: Es stellt eine
Frage, wartet auf Abschluss, archiviert den Thread und gibt einen maschinenlesbaren
Vertrag aus.
- stdout enthält genau ein JSON-Objekt (die letzte Zeile); alle Protokolle gehen nach stderr, sodass Aufrufer stdout direkt in einen JSON-Parser leiten können.
- Exit-Status:
0bei Erfolg; Fehler beenden mit einem Nicht-Null-Exit-Code und einer Fehlermeldung auf stderr — Fehler in der Ask-Phase brechen ab überSystemExitmit einer[ask][ERROR]-Nachricht, während Archivierungsfehler unverändert weitergegeben werden (siehe Schritt 7).
Ergebnis-JSON-Form (pplx_export/ask_cli.py:194):
| Schlüssel | Typ | Bedeutung |
|---|---|---|
thread_uuid |
string | Backend-UUID des erstellten Threads |
thread_url |
string | https://www.perplexity.ai/search/<thread_uuid> |
context_uuid |
string | Die context_uuid des Threads (verwendet für Verschieben / Als gelesen markieren / Telemetrie) |
moved_to_bot |
boolean | true = die Verschiebung in den BOT-Bereich wurde ausgeführt und war erfolgreich; false = nicht ausgeführt oder fehlgeschlagen |
mark_read |
boolean | Gleicher Vertrag für die Lesebestätigung |
telemetry |
boolean | Gleicher Vertrag für Ansichts-Telemetrie |
step_errors |
object | Fehlerdetails pro Schritt; nur fehlgeschlagene Schritte erscheinen |
exported |
string | null | "见上方 [export] 输出", wenn die Archivierung lief; null mit --no-export |
Automatisierungstipps:
- Behandeln Sie die Schritt-Booleans strikt — ein Fehler wird niemals durch einen Wahrheitswert dargestellt;
prüfen Sie
step_errorsfür Details. --no-telemetryüberspringt die 12–45 s menschenähnliche Verweildauer, wenn nur die Antwort zählt.- Ohne konfigurierten BOT-Bereich (abgesenkter Modus) bleibt
moved_to_botfalseund alles andere funktioniert trotzdem — siehe Fehlerbehebung. - Für die Konto-/Cookie-Einrichtung sollten kopflose Agenten API-Authentifizierung lesen; das Verhalten bei mehreren Konten ist beschrieben in Ask und Konten.
f. Siehe auch¶
- Erste Schritte — Installation, Cookies, erster Durchlauf
- Konfiguration — Konten, BOT-Bereich, abgesenkter Modus
- pplx-export — die Archivierungs-CLI
- Fehlerbehebung — 401/403, falsches Konto, Protokolle