اتصال LibreChat به API هوش مصنوعی از ایران
LibreChat رابط چت متنباز و چندکاربرهای است شبیه ChatGPT — با حساب کاربری، تاریخچه و چند endpoint کنار هم — که با Docker روی سرور خودت بالا میآید. 1xAi را یک بار بهعنوان custom endpoint در librechat.yaml تعریف میکنی تا همهٔ مدلهای OpenAI، Anthropic، Gemini و DeepSeek و همچنین Grok، Kimi، GLM، Qwen، MiniMax و Hunyuan با یک کلید تومانی در همان رابط در دسترس باشند.
راهاندازی در چند دقیقه
- 01
ساخت حساب و دریافت کلید 1xAi
در 1xai.ir ثبتنام و ایمیلت را تأیید کن. هدیهٔ ۱۰۰٬۰۰۰ تومانی پس از ثبتنام با یک کلیک از داشبورد دریافت میشود. سپس از داشبورد یک کلید 1xai-* بساز و همان لحظه یک نسخه از آن کپی کن — کلید فقط یک بار نمایش داده میشود.
- 02
ساخت librechat.yaml با یک custom endpoint
در ریشهٔ پروژهٔ LibreChat (کنار docker-compose.yml) فایل librechat.yaml را بساز و زیر endpoints → custom یک endpoint تعریف کن: name برابر 1xAi، baseURL برابر https://1xai.ir/v1 و apiKey برابر ${ONEXAI_API_KEY}. با fetch: true فهرست مدلها از /v1/models خوانده میشود و default فهرست پشتیبان است.
- 03
گذاشتن کلید در .env
خط ONEXAI_API_KEY=1xai-* را به فایل .env همان پوشه اضافه کن. LibreChat هنگام بالا آمدن ${ONEXAI_API_KEY} را با مقدار همین متغیر جایگزین میکند، پس کلید هیچوقت داخل librechat.yaml نوشته نمیشود.
- 04
وصل کردن فایل به کانتینر و ریاستارت
در Docker، librechat.yaml باید با docker-compose.override.yml به کانتینر api وصل (mount) شود. بار اول با docker compose up -d کانتینر را با mount تازه بساز؛ از آن به بعد، بعد از هر تغییر در librechat.yaml یا .env، docker compose restart کافی است.
- 05
انتخاب 1xAi و اولین گفتگو
در انتخابگر بالای صفحهٔ چت، endpoint 1xAi و بعد مدل موردنظر را بردار و یک پیام بفرست. عنوان هر گفتگوی تازه را titleModel (اینجا gpt-4o-mini) میسازد که یک تماس کوچک جداست؛ هزینهٔ تومانی همهٔ تماسها در گزارش مصرف داشبورد 1xAi ثبت میشود.
تنظیمات آماده برای کپی
# همان version را بگذار که در librechat.example.yaml نسخهٔ نصبشدهات آمده
version: 1.2.1
cache: true
endpoints:
custom:
- name: "1xAi"
apiKey: "${ONEXAI_API_KEY}"
baseURL: "https://1xai.ir/v1"
models:
default: ["gpt-5", "claude-sonnet-4-6", "gemini-2.5-flash", "gpt-4o-mini"]
fetch: true
titleConvo: true
titleModel: "gpt-4o-mini"
modelDisplayLabel: "1xAi"services:
api:
volumes:
- type: bind
source: ./librechat.yaml
target: /app/librechat.yaml# در فایل .env ریشهٔ پروژهٔ LibreChat
ONEXAI_API_KEY=1xai-XXXXXXXXXXXXXXXX
# بار اول (mount تازه): کانتینر از نو ساخته میشود
docker compose up -d
# بعد از هر تغییر در librechat.yaml یا .env
docker compose restartمدل پیشنهادی و هزینه
پیشنهاد: gpt-5 — و برای هزینهٔ کمتر: gpt-4o-mini
برای گفتگوی اصلی یک مدل قوی مثل gpt-5 یا claude-sonnet-4-6 بگذار و برای کارهای روزمره gpt-4o-mini یا gemini-2.5-flash را کنارش در default نگه دار. titleModel را روی gpt-4o-mini بگذار تا ساخت عنوان هر گفتگو تقریباً هزینهای نداشته باشد.
هزینهٔ تقریبی به حجم توکن مصرفیات بستگی دارد: قیمت تومانی هر مدل، قیمت لیست سرویسدهنده بهعلاوهٔ کارمزدِ ۱۵ تا ۳۰٪ بسته به مدل است و نرخ دلار هر روز ساعت ۰۹:۰۰ بهوقت تهران بهصورت خودکار با بازار همگام میشود. عدد دقیق برای مصرف خودت را در محاسبهگر هزینه ببین.
اگر کار نکرد
- 1xAi در فهرست endpointها نیست
- یعنی librechat.yaml خوانده نشده: یا به کانتینر وصل نیست یا YAML خطا دارد. فایل باید در /app/librechat.yaml کانتینر باشد و بعد از اضافه کردن mount، docker compose up -d لازم است، نه فقط restart. خطای پیکربندی در docker compose logs api چاپ میشود؛ YAML به تورفتگی حساس است و Tab نمیپذیرد.
- فقط مدلهای default دیده میشوند
- وقتی /v1/models جواب ندهد — معمولاً بهخاطر کلید اشتباه یا خالیِ ONEXAI_API_KEY — LibreChat سراغ فهرست default میرود. مقدار کلید را در .env چک کن، مطمئن شو fetch: true زیر models است و کانتینر را ریاستارت کن.
- 401 — کلید نامعتبر
- کلید اشتباه است، منقضی شده یا باطلش کردهای. کلید را دوباره از داشبورد کپی کن یا یک کلید تازه بساز. فاصله یا خط جدیدِ اضافی هنگام paste رایجترین علت این خطاست.
- 402 — موجودی کافی نیست
- اعتبار تومانی حسابت تمام شده. حداقل شارژ ۱۰۰٬۰۰۰ تومان از طریق زرینپال است و بلافاصله پس از پرداختِ موفق، تماسهای بعدی کار میکنند. شارژ حساب
- خطای نام مدل / مسیریابی
- 1xAi بر اساس نام مدل مسیریابی میکند: claude-* به Anthropic، gemini-* به Google، deepseek-* به DeepSeek؛ grok-*، kimi-*، glm-*، qwen*، MiniMax-*، hy3 و hy4-preview هم مدلهای Grok، Kimi، GLM، Qwen، MiniMax و Hunyuan را صدا میزنند و بقیهٔ نامها به OpenAI میروند. نام مدل را دقیقاً از صفحهٔ مدلها کپی کن — یک حرف اشتباه یعنی خطای مدلِ ناشناخته. فهرست مدلها و قیمت تومانی
با اعتبار هدیهٔ ۱۰۰٬۰۰۰ تومانی شروع کن
هدیه پس از ثبتنام با یک کلیک از داشبورد دریافت میشود — بدون ویپیان و بدون کارت ارزی؛ حداقل شارژ بعدی ۱۰۰٬۰۰۰ تومان از طریق زرینپال است.
چرا apiKey را بهشکل ${ONEXAI_API_KEY} مینویسم؟
LibreChat متغیرهای محیطی را در librechat.yaml با همین نحو جایگزین میکند. کلید در .env میماند و خود فایل yaml را میشود بیخطر در git نگه داشت یا با همتیمیها به اشتراک گذاشت. اگر میخواهی هر کاربر کلید 1xai-* خودش را وارد کند، بهجایش apiKey را "user_provided" بگذار.
آیا متن گفتگوهای من جایی ذخیره میشود؟
تاریخچهٔ چت در پایگاه دادهٔ همان سرور LibreChat (MongoDB) میماند. 1xAi درخواست را به سرویسدهندهٔ همان مدل میرساند و فقط متادیتای حداقلی (مدل، توکن، وضعیت، زمان) را برای گزارش مصرف نگه میدارد.