یکی از بزرگترین سوءتفاهمها دربارهٔ مدلهای محلی این است که فکر میکنیم اتصال آنها به ابزارهایی مثل n8n، دستیارهای کدنویسی، یا پلتفرمهای خودکارسازی نیازمند یکپارچهسازی سفارشی و پیچیده است. در عمل، تقریباً همهٔ سرورهای اجرای مدل محلی محبوب یک endpoint سازگار با OpenAI عرضه میکنند، و همین یک نکته کل مسیر اتصال را ساده میکند: هر ابزاری که بتواند یک base_url دلخواه بگیرد، بدون نیاز به کدنویسی اضافی به مدل محلی شما وصل میشود. اگر هنوز مدل محلی خود را راهاندازی نکردهاید، پیش از ادامهٔ این مقاله بد نیست نگاهی به نقشهٔ راه مدلهای متنباز و اجرای محلی بیندازید. در این مقاله قدمبهقدم نشان میدهیم این endpoint چگونه کار میکند و چطور آن را به n8n و سایر ابزارهای رایج وصل کنید.
لیست مطالب
endpoint سازگار با OpenAI چیست؟
وقتی اوایل کار با API مدلهای زبانی، OpenAI ساختار خاصی برای درخواستها و پاسخها تعریف کرد (مسیرهایی مثل /v1/chat/completions)، این ساختار عملاً به یک استاندارد غیررسمی در کل صنعت تبدیل شد. ابزارهای اجرای مدل محلی مثل Ollama، LM Studio و سرور llama.cpp همین ساختار را پیادهسازی کردهاند تا بدون نیاز به تغییر کد کلاینت، بتوانید همان درخواستهایی را که برای OpenAI میفرستادید، به مدل محلی خودتان بفرستید. تنها تفاوت این است که بهجای آدرس سرور OpenAI، آدرس سرور محلی خودتان (معمولاً روی localhost) را وارد میکنید و مقدار api_key معمولاً یک رشتهٔ دلخواه یا خالی است، چون سرور محلی معمولاً آن را بررسی نمیکند.
این سازگاری یعنی هر کتابخانه، فریمورک یا اپلیکیشنی که از SDK رسمی OpenAI یا هر کلاینتی با پشتیبانی از base_url سفارشی استفاده میکند، تقریباً بدون تغییر با مدل محلی شما کار میکند. این شامل کتابخانههای پایتون و جاوااسکریپت، افزونههای ویرایشگر کد، و پلتفرمهای خودکارسازی مثل n8n میشود.

