پرش به محتوای اصلی
پرش به محتوای مقاله

«تولید APIهای خصوصی»؛ راهکار جدید برای ارتقای Ollama به سطح صنعتی

·۱۹ شهریور ۱۴۰۵۵ دقیقه مطالعه۱ بازدید
راهنما
ساخت سرور API مدل زبانی محلی با Ollama و FastAPI
ساخت سرور API مدل زبانی محلی با Ollama و FastAPI
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

ارائه یک معماری عملی برای تبدیل APIهای خام و ناامن مدل‌های محلی به سرویس‌های استاندارد سازمانی با استفاده از میان‌افزارهای FastAPI.

شما می‌توانید با کمتر از ۱۵۰ خط کد پایتون، یک مدل محلی ساده را به سرویسی آماده برای محیط عملیاتی تبدیل کنید. با پوشاندن اولاما (Ollama) توسط FastAPI، ریسک‌های مربوط به در معرض قرار گرفتن زیرساخت استنتاج را حذف می‌کنید و کنترل کاملی بر داده‌ها و تأخیر (Latency) خواهید داشت.

اجرای مدل‌ها به‌صورت محلی دیگر صرفاً یک سرگرمی برای کنجکاوان نیست. همان‌طور که در پوشش پیشین ما از یکپارچه‌سازی APIهای مختلف هوش مصنوعی اشاره کردیم، سازمان‌ها برای فرار از هزینه‌های توکن و محدودیت‌های نرخ فراخوانی (Rate Limits) در زمان‌های اوج مصرف، به دنبال روش‌های امن و مقیاس‌پذیر برای سرویس‌دهی به این مدل‌ها هستند. این رویکرد در واقع نسخه‌ای پیشرفته‌تر از استراتژی جایگزینی فراخوانی‌های مستقیم با درگاه‌های API است که به کاهش چشمگیر هزینه‌های عملیاتی منجر می‌شود. این پیاده‌سازی خاص، بر مقاوم‌سازی یک منبع محلی برای استفاده در سطح تیم تمرکز دارد.

تصور کنید مدل زبانی محلی شما مثل یک موتور قدرتمند است که نه داشبورد دارد و نه قفلی روی درش. اولاما — که مثل یک مکانیک ماهر، مدل‌هایی مثل Llama 3.2، Mistral، Qwen یا Phi را برای شما نصب می‌کند — موتور را فراهم می‌کند، اما API داخلی آن فاقد لایه‌های میان‌افزاری، ردیابی مصرف و اعتبارسنجی است. در اینجا FastAPI نقش داشبورد و دروازه امنیتی را ایفا می‌کند تا سایر برنامه‌ها بتوانند به‌صورت حرفه‌ای از این مدل استفاده کنند.

معماری فنی

به نقل از راهنمای منتشر شده در وب‌سایت dev.to در ۱۰ سپتامبر ۲۰۲۶، این پوشش (Wrapper) چندین شکاف حیاتی در API خام اولاما را پر می‌کند. در حالی که API مدل REST در اولاما کاربردی است اما بسیار ابتدایی است. لایه‌های سازمانی زیر توسط FastAPI اضافه می‌شوند:

  • اعتبارسنجی ورودی: استفاده از مدل‌های Pydantic برای اطمینان از اینکه درخواست‌ها از یک ساختار سخت‌گیرانه پیروی می‌کنند؛ این کار از کرش کردن سرور به‌دلیل JSONهای ناقص جلوگیری کرده و پیام‌های خطای واضحی را به کاربر برمی‌گرداند.
  • امنیت: یک میان‌افزار احراز هویت که هدر x-api-key را پیش از اجازه دسترسی به مدل بررسی می‌کند تا دسترسی‌های غیرمجاز داخلی مسدود شود.
  • مشاهده‌پذیری (Observability): یک میان‌افزار HTTP سفارشی که متد، مسیر، کد وضعیت و مدت‌زمان هر درخواست را برای نظارت بر تأخیر ثبت می‌کند.
  • مستندات: تولید خودکار مستندات OpenAPI در مسیر /docs که به هم‌تیمی‌ها اجازه می‌دهد بدون خواندن کد منبع، پارامترهای پشتیبانی‌شده را بررسی کنند.

