LobeChat را روی یک endpoint سفارشی سازگار با OpenAI اجرا کنید.

Updated 2026-07-29

ماژول provider در LobeChat هر سرویس سازگار با OpenAI را می‌پذیرد: یک provider سفارشی با نوع SDK OpenAI بسازید، endpoint را روی https://api.apisrouter.com/v1 تنظیم کنید، یک کلید paste کنید، و فهرست مدل را fetch کنید. id های Claude، GPT، Gemini، و DeepSeek در انتخاب‌گر مدل هر دستیار می‌نشینند.

پاسخ سریع: یک provider سفارشی، یک endpoint، یک کلید.

تنظیمات LobeChat را باز کنید و به بخش provider سرویس AI بروید (بسته به نسخه با برچسب AI Service Provider یا Language Model). چون ماژول مدیریت-provider در v1.44 اضافه شد، می‌توانید به‌جای سوارشدن روی entry built-in OpenAI یک provider سفارشی بسازید: یک provider اضافه کنید، یک id و نام نمایشی به آن بدهید (apisrouter / APIsRouter)، نوع SDK OpenAI را انتخاب کنید، سپس کلید API و URL پروکسی endpoint را با https://api.apisrouter.com/v1 پر کنید. در فهرست مدل provider، از عمل fetch-models برای کشیدن هر id ای که endpoint از طریق /v1/models سرویس می‌دهد استفاده کنید، آن‌هایی که می‌خواهید را فعال کنید، و چک اتصالی built-in را اجرا کنید. از آن به بعد، هر دستیار یا مکالمه می‌تواند آن id ها را از انتخاب‌گر مدل انتخاب کند. این پروژه اکنون در lobehub/lobehub روی GitHub زندگی می‌کند (نام repo قدیمی lobe-chat به آن redirect می‌شود)، و برچسب‌های منو بین نسخه‌ها تغییر می‌کند، پس جریان، entry provider، نوع SDK، URL، کلید، fetch، را به‌عنوان بخش پایدار در نظر بگیرید نه عبارت دقیق.

Provider ID:    apisrouter
Provider Name:  APIsRouter
SDK Type:       OpenAI
API Key:        sk-YOUR-APISROUTER-KEY
API Proxy URL:  https://api.apisrouter.com/v1

Model List → Fetch models → enable ids → check

LobeChat چطور درخواست‌ها را به یک provider مسیردهی می‌کند.

LobeChat (حدود ۸۰ هزار ستاره GitHub، اکنون زیر نام LobeHub) یکی از پرنصب‌ترین فریم‌ورک‌های چت open-source است: یک کلاینت وب صیقلی، دستیارهایی با prompt و مدل‌های خودشان، یک سیستم پلاگین، و ویژگی‌های پایگاه‌دانش، قابل‌استقرار در یک session مرورگر یا self-hosted با یک پایگاه‌داده. هر entry provider توصیف می‌کند درخواست‌ها کجا می‌روند و کدام گویش SDK صحبت می‌شود. یک provider سفارشی روی نوع SDK OpenAI درخواست‌های استاندارد chat-completions را با URL پروکسی شما با id مدل به‌عنوان یک رشته ساده می‌فرستد، که دقیقاً شکلی است که یک gateway چند-vendor انتظار دارد. پس یک entry کل کاتالوگ را حمل می‌کند: دستیارها می‌توانند claude-sonnet-4-6 را برای کار دقیق pin کنند در حالی که مکالمات سریع gemini-3.5-flash را اجرا می‌کنند، بدون حساب دوم در هیچ‌جا. URL endpoint یک نکته مستند ارزش نقل‌قول دارد: اینکه URL به پسوند /v1 نیاز دارد به سرویس پشت آن بستگی دارد. LobeChat مسیرهای route مثل /chat/completions را به base ای که می‌دهید پیوست می‌کند، پس برای APIsRouter مقدار درست https://api.apisrouter.com/v1 است. علامت مستند یک پسوند گم‌شده این است که مدل در تست یک پاسخ خالی برمی‌گرداند؛ اگر این را دیدید، /v1 را اضافه و دوباره امتحان کنید.

Self-hosting: مسیر متغیر محیطی.

اگر خودتان LobeChat را deploy می‌کنید، همان مسیردهی می‌تواند داخل کانتینر ship شود به‌جای کلیک‌شدن در UI. جفت کلاسیک provider built-in OpenAI را override می‌کند: OPENAI_API_KEY کلید gateway را می‌گیرد و OPENAI_PROXY_URL روی https://api.apisrouter.com/v1 قرار می‌گیرد. هر کاربر آن deployment آنگاه endpoint را بدون لمس تنظیمات به ارث می‌برد. قابلیت‌مشاهده مدل با syntax فهرست-مدل کنترل می‌شود: OPENAI_MODEL_LIST مقدار +id برای اضافه، -id برای پنهان‌کردن، و id=Display Name برای relabel می‌پذیرد، با entry های جدا-شده-با-کاما. شروع مقدار با -all فهرست built-in را پاک می‌کند پس فقط id های صریح شما نشان داده می‌شوند، که شکل تمیز برای یک deployment curated است. build های جدیدتر سرور همچنین یک خانواده CUSTOM_PROVIDER_* (count، id، name، type، base URL، keys) برای اعلام provider های سفارشی کامل در زمان deploy مستند می‌کنند، مطابق آنچه ماژول UI انجام می‌دهد. مرجع متغیر محیطی فعلی نسخه خود را چک کنید قبل از تکیه بر آن، چون این سطح جدیدتر از جفت OPENAI_* است و همچنان در حال تکامل است.

