ترجمة آلية
تمت ترجمة هذه الصفحة تلقائيًا بواسطة الذكاء الاصطناعي وقد تحتوي على أخطاء. إذا كان هناك أي شيء غير واضح، يُرجى الرجوع إلى المصدر الإنجليزي.
pplx-ask: الاستعلامات التفاعلية¶
pplx-ask هي نقطة الدخول الثانية لواجهة سطر الأوامر في المشروع: تطرح أسئلة Perplexity
بشكل تفاعلي عبر تدفق SSE، ثم تعالج الخيط الناتج — وتنقله
إلى مساحة BOT، وترسل إيصال قراءة اختياريًا وبيانات تتبع عرض شبيهة بالبشر، وتؤرشفه
تلقائيًا باستخدام نفس خط التصدير الخاص بـ pplx-export. تشارك
النواة (النقل / ملفات تعريف الارتباط / الحالة / التسجيل) مع pplx-export، ويتم التحقق من جميع أشكال
API مقابل المنصة الحية.
المصدر: pplx_export/ask_cli.py (CLI)، pplx_export/sites/perplexity/ask_api.py (طبقة API).
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. الأوامر الفرعية¶
a.1 models¶
يطبع جدول النماذج الحية والموثوق من
GET https://www.perplexity.ai/rest/models/config/v2 (pplx_export/ask_cli.py،
cmd_models): النماذج الافتراضية لكل وضع، والنماذج الثلاثة الافتراضية للمجلس، والنماذج
القابلة للتحديد في وضع البحث، والأوضاع الخاصة (research / study /
agentic_research / studio).
| الخيار | الافتراضي | الوصف |
|---|---|---|
--refresh |
off | الاحتفاظ بالكتالوج الذي تم جلبه في جدول [models] الخاص بالتكوين (إدارة تلقائية): last_refreshed، mode_defaults، council_defaults، search_models، و [models.catalog] الكامل. ثم يقوم pplx-ask ببناء الطلبات من [models]، مع الرجوع إلى الأساس المثبت في pplx_export/sites/perplexity/platform.py. يتطلب تحميل ملف تكوين (قم بتشغيل pplx-export init أولاً). انظر التكوين. |
a.2 ask¶
يطرح سؤالاً (pplx_export/ask_cli.py:86). يقوم ببث SSE للتقدم إلى وحدة التحكم،
ويشغل خط المعالجة اللاحقة (انظر تدفق الطلب)، ويطبع
كائن JSON قابل للقراءة آليًا على stdout في النهاية.
| الخيار | الافتراضي | الوصف |
|---|---|---|
prompt (موضعي) |
— | السؤال. تعمل المطالبات الطويلة وذات المعنى بشكل أفضل. |
--mode |
search |
search = بحث عادي (نموذج قابل للتحديد)؛ deep-research = بحث عميق (نموذج ثابت)؛ council = مجلس النماذج (2–3 نماذج بالتوازي + توليف)؛ study = دراسة خطوة بخطوة |
--models |
none | council: معرفات نماذج مفصولة بفواصل 2–3 (الافتراضي: نماذج المجلس من كتالوج [models]، أو الاحتياطي المثبت platform.py؛ قم بالتحديث باستخدام pplx-ask models --refresh)؛ search: معرف نموذج واحد؛ يتم تجاهله بواسطة deep-research / study |
--space |
home |
home = إنشاء من الصفحة الرئيسية، ثم النقل إلى مساحة BOT؛ <slug> = إنشاء مباشرة داخل تلك المساحة، ثم النقل إلى مساحة BOT |
--mark-read |
off | إرسال إيصال قراءة (mark_viewed) بعد الاكتمال |
--no-telemetry |
off | عدم إرسال بيانات تتبع عرض شبيهة بالبشر (الافتراضي: إرسال — ask context pane viewed / thread viewed / thread entry exited مع توقيت عشوائي) |
--no-export |
off | عدم الأرشفة التلقائية في web_archive |
--timeout |
600 |
مهلة تدفق SSE بالثواني |
حل النموذج غير متصل: يأتي model_preference لكل وضع ونماذج مقارنة المجلس من جدول [models] الخاص بالتكوين عند وجوده، مع الرجوع إلى الأساس المثبت في pplx_export/sites/perplexity/platform.py (تجميع الطلب لا يصل أبدًا إلى
الشبكة). عندما يكون [models] مفقودًا أو أقدم من 7 أيام
(platform.MODELS_REFRESH_TTL_DAYS)، يحذرك ask لتشغيل pplx-ask models --refresh
(الافتراضي) — أو يتم التحديث تلقائيًا عندما تكون علامة [models].auto_refresh بقيمة true.
تلميحات خطأ HTTP التي يصدرها ask (pplx_export/ask_cli.py:124): 401/403 = ملف تعريف الارتباط منتهي الصلاحية أو خاضع للتحكم في المخاطر (قم بتحديث ملف تعريف الارتباط)، 429 = تم تحديد المعدل (أعد المحاولة
لاحقًا)، 5xx = خطأ في الخادم (أعد المحاولة لاحقًا). انظر استكشاف الأخطاء وإصلاحها.
a.3 mark-read¶
يرسل إيصال قراءة لخيط موجود (pplx_export/ask_cli.py:201): يقبل
رابط خيط أو UUID مجرد، ويحل context_uuid الخاص بالخيط عبر
GET /rest/thread/<uuid>، ثم يستدعي POST /rest/thread/mark_viewed مع
{"context_uuids": [ctx]} (pplx_export/sites/perplexity/ask_api.py:190). يتم تبديل علامة
غير المقروء على الفور. يطبع {"uuid", "context_uuid", "result"} كـ JSON.
ملاحظة: حدث التحليلات thread viewed لا يبدل غير المقروء — إيصال القراءة الحقيقي
هو نقطة النهاية هذه.
a.4 space-create¶
ينشئ مساحة عبر POST /rest/collections/create_collection
(pplx_export/sites/perplexity/ask_api.py:179) مع الحقول الثابتة التي تم التحقق منها
(emoji: "1f4c1"، access: 1). يطبع {"uuid", "slug", "url"} كـ JSON.
| الخيار | الافتراضي | الوصف |
|---|---|---|
title (موضعي) |
— | عنوان المساحة |
--description |
"" |
وصف المساحة |
لاستخدام المساحة الجديدة كمساحة BOT، سجل uuid/slug الخاص بها تحت [bot_space]
في تكوين المستخدم (انظر التكوين).
b. الخيارات المشتركة¶
مشتركة مع pplx-export (أسماء وقيم افتراضية متطابقة، pplx_export/commands/common.py:232):
| الخيار | الافتراضي | الوصف |
|---|---|---|
--account |
تكوين default_account |
الحساب المستهدف؛ عند عدم تطابق ملف تعريف الارتباط/البريد الإلكتروني، يتم تعداد رموز جلسة الحساب لكل متصفح وتبديلها تلقائيًا |
--config PATH |
~/.config/pplx-export/config.toml |
تكوين مستوى المستخدم (سجل الحساب / مساحة BOT)؛ الأولوية: --config > متغير البيئة PPLX_EXPORT_CONFIG > المسار الافتراضي |
--out |
./web_archive |
جذر إخراج الأرشيف |
--cookies-from BROWSER |
كشف تلقائي | استيراد ملفات تعريف الارتباط من المتصفح المسمى (edge/chrome/firefox/safari/brave…) |
--cookies FILE |
— | ملف تعريف ارتباط بتنسيق Netscape أو ملف تعريف ارتباط JSON |
-v / --verbose |
off | إخراج DEBUG (تتبع الطلب / القرارات الداخلية) |
--log-file [PATH] |
off | سجل DEBUG كامل إلى ملف؛ بدون قيمة يتم وضعه في <out>/index/logs/<cmd>-<timestamp>.log |
أولوية مصدر ملف تعريف الارتباط: --cookies-from / --cookies > ذاكرة تخزين مؤقت جديدة
(<out>/index/.cookies.json، 12 ساعة) > كشف المتصفح التلقائي. انظر
البدء للإعداد الأولي.
c. تدفق الطلب¶
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"]
- تجميع المغلف —
build_envelope(pplx_export/sites/perplexity/ask_api.py:71) يملأ قالب المعلمة الذي تم التحقق منه:modeدائمًا"copilot"وquery_sourceهو"home"(كلaskيبدأ محادثة جديدة؛ متابعة الاستمرارية غير معروضة بواسطة CLI). مع--space <slug>، يتم حل slug المساحة إلى uuid أولاً، ويحمل المغلفtarget_collection_uuid+target_thread_access_level: 1. - تدفق SSE —
sse_ask(pplx_export/sites/perplexity/ask_api.py:153) يرسل POST إلىhttps://www.perplexity.ai/rest/sse/perplexity_askويستهلك تدفق الأحداث، مسجلاً إنشاء الخيط (https://www.perplexity.ai/search/<uuid>)، وتحولات الحالة، وتقدم التوليد. ينتهي التدفق عندfinal_sse_message. عندما يصبح التدفق خاملاً لفترة (يمكن أن يكون البحث العميق / المجلس صامتًا لدقائق؛ مهلة الفتح هي 600 ثانية)، يصدرpost_streamنبضة قلب INFO "لا يزال ينتظر تدفق الاستجابة" بمستوى الإفتراضي بحيث لا يتم الخلط أبدًا بين التشغيل المباشر والتعليق. - بوابة الاكتمال — يتم تشغيل المعالجة اللاحقة فقط عندما تكون الحالة النهائية
COMPLETED(pplx_export/ask_cli.py:134). عند انتهاء تدفق غير طبيعي، يتم تخطي كل شيء بعد هذه النقطة (لا نقل، لا تتبع، لا تصدير) بحيث لا تتسرب حالة نصف مكتملة أبدًا إلى الأرشيف. - النقل إلى مساحة BOT (أفضل جهد) —
batch_move_threadsمعcontext_uuidالخاص بالخيط إلى uuid[bot_space]المكون. يتم تخطيه عندما لا تكون مساحة BOT مكونة، أو عندما تم إنشاء الخيط بالفعل داخل مساحة BOT. - إيصال القراءة (أفضل جهد،
--mark-read) —POST /rest/thread/mark_viewed؛ يتم تبديل علامة غير المقروء على الفور. - بيانات تتبع عرض شبيهة بالبشر (أفضل جهد، افتراضيًا تشغيل) —
send_view_telemetry(pplx_export/sites/perplexity/ask_api.py:234) يحاكي توقيت التصفح الحقيقي:ask context pane viewed→thread viewed→ask context pane viewed→thread entry exited(randomtimeOnEntryMsمن 12–45 ثانية، فترات توقف 0.6–2.4 ثانية بين الأحداث، جهاز يتم اختياره عشوائيًا من مجموعة صغيرة). - الأرشفة التلقائية (خطوة أساسية، ما لم يكن
--no-export) — يتم تصدير الخيط من خلال نفس خط الأنابيب مثلpplx-export export(وضع القوة)، ويتم وضعه تحت<out>/<account>/<mode>/<date>_<title>_<uuid8>/— انظر تخطيط الأرشيف و خط أنابيب التصدير. على عكس خطوات أفضل جهد، فإن فشل الأرشفة ينتشر ويفشل الأمر.
عزل الفشل: يتم عزل الخطوات 4–6 كأفضل جهد (pplx_export/ask_cli.py:36):
يسجل الفشل تحذيرًا، ويضبط مفتاح JSON للخطوة على false، ويسجل التفاصيل تحت
step_errors، ولا يمنع الأرشفة أبدًا. الأرشفة (الخطوة 7) هي الخطوة الأساسية ولا يتم
ابتلاع إخفاقاتها أبدًا.
d. الأوضاع واختيار النموذج¶
جدول النموذج الموثوق للمنصة هو GET /rest/models/config/v2 (ما
يطبعه pplx-ask models). التمييز موجود في حقل model_preference —
mode للمغلف دائمًا "copilot".
| الوضع | قيمة --mode |
model_preference |
اختيار النموذج |
|---|---|---|---|
| بحث | search |
pplx_pro ("الأفضل" في واجهة المستخدم) افتراضيًا |
معرف نموذج واحد عبر --models (انظر pplx-ask models للقائمة القابلة للتحديد) |
| بحث عميق | deep-research |
pplx_alpha |
ثابت — لا محدد |
| مجلس النماذج | council |
pplx_agentic_research + compare_model_preferences |
2–3 معرفات مفصولة بفواصل عبر --models؛ افتراضيًا من كتالوج [models] (أو الاحتياطي platform.py)، قابل للتحديث عبر pplx-ask models --refresh |
| دراسة خطوة بخطوة | study |
pplx_study |
ثابت — لا محدد |
| الكمبيوتر | (غير معروض) | عائلة pplx_asi* |
غير مدعوم بواسطة pplx-ask |
ملاحظات:
- يقوم المجلس بتشغيل النماذج بالتوازي ويقوم بالتوليف؛ يمكن أن يتجاوز زمن الوصول للرمز الأول
3 دقائق، لذا ارفع
--timeoutلتشغيلات المجلس / البحث العميق. - تصنيف الوضع في جانب الأرشيف (كيف يتم تصنيف الخيوط المصدرة، بما في ذلك
computer) موثق في الأوضاع؛ تفاصيل مغلف الطلب موجودة في نقاط نهاية REST.
e. استخدام pplx-ask من وكلاء آخرين¶
تم بناء pplx-ask بحيث يمكن للوكلاء الآخرين جلب المعلومات في الوقت الفعلي: يطرح سؤالاً،
وينتظر الاكتمال، ويؤرشف الخيط، ويصدر عقدًا قابلًا للقراءة آليًا.
- stdout يحمل كائن JSON واحدًا بالضبط (السطر الأخير)؛ تذهب جميع السجلات إلى stderr، لذا يمكن للمتصلين توجيه stdout مباشرة إلى محلل JSON.
- حالة الخروج:
0عند النجاح؛ حالات الفشل تخرج بقيمة غير صفرية مع رسالة خطأ على stderr — حالات فشل مرحلة الطلب تنتهي عبرSystemExitمع رسالة[ask][ERROR]، بينما تنتشر حالات فشل الأرشفة كما هي (انظر الخطوة 7).
شكل JSON الناتج (pplx_export/ask_cli.py:194):
| المفتاح | النوع | المعنى |
|---|---|---|
thread_uuid |
string | uuid الخلفي للخيط الذي تم إنشاؤه |
thread_url |
string | https://www.perplexity.ai/search/<thread_uuid> |
context_uuid |
string | context_uuid الخاص بالخيط (يستخدم للنقل / وضع علامة مقروء / التتبع) |
moved_to_bot |
boolean | true = تم تنفيذ النقل إلى مساحة BOT ونجح؛ false = لم يتم تنفيذه أو فشل |
mark_read |
boolean | نفس العقد لإيصال القراءة |
telemetry |
boolean | نفس العقد لتتبع العرض |
step_errors |
object | تفاصيل الفشل لكل خطوة؛ تظهر فقط الخطوات الفاشلة |
exported |
string | null | "见上方 [export] 输出" عند تشغيل الأرشفة؛ null مع --no-export |
نصائح الأتمتة:
- تعامل مع القيم المنطقية للخطوات بدقة — الفشل لا يتم تمثيله أبدًا بقيمة صحيحة؛
تحقق من
step_errorsللحصول على التفاصيل. --no-telemetryيتخطى فترة المكوث الشبيهة بالبشر التي تتراوح بين 12–45 ثانية عندما تكون الإجابة فقط مهمة.- بدون مساحة BOT مكونة (وضع متدهور)، يبقى
moved_to_botبقيمةfalseو كل شيء آخر لا يزال يعمل — انظر استكشاف الأخطاء وإصلاحها. - لإعداد الحساب/ملف تعريف الارتباط، يجب على الوكلاء غير المتفاعلين قراءة مصادقة API؛ السلوك متعدد الحسابات موجود في الطلب والحسابات.
f. انظر أيضًا¶
- البدء — التثبيت، ملفات تعريف الارتباط، التشغيل الأول
- التكوين — الحسابات، مساحة BOT، الوضع المتدهور
- pplx-export — CLI الأرشفة
- استكشاف الأخطاء وإصلاحها — 401/403، حساب خاطئ، السجلات