موتور پاسخ Perplexica را روی یک base URL سفارشی OpenAI اجرا کنید.

Updated 2026-07-29

Perplexica، که در upstream به Vane تغییرنام یافته، provider OpenAI خود را با یک API Key و یک فیلد Base URL پیکربندی می‌کند. Base URL را روی https://api.apisrouter.com/v1 تنظیم کنید، id های مدلی که می‌خواهید را اضافه کنید، و هر پاسخ جستجو از طریق gateway synthesize می‌شود با Claude، GPT، DeepSeek، یا Gemini پشت یک کلید.

پاسخ سریع: یک فیلد Base URL، دو نسل پیکربندی.

روی release های فعلی، provider OpenAI در Perplexica دقیقاً دو فیلد الزامی افشا می‌کند: API Key و Base URL، قابل‌ویرایش در صفحه setup و UI تنظیمات، با نگاشت‌های محیطی مستند OPENAI_API_KEY و OPENAI_BASE_URL. Base URL را روی https://api.apisrouter.com/v1 تنظیم کنید، یک کلید gateway بچسبانید، سپس مدل‌های چتی که می‌خواهید را با id دقیق کاتالوگ خود اضافه کنید. provider id مدل را به‌عنوان رشته ساده روی /v1/chat/completions فوروارد می‌کند، پس id های Claude و DeepSeek از طریق اسلات provider «OpenAI» کار می‌کنند. روی release های قدیمی‌تر Perplexica (نسل config.toml، در طول خط v1.10 و v1.11)، همان قابلیت provider CUSTOM_OPENAI است: یک بلوک [MODELS.CUSTOM_OPENAI] با کلیدهای API_KEY، API_URL، و MODEL_NAME. هر دو نسل زیر نشان داده شده‌اند، پس راه‌اندازی را با نسخه‌ای که واقعاً اجرا می‌کنید مطابقت دهید.

# the settings UI fields map to these documented env vars
export OPENAI_API_KEY=sk-APIsRouter-...
export OPENAI_BASE_URL=https://api.apisrouter.com/v1
# then add chat models by id in Settings, e.g. claude-sonnet-4-6

Perplexica چطور به یک سؤال پاسخ می‌دهد، و LLM کجا می‌نشیند.

Perplexica (ItzCrazyKns در GitHub، حدود ۳۶ هزار ستاره) شناخته‌شده‌ترین موتور پاسخ متن‌باز به‌سبک Perplexity است: یک سؤال می‌گیرد، جستجوهای وب واقعی را از طریق یک instance بسته‌بندی‌شده SearxNG اجرا می‌کند، نتایج را می‌خواند، و یک LLM را وامی‌دارد یک پاسخ citation-دار synthesize کند. حالت‌های جستجو (speed، balanced، quality) عمق retrieval را در برابر latency معامله می‌کنند و حالت‌های focus منابع را به وب، بحث‌ها، یا مقالات آکادمیک محدود می‌کنند. در ۲۰۲۶ پروژه در upstream به Vane تغییرنام یافت، با پیروی image Docker؛ معماری و سیستم provider منتقل شدند، پس هر چیزی اینجا زیر هر دو نام اعمال می‌شود. اسلات LLM جایی است که کیفیت synthesis و هزینه زندگی می‌کنند. هر پاسخ یک یا چند فراخوانی chat-completions است که منابع بازیابی‌شده را به‌عنوان context حمل می‌کند، که یک موتور پاسخ را workload ورودی-token-سنگین می‌کند: مدل بسیار بیشتر از آنچه می‌نویسد می‌خواند. سیستم provider OpenAI را یکی از چند backend می‌داند (Ollama، Anthropic، Gemini، Groq، و دیگران)، و provider OpenAI آنی است که Base URL آزادانه قابل‌ویرایش دارد، که آن را قلاب gateway می‌کند. یک رفتار که باید از قبل بدانید: وقتی Base URL چیزی غیر از endpoint استاندارد OpenAI است، Perplexica عمداً یک فهرست پیش‌فرض مدل خالی نشان می‌دهد و از entry های مدلی که خودتان به provider اضافه می‌کنید استفاده می‌کند. این عمدی است، چون نمی‌تواند بداند یک endpoint سفارشی چه چیزی سرویس می‌دهد. اضافه‌کردن claude-sonnet-4-6 یا deepseek-v4-flash به‌عنوان یک entry مدل نیمه دوم راه‌اندازی است، نه یک راه‌حل دورزدنی.