OPENAI_API_KEY=sk-YOUR-APISROUTER-KEY
OPENAI_PROXY_URL=https://api.apisrouter.com/v1
OPENAI_MODEL_LIST=-all,+claude-sonnet-4-6=Claude Sonnet 4.6,+gpt-5.5,+gemini-3.5-flash,+deepseek-v4-pro

انتخاب مدل برای دستیارها.

چون همه دستیارها از طریق یک کلید صورت‌حساب می‌شوند، مقایسه مدل یک تغییر تنظیمات دستیار است. دو کاندید را روی دو دستیار تکراری pin کنید، prompt های واقعی خود را برای یک هفته اجرا کنید، و هزینه هر-مدل را در کنسول APIsRouter کنار کیفیت پاسخی که مشاهده کردید بخوانید.

  • دستیارها pin مدل به ازای هر نقش هستند. یک دستیار نویسندگی روی claude-sonnet-4-6، یک دستیار پاسخ-سریع روی claude-haiku-4-5-20251001، و یک دستیار تحقیق روی gpt-5.5 همه پشت یک entry provider همزیستی دارند.
  • gemini-3.5-flash انتخاب پاسخ‌گویی برای مدل پیش‌فرض مکالمه است؛ بیشتر turn ها در یک فریم‌ورک چت کوتاه و سریع‌اند و مدل‌های سریع UI را فوری نگه می‌دارند.
  • deepseek-v4-pro برای مکالمات چندزبانه بلند و خلاصه‌سازی سنگین جایگاه کسب می‌کند، جایی که رفتار long-context آن به ازای هر token صرف‌شده جذابیت است.
  • مکالمات vision به یک id vision-پذیر با قابلیت فعال‌شده در پیکربندی مدل provider نیاز دارند؛ LobeChat toggle های قابلیت به ازای هر مدل را در ماژول provider نمایش می‌دهد.
  • یک انتخاب‌گر دو-رده را عمدی فعال کنید، یک id سریع و یک id مرزی، و بیشتر را فقط وقتی یک دستیار واقعی به آن‌ها نیاز داشت اضافه کنید؛ هر مدل فعال‌شده یک ردیف است که کاربران باید scroll کنند.

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

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
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 Pro$0.43 / $0.87 per M$0.40 / $0.90 per M
Claude Haiku 4.5 20251001$1.00 / $5.00 per M$0.80 / $4.00 per M

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

یک پاسخ خالی در چک اتصال امضای مستند یک مشکل پسوند base-URL است. /v1 را اضافه یا حذف کنید (برای APIsRouter باید حاضر باشد) و دوباره امتحان کنید قبل از عیب‌یابی هرچیز عمیق‌تر. مدل‌های غایب از انتخاب‌گر یک دستیار معمولاً یعنی fetch شده‌اند اما در فهرست مدل provider فعال نشده‌اند، یا خود toggle provider خاموش است. هر دو در همان صفحه تنظیماتی زندگی می‌کنند که عمل fetch در آن است. روی deployment های self-hosted، تقدم را به‌خاطر بسپارید: متغیرهای محیطی پیش‌فرض‌های سمت-سرور را پیکربندی می‌کنند، در حالی که کاربران هنوز می‌توانند تنظیمات provider خودشان را سمت-کلاینت وارد کنند بسته به auth و feature flag های deployment شما. اگر یک deployment OPENAI_PROXY_URL شما را نادیده می‌گیرد، تأیید کنید کانتینر واقعاً با محیط جدید restart شده و session کلاینت آن را محلی override نمی‌کند. drift نسخه اینجا واقعی است: درخت تنظیمات بیش از یک بار reorganize شده (Language Model، سپس AI Service Provider، با ماژول provider که در v1.44 وارد شد)، و اسکرین‌شات‌های آموزش‌های قدیمی با منوهای فعلی مطابقت نخواهند داشت. خود فیلدها، id، نام، نوع SDK، URL، کلید، پایدار مانده‌اند.

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

  • کسانی که LobeChat را برای یک تیم self-host می‌کنند و می‌خواهند یک endpoint در کانتینر و یک لاگ usage برای همه، به‌جای کلیدهای vendor به ازای هر کاربر.
  • کاربران قدرتمند دستیار که vendor مختلفی را به ازای هر نقش pin می‌کنند، Claude برای نویسندگی، GPT برای تحلیل، DeepSeek برای حجم، بدون نگه‌داری حساب برای هرکدام.
  • کاربرانی که مدل‌هایی می‌خواهند که فهرست provider built-in حمل نمی‌کند، فعال‌شده با fetch کردن کاتالوگ gateway به‌جای انتظار برای release های upstream.
  • توسعه‌دهندگان بدون دسترسی به صورت‌حساب یک vendor خاص. دسترسی مبتنی بر شارژ بدون الزام کارت وابستگی ثبت‌نام هر-provider را حذف می‌کند.
  • افرادی که از قبل ویرایشگر، launcher، یا ابزار CLI خود را از طریق یک gateway مسیردهی می‌کنند و می‌خواهند فریم‌ورک چت خود روی همان کلید باشد.

