ساخت یک API محلی Genai با Docker Model Runner و Fastapi (قسمت 3)

در قسمت 2 ، من LLM را به صورت محلی با استفاده از Docker Model Runner اجرا کردم و از طریق یک اسکریپت پایتون به آن وصل شدم. در حال حاضر قسمت 3، ما آن منطق را درون یک می بندیم API REST FASTAPI – به ما یک پشتیبان واقعی و محلی Genai می دهیم که می توانیم از پست های پستچی ، برنامه های وب یا ابزار CLI استفاده کنیم.
بیایید شیرجه بزنیم.
هدف
- یک سرور FastAPI بسازید که به یک LLM محلی در حال اجرا (AI/MISTRAL) ارسال می کند
- افشای
/generate
نقطه پایانی - کانتینر API و Docker Model Runner را اجرا کنید در کنار هم
آنچه ما ساختیم
API REST (در حال اجرا در Docker) که از طریق یک Docker Model Runner صحبت می کند سازگار با اوپای نقطه پایانی شما سریع ارسال می کنید:
{
"prompt": ""Explain what is docker model runner in 3 points"
}
… و با یک پاسخ تولید شده توسط AI از یک مدل که 100 ٪ روی دستگاه شما اجرا می شود پاسخ می دهد.
ساختار پروژه
docker-llm-fastapi-app/
├── app/
│ └── main.py ← FastAPI logic
├── Dockerfile ← API container
├── docker-compose.yml ← Orchestration
├── README.md
کد اینجا را بررسی کنید Part3-Code
چگونه آن را اجرا کنیم
1. مدل را بکشید و شروع کنید
docker model pull ai/mistral
docker model run ai/mistral
اگر قبلاً مدل را از آموزش قبلی بیرون آورده اید ، در حال اجرا دوباره لازم نیست.
ممکن است ببینید:Interactive chat mode started. Type '/bye' to exit.
اشکالی ندارد – اگر TCP دسترسی فعال باشد ، API هنوز در پشت صحنه فعال است.
2. سرور FastAPI را شروع کنید
docker compose up --build
خواهید دید:
Uvicorn running on http://0.0.0.0:8000
با نقطه پایانی تماس بگیرید
درخواست ارسال از پستچی یا CURL:
POST http://localhost:8000/generate
Content-Type: application/json
{
"prompt": "What is MLOps in simple terms?"
}
خروجی:
{
"response": "MLOps, short for Machine Learning Operations, is a practice for collaboration and..."
}
چیزهایی که من یاد گرفتم
1. حالت تعاملی هنوز API را قادر می سازد
حتی اگر داکر می گوید:
Interactive chat mode started. Type '/bye' to exit.
… API HTTP هنوز در دسترس است localhost:12434
بشر تا زمانی که پشتیبانی TCP در دسک تاپ Docker فعال شود ، خوب کار می کند.
2 تماس اول کند است
درخواست اول 2 دقیقه پوند طول کشید. چرا؟
- مدل در حافظه بارگذاری می شود
- گرم کردن زمان اجرا به زمان نیاز دارد
اما پس از آن ، اعلان های آینده کمی بهتر است.
چه بعدی است
در قسمت 4 من قصد دارم یک الگوهای سریع + گزینه های نقش را بسازم که یک لایه عملی از مهندسی سریع به برنامه Genai شما اضافه می کند.
با ما همراه باشید!