راه‌اندازی کامل: release های فعلی و config.toml قدیمی.

release های فعلی همه‌چیز را داخل اپ پیکربندی می‌کنند. در اولین boot، صفحه setup درباره provider ها می‌پرسد؛ بعداً همان فیلدها در Settings زندگی می‌کنند. provider OpenAI را انتخاب کنید، API Key و Base URL را تنظیم کنید، سپس entry های مدل چت را با id هایی که قصد استفاده دارید اضافه کنید. id ها باید دقیقاً با کاتالوگ gateway مطابقت داشته باشند، و هر entry ای که اضافه می‌کنید در انتخاب‌گر مدل کنار جعبه جستجو ظاهر می‌شود. نسل قدیمی مبتنی-فایل است. اگر نصب شما هنوز config.toml دارد، روی نسل CUSTOM_OPENAI هستید: بلوک زیر را پر کنید و کانتینر را ری‌استارت کنید. MODEL_NAME یک id مدل می‌گیرد، که UI سپس به‌عنوان گزینه OpenAI سفارشی عرضه می‌کند.

[MODELS.CUSTOM_OPENAI]
API_KEY = "sk-YOUR-APISROUTER-KEY"
API_URL = "https://api.apisrouter.com/v1"
MODEL_NAME = "claude-sonnet-4-6"

انتخاب مدل synthesis برای یک موتور پاسخ.

چون انتخاب‌گر مدل هر entry ای که در برابر یک Base URL اضافه کرده‌اید را می‌خواند، A/B تست مدل‌های synthesis بی‌اهمیت است: همان سؤال را در دو تب با دو entry بپرسید و citation ها را مقایسه کنید. usage log هر-کلید پاسخ‌های هر مدل را قیمت‌گذاری می‌کند، که راه صادقانه تصمیم‌گیری درباره این است که آیا synthesis frontier token هایش را روی ترکیب query شما کسب می‌کند.

  • token های ورودی غالب‌اند. یک پاسخ حالت-quality می‌تواند context های بازیابی‌شده بزرگ را به prompt فشار دهد، پس قیمت هر-token-ورودی id شما هزینه یک جستجو را تعیین می‌کند، نه پاسخ کوتاهی که می‌نویسد.
  • claude-sonnet-4-6 پیش‌فرض قوی برای synthesis citation-دار است: خوب دستورالعمل‌های مبتنی‌بر-منبع را دنبال می‌کند و وقتی بسیاری قطعه با هم مخالف‌اند منسجم می‌ماند.
  • instance های شخصی یا تیمی پرحجم روی claude-haiku-4-5-20251001، gemini-3.5-flash، یا deepseek-v4-flash خوب کار می‌کنند: پاسخ‌ها مبتنی می‌مانند و هزینه هر-جستجو به‌قدری پایین می‌آید که حالت quality را روشن نگه دارید.
  • یک id frontier را به‌عنوان entry دوم نگه دارید. entry های مدل کنار هم در انتخاب‌گر می‌نشینند، پس تشدید یک سؤال سخت به gpt-5.5 یک تغییر dropdown است، نه یک ویرایش config.
  • حالت focus آکادمیک id های long-context را پاداش می‌دهد، چون چکیده‌ها و گزیده‌های مقاله حجیم‌تر از قطعه‌های وب هستند.

پرداخت بر اساس مصرف · پایین‌تر از قیمت رسمی

Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.