endpoint را تأیید کنید و اولین مکالمه را عیب‌یابی کنید.

اول فهرست مدل‌ها را curl کنید و خروجی را باز نگه دارید؛ این املای معتبر برای هر id ای است که فعال می‌کنید، چه با fetch چه با دست. سپس یک chat completion در برابر id ای که قصد پیش‌فرض‌کردنش را دارید اجرا کنید. داخل LobeChat، چک اتصال را قبل از مکالمات واقعی اجرا کنید. شکست‌های احراز هویت به فیلد کلید اشاره دارند. یک پاسخ خالی به پسوند /v1 اشاره دارد. خطاهای not-found روی یک مدل خاص یعنی id فعال‌شده با فهرست مطابقت ندارد، که بیشتر بعد از ویرایش دستی نام‌های نمایشی و id ها با هم اتفاق می‌افتد. وقتی مکالمات جریان یابند، کنسول APIsRouter مدل، شمارش token، و هزینه به ازای هر درخواست را نشان می‌دهد. یک فریم‌ورک چت با دستیارها ترافیک را روی چند مدل همزمان تولید می‌کند، و نمای usage هر-کلید جایی است که عادت هر دستیار به هزینه‌ای قابل‌مشاهده به ازای هر مدل، هر روز تبدیل می‌شود.

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

curl -s https://api.apisrouter.com/v1/chat/completions \
  -H "Authorization: Bearer $APISROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gemini-3.5-flash",
       "messages":[{"role":"user","content":"ping"}]}'

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

چطور یک provider سازگار با OpenAI سفارشی به LobeChat اضافه کنم؟

در تنظیمات، بخش provider سرویس AI را باز کنید و یک provider سفارشی بسازید: id و نام نمایشی، نوع SDK OpenAI، endpoint یعنی https://api.apisrouter.com/v1، و کلید خود. فهرست مدل را fetch کنید، id هایی که می‌خواهید را فعال کنید، و چک اتصال را اجرا کنید.

آیا URL endpoint به /v1 نیاز دارد؟

برای APIsRouter، بله: https://api.apisrouter.com/v1. LobeChat مسیرهایی مثل /chat/completions را به base ای که می‌دهید پیوست می‌کند، و مستندات آن اشاره می‌کند یک پسوند اشتباه معمولاً به‌عنوان یک پاسخ خالی در تست ظاهر می‌شود. اگر این را دیدید، پسوند را درست کنید و دوباره امتحان کنید.

OPENAI_PROXY_URL چیست و کِی از آن استفاده کنم؟

متغیر محیطی self-hosting است که provider built-in OpenAI در LobeChat را به یک base URL دیگر مجدد اشاره می‌دهد. آن را با OPENAI_API_KEY در کانتینر تنظیم کنید و هر کاربر آن deployment endpoint را به ارث می‌برد؛ از OPENAI_MODEL_LIST برای curate کردن id های نمایش‌داده‌شده استفاده کنید.

آیا دستیارهای مختلف می‌توانند از طریق یک provider از vendor های مختلف استفاده کنند؟

بله. هر دستیار مدل خودش را pin می‌کند، و id به ازای هر درخواست به‌عنوان یک رشته ساده به endpoint سفر می‌کند. یک entry provider می‌تواند یک دستیار Claude، یک دستیار GPT، و یک دستیار DeepSeek را کنار هم سرویس دهد، همه از طریق همان کلید صورت‌حساب‌شده.

آیا LobeChat همان پروژه LobeHub است؟

بله. پروژه ری‌براند شد و repo GitHub اکنون در lobehub/lobehub زندگی می‌کند، با نام قدیمی lobe-chat که به آن redirect می‌شود. مستندات و منوها در طول انتقال هر دو نام را ترکیب می‌کنند، که همچنین دلیل تفاوت برچسب‌های تنظیمات بین نسخه‌هاست.

چرا مدل‌های fetch‌شده من در مکالمات ظاهر نمی‌شوند؟

fetch کردن id ها را فهرست می‌کند؛ فعال‌کردن آن‌ها یک toggle جدا به ازای هر مدل در فهرست مدل provider است، و خود provider هم یک کلید فعال‌سازی دارد. هر دو را چک کنید، سپس انتخاب‌گر مدل را دوباره باز کنید. اگر یک id فعال‌شده همچنان خطا دهد، املای آن را در برابر خروجی /v1/models مقایسه کنید.