جزئیات پیاده‌سازی

این سرور از کتابخانه httpx برای ارتباطات ناهمگام (Asynchronous) با بک‌اِند اولاما استفاده می‌کند که به‌طور پیش‌فرض روی آدرس http://localhost:11434 اجرا می‌شود. طبق مستندات این پروژه، دو مسیر اصلی تعریف شده است:

  • بررسی سلامت (/health): این نقطه انتهایی با پرس‌وجو از مسیر /api/tags بررسی می‌کند که آیا اولاما در دسترس است یا خیر و لیستی از مدل‌های بارگذاری‌شده فعلی را برمی‌گرداند.
  • رابط گفتگو (/v1/chat): این مسیر گفتگوهای چندمرحله‌ای را مدیریت می‌کند. این بخش، درخواست‌های ChatRequest در FastAPI (شامل پارامترهای Temperature و max_tokens) را به نقطه انتهایی /api/chat در اولاما نگاشت می‌کند. به‌طور مشخص، مقدار max_tokens در قالب پارامتر num_predict در بدنه options به اولاما ارسال می‌شود.

استریمینگ (Streaming) هسته اصلی این ساختار است. برای کاهش تأخیرِ احساس‌شده توسط کاربر، این پوشش از StreamingResponse برای انتقال رویدادهای ارسالی سرور (SSE) استفاده می‌کند. این یعنی نخستین توکن — که مثل تکه‌های کوچکی از یک کیک است که مدل تکه‌تکه می‌خورد — بلافاصله به دست کاربر می‌رسد و نیازی نیست کاربر منتظر تولید کل پاسخ بماند. برای تمیز نگه داشتن حلقه‌های کلاینت، از یک نشانه [DONE] برای اعلام پایان استریم استفاده شده است تا انطباق با کلاینت‌های JavaScript EventSource آسان شود.

برای اطمینان از اینکه API پس از ری‌بوت سیستم از کار نمی‌افتد، توصیه می‌شود هر دو بخش اولاما و FastAPI به‌عنوان سرویس‌های systemd تعریف شوند. یک فایل نمونه سرویس (llm-api.service) دایرکتوری کاری، متغیرهای محیطی برای API_KEY و OLLAMA_URL را تعریف کرده و مقدار Restart=on-failure را تنظیم می‌کند. افزودن Nginx در ابتدای این پشته (Stack) امکان TLS termination را فراهم می‌کند و عملاً یک نقطه انتهایی محلی در سطح استانداردهای تولیدی ایجاد می‌کند. این مدل استقرار محلی، مشابه راهکارهای استفاده از سرورهای ارزان‌قیمت برای مقابله با جهش قیمت‌های APIهای ابری است.

گسترش زیرساخت

پس از راه‌اندازی سرور پایه، می‌توان قابلیت‌های ارزشمندی را برای عبور از یک پروکسی ساده اضافه کرد:

  • کش کردن درخواست‌ها: هش کردن ترکیب (مدل، پیام‌ها، دما) برای ذخیره پاسخ‌ها در Redis یا SQLite؛ این کار هزینه‌های استنتاج — لحظه‌ای که مدل واقعاً جواب تولید می‌کند — را برای پرس‌وجوهای تکراری (مانند سوالات متداول) حذف می‌کند.
  • مسیریابی مدل‌ها: ارسال خودکار پرس‌وجوهای کوتاه و واقع‌گرایانه به مدل‌های کوچک مثل Phi-3 mini و ارجاع وظایف استدلالی پیچیده به مدل‌های بزرگ‌تر بر اساس طول و پیچیدگی پرامپت.
  • ردیابی مصرف: ثبت مقادیر eval_count و prompt_eval_count از پاسخ‌های اولاما در یک پایگاه‌داده SQLite. این کار داده‌های معادلی با هزینه‌های ابری را برای بنچ‌مارک کردن عادلانه مدل‌ها فراهم می‌کند.
  • محدودیت نرخ پیشرفته: جایگزینی تک‌کلید API با یک سیستم نگاشت کلید به سطح دسترسی (Key-to-tier) در پایگاه‌داده، با استفاده از یک دکوراتور Token-bucket برای جلوگیری از اشغال تمام منابع GPU توسط یک کاربر واحد.