مدلقیمت رسمیقیمت ما
Claude Sonnet 4.6$3.00 / $15.00 per M$2.40 / $12.00 per M
Claude Haiku 4.5 20251001$1.00 / $5.00 per M$0.80 / $4.00 per M
GPT-5.5$5.00 / $30.00 per M$4.00 / $24.00 per M
Gemini 3.5 Flash$1.50 / $9.00 per M$1.20 / $7.20 per M
DeepSeek V4 Flash$0.14 / $0.28 per M$0.10 / $0.30 per M

حالت‌های شکست مختص Perplexica.

فهرست مدل خالی همان کلاسیک است. Base URL را تنظیم می‌کنید، انتخاب‌گر خالی می‌شود، و به‌نظر شکسته می‌رسد. نیست: با یک Base URL غیر-پیش‌فرض، Perplexica فقط entry های مدلی که به provider اضافه می‌کنید را فهرست می‌کند. id های خود را اضافه کنید و ظاهر می‌شوند. embedding ها یک اسلات جدا هستند. Perplexica از مدل‌های embedding برای reranking نتایج استفاده می‌کند، و provider OpenAI embedding ها را از همان Base URL و کلید سرویس می‌دهد. اگر gateway شما id embedding ای که آنجا پیکربندی می‌کنید را سرویس ندهد، reranking می‌شکند در حالی که پاسخ‌های چت همچنان کار می‌کنند. تقسیم تمیز نگه‌داشتن embedding ها روی provider محلی Transformers است، که روی ماشین بدون هیچ API ای اجرا می‌شود، و مسیردهی فقط synthesis چت از طریق gateway. تغییرنام راهنماها را گیر می‌اندازد. Perplexica و Vane همان پروژه‌اند؛ آموزش‌های قدیمی image Docker به‌نام perplexica و config.toml را ارجاع می‌دهند، build های فعلی به‌نام vane با تنظیمات داخل-اپ و یک volume داده پایدار عرضه می‌شوند. اگر نصب شما config.toml ندارد، یکی نسازید، خوانده نمی‌شود؛ به‌جای آن از طریق UI یا env var های مستند پیکربندی کنید. SearxNG مستقل است. اگر پاسخ‌ها تنزل می‌کنند یا جستجوها هیچ‌چیز برنمی‌گردانند، آن کانتینر SearxNG یا تنظیم فرمت JSON آن است، نه endpoint LLM. Base URL فقط فراخوانی‌های چت و embedding را جابه‌جا می‌کند.

چه کسانی Perplexica را از طریق یک gateway مسیردهی می‌کنند.

  • self-hoster هایی که یک اشتراک Perplexity را جایگزین می‌کنند و synthesis با کیفیت frontier به ازای هر جستجو با قیمت token می‌خواهند، با یک کلید به‌جای یک حساب vendor به ازای هر خانواده مدل.
  • تیم‌هایی که یک موتور پاسخ مشترک اجرا می‌کنند، جایی که usage log هر-کلید «جستجو چقدر برای ما هزینه دارد» را به یک عدد به ازای هر مدل تبدیل می‌کند.
  • راه‌اندازی‌های حریم‌خصوصی‌محور که retrieval را کاملاً محلی نگه می‌دارند (SearxNG به‌علاوه embedding های محلی) و فقط فراخوانی synthesis نهایی را از طریق یک endpoint قابل‌audit بیرون می‌فرستند.
  • کسانی که مدل‌های synthesis را روی سؤالات یکسان مقایسه می‌کنند: هر کاندید یک entry مدل در برابر همان Base URL است.
  • توسعه‌دهندگان بدون دسترسی به صورت‌حساب یک vendor خاص. دسترسی مبتنی بر شارژ بدون الزام کارت وابستگی ثبت‌نام هر-provider را حذف می‌کند.

endpoint را تأیید کنید و اولین جستجو را عیب‌یابی کنید.