پیکربندی نمونه
فرض کنید Ollama را روی سیستم خودتان اجرا کردهاید و مدل llama3 را دانلود کردهاید. برای فراخوانی مستقیم با curl کافی است:
curl http://localhost:11434/v1/chat/completions
-H "Content-Type: application/json"
-d '{
"model": "llama3",
"messages": [
{"role": "user", "content": "سلام، خودت را معرفی کن"}
]
}'
و اگر از سرور llama.cpp یا LM Studio استفاده میکنید، پیکربندی مشابهی به این شکل خواهد بود؛ فقط base_url و مدل تغییر میکند:
base_url = "http://localhost:1234/v1"
api_key = "not-needed"
model = "نام-مدل-محلی-شما"
همین سه پارامتر—base_url، api_key، و model—در تمام ابزارهایی که قرار است به مدل محلی وصل شوند تکرار میشود. تنها کاری که باید انجام دهید این است که در هر ابزار، بهجای مقادیر پیشفرض OpenAI، همین سه مقدار محلی را وارد کنید.
اتصال به n8n
در n8n، نودهای مرتبط با OpenAI (از جمله نود AI Agent) از یک credential استاندارد به نام «OpenAI API» استفاده میکنند. برای اتصال به مدل محلی:
- یک credential جدید از نوع OpenAI بسازید.
- در فیلد Base URL، آدرس سرور محلی خود را وارد کنید (مثلاً
http://localhost:11434/v1). - در فیلد API Key، هر مقدار دلخواه (حتی یک رشتهٔ ساختگی) وارد کنید، چون سرور محلی معمولاً آن را چک نمیکند.
- در تنظیمات نود، نام مدل را دقیقاً همانطور که در سرور محلی نامگذاری شده وارد کنید (نه یکی از مدلهای استاندارد OpenAI).
پس از این تنظیمات، هر workflow که از این credential استفاده کند، درخواستها را بهجای سرورهای OpenAI، به سرور محلی شما میفرستد؛ خود n8n نیازی به دانستن اینکه مدل محلی است یا ابری ندارد.
اتصال به سایر ابزارها
همین الگو در ابزارهای دیگر هم عیناً تکرار میشود. فریمورکهایی مثل LangChain، ابزارهای چت خودمیزبانیشده مثل LibreChat، و افزونههای دستیار کدنویسی مثل Continue همگی یک فیلد برای base_url سفارشی دارند. تفاوت اصلی فقط در محل قرارگیری این تنظیم در رابط کاربری هر ابزار است.
| ابزار | محل تنظیم base_url | نکته |
|---|---|---|
| n8n | credential از نوع OpenAI API | نام مدل را دستی وارد کنید |
| LangChain | پارامتر base_url در کلاینت ChatOpenAI | در بسیاری از نسخهها api_key هم باید مقداردهی شود حتی اگر جعلی باشد |
| Continue (افزونهٔ ویرایشگر کد) | فایل پیکربندی config با فیلد apiBase | امکان تعریف چند مدل محلی همزمان وجود دارد |
| LibreChat | فایل .env یا librechat.yaml | برای هر endpoint سفارشی میتوان نام نمایشی جدا تعریف کرد |
وقتی این اتصال برقرار شد، میتوانید همان workflowها یا ابزارهایی را که قبلاً روی مدل ابری ساخته بودید، بدون بازنویسی روی مدل محلی اجرا کنید. این نقطهٔ شروع خوبی است برای گام بعدی، یعنی ساخت یک چتبات تخصصی که روی دادههای خودتان کار میکند؛ برای این مسیر میتوانید نقشهٔ راه ساخت چتبات تخصصی را دنبال کنید.
محدودیتهای سازگاری که باید بدانید
سازگاری با OpenAI به این معنا نیست که هر ویژگی دقیقاً یکسان کار میکند. اولین نکته، پشتیبانی از streaming است؛ اکثر سرورهای محلی این قابلیت را دارند، اما بعضی نسخههای قدیمیتر یا برخی مدلها ممکن است پاسخ را یکجا برگردانند بهجای ارسال تدریجی، که در ابزارهایی مثل n8n روی تجربهٔ real-time اثر میگذارد. نکتهٔ دوم، function calling یا tool calling است؛ اگر workflow شما در n8n به قابلیت فراخوانی ابزار توسط مدل (مثلاً برای اجرای یک نود دیگر) وابسته است، باید مطمئن شوید مدل محلی و نسخهٔ سرور آن واقعاً از این قابلیت پشتیبانی میکنند، چون همهٔ مدلهای محلی این توانایی را بهخوبی مدلهای بزرگ ابری اجرا نمیکنند. نکتهٔ سوم، محدودیت طول context است؛ سرور محلی معمولاً یک مقدار پیشفرض برای حداکثر طول ورودی دارد که باید آن را متناسب با نیاز workflow خودتان تنظیم کنید، وگرنه با پیامهای بلند خطا خواهید گرفت.
وقتی اتصال برقرار نمیشود
اگر با خطای اتصال مواجه شدید، ابتدا بررسی کنید سرور مدل محلی واقعاً در حال اجراست و روی همان پورتی که در credential وارد کردهاید گوش میدهد. مورد بعدی، اگر n8n را داخل یک container یا ماشین مجازی اجرا میکنید، آدرس localhost ممکن است به خود آن container اشاره کند نه به دستگاه میزبان؛ در این حالت باید از آدرس شبکهٔ داخلی دستگاه میزبان (یا نام سرویس در همان شبکهٔ Docker) استفاده کنید، نه localhost.
جمعبندی
- اکثر سرورهای اجرای مدل محلی (Ollama، LM Studio، llama.cpp) یک endpoint سازگار با OpenAI عرضه میکنند.
- سه پارامتر کلیدی برای اتصال، base_url، api_key (معمولاً دلخواه)، و نام دقیق مدل هستند.
- در n8n، این تنظیمات در credential نوع OpenAI انجام میشود، بدون نیاز به نود سفارشی.
- همین الگو در LangChain، Continue، LibreChat و اکثر ابزارهای مشابه تکرار میشود.
- پیش از اتصال، حتماً بررسی کنید سرور محلی روی همان مسیر (route) و پورتی که ابزار انتظار دارد در حال گوشدادن است.