این تغییر در پیاده‌سازی، هوش مصنوعی محلی را از یک آزمایش شخصی به یک ابزار مشترک تبدیل می‌کند. با جداسازی موتور استنتاج (Ollama) از لایه مدیریت API (FastAPI)، توسعه‌دهندگان می‌توانند بدون دست زدن به وزن‌های مدل، روی امنیت و مسیریابی کار کنند. با این حال، باید مراقب بود که تمرکز صرف بر کاهش هزینه منجر به نادیده گرفتن کیفیت نشود؛ چرا که بسیاری از گیت‌وی‌های هوش مصنوعی به دلیل عدم ارزیابی کیفیت در محیط‌های عملیاتی شکست می‌خورند.

برای یک توسعه‌دهنده، این یعنی کیف پولش دیگر به تعداد توکن‌ها وابسته نیست. برای یک سازمان، این به معنای آن است که داده‌های حساس هرگز شبکه داخلی را ترک نمی‌کنند و سد اصلی پذیرش مدل‌های زبانی در صنایع تحت نظارت برداشته می‌شود.

برای مقاوم‌سازی بیشتر این ساختار، باید الگوهای خاص احراز هویت و پیکربندی‌های محدودیت نرخ را بررسی کنید تا از اتمام منابع داخلی جلوگیری شود. چک‌لیست‌های سخت‌سازی امنیتی ما، پیکربندی‌های عینی برای این الگوها ارائه می‌دهند.

گام بعدی شما

  • استقرار اولاما و FastAPI را روی یک سرور لینوکسی با استفاده از systemd امتحان کنید.
  • برای امنیت بیشتر، یک لایه Nginx برای مدیریت گواهینامه‌های SSL اضافه کنید.
  • سیستم کشینگ با Redis را برای کاهش فشار روی GPU پیاده‌سازی کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این متدولوژی با حذف وابستگی به APIهای ابری، حریم خصوصی داده‌ها را تضمین کرده و هزینه‌های عملیاتی را به صفر می‌رساند. اعتبار این روش از قابلیت پیاده‌سازی سریع در محیط‌های درون‌سازمانی (On-premises) نشأت می‌گیرد.

تأثیر برای ایران

این روش برای توسعه‌دهندگان ایرانی که با محدودیت‌های پرداخت ارزی و تحریم APIهای خارجی روبرو هستند، بهترین مسیر برای ایجاد سرویس‌های هوش مصنوعی پایدار و رایگان در زیرساخت‌های داخلی است.

·نگاه ما
تحریریه دات‌هوش

جداسازی لایه مدیریت API از موتور استنتاج، مدل‌های محلی را از حالت «ابزار تک‌کاربره» به «زیرساخت سازمانی» ارتقا می‌دهد. این رویکرد نشان می‌دهد که چالش اصلی در پذیرش AI محلی، نه قدرت مدل‌ها، بلکه نبود لایه‌های حاکمیتی (Governance) مانند احراز هویت و نظارت بر مصرف است. در واقع، FastAPI در اینجا نقش یک لایه انتزاع (Abstraction) را ایفا می‌کند که اجازه می‌دهد مدل‌های زیرین بدون تغییر در کلاینت‌ها، جایگزین یا به‌روزرسانی شوند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.