قبل از سرزنش اپ تأیید کنید gateway id هایی که اضافه کرده‌اید را سرویس می‌دهد؛ entry های provider باید دقیقاً با خروجی /v1/models مطابقت داشته باشند. شکست‌های اولین‌اجرا از یک الگو پیروی می‌کنند. «No chat model providers configured» یعنی فیلدهای provider ذخیره نشده‌اند یا فهرست مدل هنوز خالی است؛ حداقل یک entry مدل چت اضافه کنید. یک 401 در log های سرور یعنی کلید با endpoint در فیلد Base URL مطابقت ندارد. یک خطای model-not-found یک غلط‌تایپی id در یک entry مدل است. خطاهای reranking با پاسخ‌های کارآمد به اسلات embedding اشاره دارند، که همان جایی است که provider محلی Transformers شما را نجات می‌دهد. و اگر بعد از ویرایش متغیرهای محیطی چیزی تغییر نکرد، به‌خاطر بسپارید config در volume داده پایدار می‌ماند؛ فیلدهای قبلاً ذخیره‌شده در UI بر یک تغییر env بعدی غالب‌اند، پس آن‌ها را در Settings ویرایش کنید. وقتی جستجوها جاری شوند، کنسول APIsRouter مدل، شمارش token، و هزینه هر-درخواست را نشان می‌دهد. موتورهای پاسخ ورودی-سنگین‌اند، و دیدن عدد واقعی token-به-ازای-هر-جستجو برای ترکیب query شما از هر تخمینی بهتر است.

curl -s https://api.apisrouter.com/v1/models \
  -H "Authorization: Bearer $APISROUTER_API_KEY" | head -50

پرسش‌های پرتکرار

آیا Perplexica همان پروژه Vane است؟

بله. مخزن upstream در ۲۰۲۶ به Vane تغییرنام یافت، و image Docker پیروی کرد. سیستم provider، یکپارچگی SearxNG، و فیلد Base URL توصیف‌شده اینجا زیر هر دو نام یکسان‌اند؛ فقط release های قدیمی هنوز از نام Perplexica و config.toml استفاده می‌کنند.

آیا Perplexica می‌تواند از مدل‌های Claude یا DeepSeek برای پاسخ‌ها استفاده کند؟

بله. provider OpenAI id های مدل را به‌عنوان رشته ساده به هر Base URL ای که تنظیم می‌کنید فوروارد می‌کند. claude-sonnet-4-6 یا deepseek-v4-flash را به‌عنوان entry های مدل در برابر Base URL gateway اضافه کنید و مثل هر گزینه دیگر در انتخاب‌گر مدل ظاهر می‌شوند.

چرا فهرست مدل بعد از تغییر Base URL خالی شد؟

عمدی است. با یک Base URL غیر-پیش‌فرض، Perplexica نمی‌تواند فرض کند endpoint چه مدل‌هایی سرویس می‌دهد، پس فقط entry هایی که خودتان به provider اضافه می‌کنید را فهرست می‌کند. id های خود را در Settings اضافه کنید و فوراً ظاهر می‌شوند.

کلیدهای config قدیمی CUSTOM_OPENAI چه‌اند؟

روی نسل config.toml (در طول خط v1.10 و v1.11)، بلوک [MODELS.CUSTOM_OPENAI] کلیدهای API_KEY، API_URL، و MODEL_NAME را می‌گیرد. API_URL را روی endpoint gateway شامل /v1 و MODEL_NAME را روی یک id کاتالوگ تنظیم کنید، سپس ری‌استارت کنید.

آیا embedding ها هم از طریق Base URL سفارشی مسیردهی می‌شوند؟

اگر مدل‌های embedding را روی provider OpenAI پیکربندی کنید، بله، از همان Base URL و کلید استفاده می‌کنند. بیشتر راه‌اندازی‌های gateway به‌جای آن embedding ها را روی provider محلی Transformers نگه می‌دارند، که به هیچ API نیاز ندارد و reranking را مستقل از endpoint چت نگه می‌دارد.

آیا متغیرهای محیطی OPENAI_API_KEY و OPENAI_BASE_URL هنوز کار می‌کنند؟

بله، آن‌ها نگاشت‌های env مستند دو فیلد provider OpenAI روی release های فعلی‌اند. توجه کنید مقادیری که قبلاً از طریق UI تنظیمات ذخیره شده‌اند در volume داده باقی می‌مانند، پس اگر اپ یک‌بار پیکربندی شده آنجا ویرایش کنید.