AnythingLLM چیست؟ آموزش نصب و اتصال به API درواره
AnythingLLM یک نرمافزار متنباز برای ساخت دستیار هوش مصنوعی، گفتوگو با اسناد و راهاندازی سیستم RAG است. در این آموزش، نصب نسخه دسکتاپ و Docker، اتصال AnythingLLM به API درواره، ساخت Workspace و ایجاد دستیار فارسی مبتنی بر فایلهای PDF و Word را مرحلهبهمرحله یاد میگیرید.
AnythingLLM یکی از ابزارهای متنباز و پرطرفدار برای ساخت دستیار هوش مصنوعی، چت با فایلهای PDF و Word، پیادهسازی RAG و استفاده از مدلهای زبانی مختلف است.
با استفاده از این برنامه میتوانید بدون طراحی یک رابط کاربری و زیرساخت کامل از ابتدا، محیطی شبیه چتباتهای هوش مصنوعی بسازید که به اسناد اختصاصی شما دسترسی دارد. AnythingLLM قابلیت اتصال به مدلهای محلی و سرویسهای ابری سازگار با OpenAI را نیز فراهم میکند.
این ویژگی به کاربران ایرانی اجازه میدهد AnythingLLM را به API درواره متصل کنند و از مدلهای مختلف هوش مصنوعی با یک کلید API، پرداخت ریالی و آدرس پایه یکپارچه استفاده کنند.
در این راهنما یاد میگیرید:
- AnythingLLM چیست و چه کاربردی دارد؟
- تفاوت نسخه Desktop و Docker چیست؟
- چگونه AnythingLLM را نصب کنیم؟
- چگونه آن را به API درواره متصل کنیم؟
- چگونه یک چتبات فارسی مبتنی بر اسناد بسازیم؟
- Embedding و پایگاه داده برداری چه نقشی دارند؟
- چگونه Workspace و پرامپت سیستمی را تنظیم کنیم؟
- چگونه از API داخلی AnythingLLM در نرمافزار خود استفاده کنیم؟
- خطاهای رایج اتصال به مدل را چگونه برطرف کنیم؟
AnythingLLM چیست؟
AnythingLLM یک برنامه جامع هوش مصنوعی است که امکان اتصال مدل زبانی، اسناد، پایگاه داده برداری و ابزارهای Agent را در یک محیط گرافیکی فراهم میکند.
این برنامه توسط Mintplex Labs توسعه داده شده و کد منبع آن در GitHub منتشر شده است. AnythingLLM روی ویندوز، macOS و لینوکس قابل نصب است و نسخه Self-hosted آن را میتوان با Docker روی سرور اجرا کرد.
بر اساس مخزن رسمی AnythingLLM در GitHub، این نرمافزار از قابلیتهایی مانند گفتوگو با اسناد، Workspaceهای مستقل، عاملهای هوش مصنوعی، مدلهای مختلف، پایگاههای داده برداری و API توسعهدهندگان پشتیبانی میکند.
به زبان ساده، AnythingLLM لایههای موردنیاز برای ساخت یک دستیار مبتنی بر اسناد را کنار هم قرار میدهد:
- رابط کاربری چت
- مدل زبانی یا LLM
- مدل Embedding
- پایگاه داده برداری
- پردازش و قطعهبندی اسناد
- Workspace
- مدیریت تاریخچه گفتوگو
- API توسعهدهندگان
- قابلیتهای Agent و ابزارها
AnythingLLM چه کاربردهایی دارد؟
AnythingLLM را میتوان برای پروژههای شخصی، سازمانی و نرمافزاری مختلف استفاده کرد.
چت با فایل PDF
میتوانید یک یا چند فایل PDF را وارد کنید و درباره محتوای آنها سؤال بپرسید. برای مثال، یک دفترچه راهنمای محصول را وارد کرده و بپرسید:
شرایط استفاده از ضمانت این محصول چیست؟
ساخت دستیار دانش سازمانی
اسناد داخلی، دستورالعملها، فرایندها و فایلهای آموزشی را در یک Workspace قرار دهید تا کارکنان بتوانند پاسخ پرسشهای خود را از همان منابع دریافت کنند.
دستیار پشتیبانی مشتریان
راهنمای محصولات و پرسشهای متداول را وارد کنید و دستیار پاسخگویی اولیه بسازید.
تحلیل قرارداد و گزارش
AnythingLLM میتواند بندهای مرتبط را از میان اسناد بازیابی و با کمک مدل زبانی خلاصه کند. نتیجه مدل همچنان باید با متن اصلی سند بررسی شود.
دستیار آموزشی
استاد یا مدرس میتواند جزوهها و منابع آموزشی را وارد کند و یک دستیار برای توضیح مفاهیم، طراحی تمرین و پاسخگویی به سؤالات بسازد.
چتبات سایت
نسخه Docker امکان ساخت ویجت گفتوگو برای وبسایت را ارائه میکند. بنابراین میتوان یک Workspace را بهصورت چتبات در سایت نمایش داد.
اتصال به نرمافزار اختصاصی
AnythingLLM دارای API توسعهدهندگان است. از طریق این API میتوان Workspace را مدیریت کرد، اسناد را وارد کرد و پیام کاربر را به یک Workspace فرستاد.
AnythingLLM چگونه کار میکند؟
برای درک نحوه کار AnythingLLM باید تفاوت میان مدل زبانی، Embedding و پایگاه داده برداری را بدانیم.
مدل زبانی
مدل زبانی پاسخ نهایی را تولید میکند. این مدل میتواند از طریق API درواره در اختیار AnythingLLM قرار گیرد.
مدل Embedding
مدل Embedding متن را به بردارهای عددی تبدیل میکند. این بردارها برای پیدا کردن بخشهای مرتبط سند استفاده میشوند.
پایگاه داده برداری
بردارهای ساختهشده در یک پایگاه داده برداری ذخیره میشوند. هنگام مطرحشدن سؤال، سیستم بخشهای نزدیکتر به مفهوم پرسش را بازیابی میکند.
Workspace
Workspace محیط مستقلی است که اسناد، تنظیمات، پرامپت و تاریخچه گفتوگوی مربوط به یک کاربرد را در خود نگه میدارد.
برای مثال میتوانید Workspaceهای زیر را بسازید:
- راهنمای محصولات
- مستندات فنی
- آموزش کارکنان
- قوانین فروش
- محتوای دوره آموزشی
فرایند RAG
در سیستم RAG، معمولاً این مراحل انجام میشوند:
- سند وارد AnythingLLM میشود.
- متن از سند استخراج میشود.
- متن به قطعههای کوچکتر تقسیم میشود.
- هر قطعه با مدل Embedding به بردار تبدیل میشود.
- بردارها در پایگاه داده ذخیره میشوند.
- سؤال کاربر نیز به بردار تبدیل میشود.
- مرتبطترین قطعهها پیدا میشوند.
- سؤال همراه با قطعههای بازیابیشده برای مدل زبانی ارسال میشود.
- مدل پاسخ نهایی را تولید میکند.
AnythingLLM تمام سند را در هر درخواست برای مدل ارسال نمیکند. طبق مستندات رسمی RAG در AnythingLLM، سیستم بخشهای مرتبط سند را از پایگاه داده برداری بازیابی و به مدل اضافه میکند.
تفاوت AnythingLLM Desktop و Docker
AnythingLLM دو روش اصلی برای نصب دارد.
| ویژگی | نسخه Desktop | نسخه Docker |
|---|---|---|
| نصب سریع برای یک کاربر | بله | نیازمند Docker |
| استفاده روی ویندوز، macOS و لینوکس | بله | بله |
| رابط تحت وب | خیر | بله |
| استفاده همزمان چند کاربر | خیر | بله |
| مدیریت کاربران | خیر | بله |
| ساخت ویجت چت برای سایت | خیر | بله |
| API توسعهدهندگان | بله | بله |
| اتصال به مدلهای مختلف | بله | بله |
| پشتیبانی از RAG و اسناد | بله | بله |
| مناسب استفاده شخصی | بسیار مناسب | امکانپذیر |
| مناسب تیم و سازمان | محدود | مناسب |
مستندات نصب AnythingLLM نسخه Desktop را برای استفاده شخصی و نصب ساده پیشنهاد میکنند. نسخه Docker برای استفاده تحت وب، چندکاربره و اتصال چتبات به سایت مناسبتر است.
پیشنیازهای اتصال AnythingLLM به درواره
برای اتصال به مدلهای هوش مصنوعی از طریق درواره به موارد زیر نیاز دارید:
- حساب کاربری درواره
- کلید API
- شناسه مدل موردنظر
- نصب AnythingLLM
- اتصال اینترنت برای فراخوانی مدل
آدرس پایه API درواره عبارت است از:
https://api.darvareh.ir/v1
شناسه مدل را باید از فهرست مدلهای فعلی درواره انتخاب کنید. از نوشتن یک شناسه فرضی خودداری کنید؛ زیرا مدلهای قابلدسترسی و شناسه آنها ممکن است تغییر کنند.
آموزش نصب AnythingLLM Desktop
نسخه Desktop سادهترین گزینه برای شروع است.
مرحله اول: دریافت برنامه
به سایت رسمی AnythingLLM مراجعه کرده و نسخه مناسب سیستمعامل خود را دریافت کنید.
این برنامه برای سیستمعاملهای زیر ارائه میشود:
- Windows
- macOS
- Linux
مرحله دوم: نصب برنامه
فایل نصب را اجرا کنید و مراحل معمول نصب را انجام دهید. پس از بازکردن برنامه، راهنمای اولیه برای انتخاب مدل و تنظیم سرویس نمایش داده میشود.
مرحله سوم: انتخاب ارائهدهنده مدل
اگر در مراحل اولیه گزینه موردنظر را پیدا نکردید، میتوانید پیکربندی را رد کرده و بعداً از بخش تنظیمات، ارائهدهنده مدل را مشخص کنید.
آموزش نصب AnythingLLM با Docker
نسخه Docker برای اجرا روی کامپیوتر، سرور یا شبکه داخلی مناسب است.
ابتدا جدیدترین Image را دریافت کنید:
docker pull mintplexlabs/anythingllm:latest
یک پوشه برای نگهداری اطلاعات بسازید:
mkdir -p "$PWD/anythingllm-storage"
touch "$PWD/anythingllm-storage/.env"
سپس کانتینر را اجرا کنید:
docker run -d \
--name anythingllm \
-p 3001:3001 \
--cap-add SYS_ADMIN \
-v "$PWD/anythingllm-storage:/app/server/storage" \
-v "$PWD/anythingllm-storage/.env:/app/server/.env" \
-e STORAGE_DIR="/app/server/storage" \
mintplexlabs/anythingllm:latest
پس از اجرا، آدرس زیر را در مرورگر باز کنید:
http://localhost:3001
مطابق راهنمای رسمی نصب Docker، اتصال پوشه میزبان به مسیر /app/server/storage برای باقیماندن تنظیمات و اطلاعات پس از راهاندازی مجدد کانتینر ضروری است.
برای مشاهده وضعیت کانتینر از دستور زیر استفاده کنید:
docker ps
برای مشاهده گزارشهای برنامه نیز میتوانید این دستور را اجرا کنید:
docker logs -f anythingllm
آموزش اتصال AnythingLLM به API درواره
API درواره با ساختار OpenAI سازگار است. AnythingLLM نیز گزینهای با عنوان OpenAI (Generic) برای اتصال به سرویسهای سازگار با OpenAI دارد.
طبق مستندات OpenAI Generic در AnythingLLM، این گزینه برای ارائهدهندگانی طراحی شده است که درخواست و پاسخ سازگار با OpenAI ارائه میکنند.
مرحله اول: بازکردن تنظیمات مدل
در AnythingLLM وارد بخش تنظیمات شوید و مسیر مربوط به انتخاب مدل زبانی را باز کنید. عنوان گزینهها ممکن است بر اساس نسخه کمی متفاوت باشد، اما معمولاً باید بخش زیر را پیدا کنید:
Settings → AI Providers → LLM
مرحله دوم: انتخاب OpenAI Generic
از فهرست ارائهدهندگان، گزینه زیر را انتخاب کنید:
OpenAI (Generic)
گزینه معمولی OpenAI برای سرویس مستقیم همان ارائهدهنده طراحی شده است. برای اتصال به درواره باید گزینه Generic یا سازگار با OpenAI را انتخاب کنید تا امکان تعیین آدرس پایه وجود داشته باشد.
مرحله سوم: واردکردن آدرس پایه
در فیلد Base URL یا Base Path مقدار زیر را قرار دهید:
https://api.darvareh.ir/v1
اگر رابط برنامه فیلد جداگانهای برای مسیر درخواست دارد، ابتدا فقط همین آدرس پایه را آزمایش کنید. مسیر کامل Chat Completions معمولاً از ترکیب آدرس پایه و مسیر استاندارد ساخته میشود:
https://api.darvareh.ir/v1/chat/completions
در فیلد Base URL نباید /chat/completions را اضافه کنید؛ مگر اینکه نسخه برنامه صراحتاً Endpoint کامل را درخواست کند.
مرحله چهارم: واردکردن کلید API
کلید دریافتشده از درواره را در فیلد API Key وارد کنید:
YOUR_DARVAREH_API_KEY
مرحله پنجم: واردکردن شناسه مدل
در قسمت Model Name یا Model ID، شناسه دقیق یکی از مدلهای موجود در درواره را بنویسید:
YOUR_MODEL_ID
شناسه مدل به حروف، خط تیره، نقطه و نسخه حساس است. آن را دقیقاً مطابق مستندات یا پنل درواره وارد کنید.
مرحله ششم: تعیین Context Window
اگر AnythingLLM از شما اندازه Context Window را درخواست کرد، مقدار پشتیبانیشده توسط همان مدل را وارد کنید.
Context Window مشخص میکند چه مقدار از تاریخچه گفتوگو، پرامپت و متن بازیابیشده میتواند در یک درخواست قرار گیرد. واردکردن عددی بزرگتر از ظرفیت واقعی مدل ممکن است باعث خطا شود.
مرحله هفتم: ذخیره و آزمایش
تنظیمات را ذخیره کنید و یک Workspace آزمایشی بسازید. سپس پیام کوتاهی مانند نمونه زیر ارسال کنید:
سلام. در یک جمله خودت را معرفی کن.
اگر پاسخ دریافت شد، اتصال AnythingLLM به API درواره برقرار شده است.
تنظیم پیشنهادی اتصال
| فیلد | مقدار |
|---|---|
| LLM Provider | OpenAI (Generic) |
| Base URL | https://api.darvareh.ir/v1 |
| API Key | کلید API درواره |
| Model ID | شناسه دقیق مدل انتخابشده |
| Temperature | برای دستیار اسناد بین 0.1 تا 0.3 |
| Context Window | مطابق مشخصات مدل |
| Max Tokens | متناسب با طول پاسخ موردنیاز |
نام دقیق بعضی فیلدها ممکن است میان نسخههای AnythingLLM تغییر کند.
تنظیم Embedding در AnythingLLM
اتصال مدل زبانی بهتنهایی برای گفتوگوی معمولی کافی است؛ اما برای چت با اسناد به مدل Embedding نیز نیاز دارید.
مدل زبانی و مدل Embedding دو نقش متفاوت دارند:
| بخش | وظیفه |
|---|---|
| LLM | تولید پاسخ نهایی |
| Embedding Model | تبدیل متن به بردار |
| Vector Database | ذخیره و جستوجوی بردارها |
سادهترین گزینه برای شروع، استفاده از Embedding داخلی AnythingLLM است.
مسیر تنظیمات معمولاً به شکل زیر است:
Settings → AI Providers → Embedder
سپس گزینه پیشفرض AnythingLLM را انتخاب کنید:
AnythingLLM Default
مخزن رسمی AnythingLLM، مدل داخلی برنامه و APIهای عمومی سازگار با OpenAI را در میان گزینههای پشتیبانیشده برای Embedding معرفی میکند.
برای شروع پیشنهاد میشود:
- مدل گفتوگو از طریق API درواره اجرا شود.
- Embedding با ارائهدهنده پیشفرض AnythingLLM انجام شود.
- پایگاه داده برداری پیشفرض برنامه حفظ شود.
این ترکیب به تنظیمات کمتری نیاز دارد و برای آزمایش اولیه RAG مناسب است.
اگر درواره مدل Embedding ارائه میکند و میخواهید از آن استفاده کنید، باید شناسه دقیق یک مدل مخصوص Embedding را انتخاب کنید. شناسه یک مدل چت را نباید در قسمت Embedding وارد کرد.
ساخت اولین Workspace
پس از تنظیم مدل، یک Workspace جدید ایجاد کنید.
برای مثال نام آن را به شکل زیر قرار دهید:
راهنمای محصولات فروشگاه
هر Workspace بهتر است فقط برای یک حوزه مشخص استفاده شود. قرار دادن اسناد کاملاً نامرتبط در یک فضای مشترک میتواند دقت بازیابی را کاهش دهد.
برای نمونه:
| Workspace | اسناد مناسب |
|---|---|
| پشتیبانی محصولات | دفترچهها، شرایط ضمانت و پرسشهای متداول |
| منابع انسانی | آییننامه، فرایند مرخصی و آموزش کارکنان |
| فروش | کاتالوگ، قیمتنامه و معرفی خدمات |
| آموزش | جزوه، کتاب و فایل جلسات |
| مستندات فنی | راهنمای API، معماری و دستورالعمل استقرار |
واردکردن اسناد به AnythingLLM
در Workspace، گزینه افزودن یا مدیریت اسناد را انتخاب کنید و فایلهای موردنظر را بارگذاری کنید.
AnythingLLM از چند نوع فایل رایج مانند PDF، TXT و DOCX پشتیبانی میکند. فهرست فرمتها ممکن است در نسخههای مختلف توسعه پیدا کند.
پس از بارگذاری، مطمئن شوید سند فقط Upload نشده و واقعاً به Workspace منتقل یا Embed شده است.
این دو مرحله یکسان نیستند:
- Upload: فایل دریافت و متن آن استخراج میشود.
- Embed: قطعههای متن به بردار تبدیل و به Workspace متصل میشوند.
اگر فایل فقط بارگذاری شده باشد، مدل هنگام پاسخگویی به محتوای آن دسترسی RAG نخواهد داشت.
مثال عملی: ساخت دستیار فارسی محصولات
فرض کنید یک فروشگاه اینترنتی میخواهد برای پاسخ به پرسشهای محصولات، یک دستیار هوش مصنوعی بسازد.
اسناد موردنیاز
فایلهای زیر را آماده میکنیم:
product-guide.pdf
warranty.docx
shipping-policy.txt
frequently-asked-questions.pdf
ساخت Workspace
یک Workspace با نام زیر میسازیم:
دستیار محصولات فروشگاه
واردکردن فایلها
تمام فایلها را Upload کرده و سپس به Workspace منتقل میکنیم تا عملیات Embedding انجام شود.
تنظیم پرامپت سیستمی
در بخش تنظیمات Workspace، پرامپت زیر را وارد میکنیم:
شما دستیار فارسی پشتیبانی محصولات فروشگاه هستید.
قواعد پاسخگویی:
- پاسخ را فقط بر اساس اطلاعات اسناد این Workspace ارائه کن.
- اگر پاسخ دقیق در اسناد وجود ندارد، صریح بگو اطلاعات کافی در منابع موجود نیست.
- نام محصول، مدت ضمانت، شرایط ارسال و اعداد را بدون تغییر نقل کن.
- پاسخها را کوتاه، روان و حرفهای بنویس.
- در صورت امکان، نام سند یا منبع پاسخ را ذکر کن.
- هیچ ویژگی، قیمت یا شرایطی را حدس نزن.
آزمایش دستیار
پرسشهای زیر را امتحان کنید:
مدت ضمانت محصول مدل X چقدر است؟
برای استفاده از ضمانت چه مدارکی لازم است؟
ارسال سفارش به شهرستان چند روز طول میکشد؟
تفاوت مدل X و مدل Y چیست؟
سؤالهای آزمایشی باید شامل حالتهای مختلف باشند:
- پاسخ بهوضوح در سند وجود دارد.
- پاسخ در چند فایل پراکنده است.
- عبارت سؤال با عبارت سند متفاوت است.
- پاسخ اصلاً در اسناد وجود ندارد.
- سؤال شامل نام یا عدد فارسی است.
- دو محصول نام مشابه دارند.
چگونه کیفیت پاسخ فارسی را بهتر کنیم؟
اسناد را پیش از بارگذاری پاکسازی کنید
سندی که متن آن ناقص، بههمریخته یا تکراری باشد، نتیجه RAG را ضعیف میکند.
موارد زیر را بررسی کنید:
- ترتیب درست پاراگرافها
- نمایش صحیح حروف فارسی
- حفظ اعداد و واحدها
- حذف سربرگهای تکراری
- حذف منوها و متنهای نامرتبط
- مشخصبودن عنوان هر بخش
فایلهای اسکنشده را OCR کنید
اگر PDF فقط شامل تصویر صفحات باشد، ممکن است متن قابلاستفادهای از آن استخراج نشود. ابتدا سند را با OCR به متن قابل جستوجو تبدیل کنید.
هر Workspace را محدود نگه دارید
اسناد فروش، منابع انسانی، فنی و حقوقی را بدون دلیل در یک Workspace قرار ندهید. هرچه دامنه مشخصتر باشد، بازیابی بخش مرتبط سادهتر خواهد بود.
عنوانهای روشن بنویسید
بهجای یک متن طولانی و بدون ساختار، از عنوانهای مشخص استفاده کنید:
شرایط ضمانت
مدت ضمانت
موارد خارج از ضمانت
مدارک موردنیاز
روش ثبت درخواست
پرامپت سیستمی را دقیق تنظیم کنید
مدل باید بداند در صورت نبود پاسخ چه کاری انجام دهد. عبارت زیر در بسیاری از دستیارهای مبتنی بر سند مفید است:
اگر پاسخ در منابع ارائهشده وجود ندارد، آن را حدس نزن.
Temperature را کاهش دهید
برای دستیار اسناد، دقت و وفاداری به منبع معمولاً مهمتر از خلاقیت است. مقدار پایینتر Temperature مانند 0.1 یا 0.2 میتواند خروجی باثباتتری ایجاد کند.
چند مدل را مقایسه کنید
یک مجموعه ثابت از پرسشها تهیه کنید و چند مدل را از نظر موارد زیر بسنجید:
- کیفیت زبان فارسی
- استخراج درست اعداد
- وفاداری به اسناد
- سرعت پاسخ
- هزینه
- توانایی اعلام نبود اطلاعات
- کیفیت استناد به منابع
تفاوت حالت Chat و Query در AnythingLLM
نام و رفتار حالتهای گفتوگو ممکن است بر اساس نسخه تغییر کند، اما معمولاً باید میان گفتوگوی عمومی و پاسخ مبتنی بر اسناد تفاوت قائل شوید.
در حالت عمومی، مدل میتواند بیشتر بر دانش قبلی خود تکیه کند. در حالت مبتنی بر سند، انتظار میرود بخشهای مرتبط Workspace بازیابی و همراه سؤال ارسال شوند.
برای دستیار سازمانی یا پاسخگویی درباره محصول، تنظیمات باید به شکلی باشد که محتوای Workspace اولویت داشته باشد.
آیا میتوان AnythingLLM را به سایت متصل کرد؟
بله. نسخه Docker از ویجت گفتوگوی قابلقرارگیری در وبسایت پشتیبانی میکند.
فرایند کلی به این شکل است:
- AnythingLLM را روی سرور اجرا کنید.
- یک Workspace مخصوص سایت بسازید.
- اسناد موردنیاز را وارد کنید.
- تنظیمات مدل درواره را انجام دهید.
- پرامپت Workspace را تنظیم کنید.
- پاسخها را با سؤالات واقعی آزمایش کنید.
- قابلیت Embeddable Chat را فعال کنید.
- کد ویجت را در سایت قرار دهید.
نسخه Desktop برای انتشار رابط چت روی وبسایت طراحی نشده است. برای این کاربرد باید از نسخه Docker استفاده کنید.
استفاده از API داخلی AnythingLLM
علاوه بر ویجت آماده، میتوانید رابط کاربری اختصاصی خود را به API داخلی AnythingLLM متصل کنید.
مستندات API هر نصب در مسیر زیر در دسترس است:
http://YOUR_ANYTHINGLLM_HOST:3001/api/docs
در نصب محلی:
http://localhost:3001/api/docs
طبق مستندات API AnythingLLM، این API میتواند برای مدیریت، بهروزرسانی، Embed کردن اسناد و گفتوگو با Workspaceها استفاده شود.
معماری پیشنهادی اتصال سایت
کاربر سایت
↓
رابط کاربری سایت
↓
سرور نرمافزار
↓
API داخلی AnythingLLM
↓
Workspace و بازیابی اسناد
↓
API درواره
↓
مدل هوش مصنوعی
در این معماری، رابط سایت مستقیماً با کلید API درواره ارتباط برقرار نمیکند. سرور درخواست را دریافت کرده و به AnythingLLM میفرستد.
نام Endpointها و ساختار درخواست را از صفحه /api/docs همان نسخه مشاهده کنید؛ زیرا API ممکن است در نسخههای آینده تغییر کند.
نمونه مفهومی با JavaScript
کد زیر ساختار کلی ارسال درخواست از سرور Node.js را نشان میدهد. مسیر دقیق Endpoint و فیلدهای درخواست را با مستندات نصب خود تطبیق دهید:
const response = await fetch(
`${process.env.ANYTHINGLLM_URL}/api/v1/workspace/${workspaceSlug}/chat`,
{
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.ANYTHINGLLM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
message: "شرایط ضمانت محصول مدل X چیست؟",
mode: "chat",
}),
}
);
if (!response.ok) {
throw new Error(`AnythingLLM request failed: ${response.status}`);
}
const result = await response.json();
console.log(result);
مقادیر محیطی:
ANYTHINGLLM_URL=http://localhost:3001
ANYTHINGLLM_API_KEY=YOUR_ANYTHINGLLM_API_KEY
کلید API داخلی AnythingLLM با کلید API درواره یکسان نیست:
| کلید | کاربرد |
|---|---|
| کلید API درواره | ارتباط AnythingLLM با مدل هوش مصنوعی |
| کلید API AnythingLLM | ارتباط نرمافزار شما با AnythingLLM |
انتخاب مدل مناسب برای AnythingLLM
مدل مناسب به نوع Workspace بستگی دارد.
| کاربرد | ویژگی مهم مدل |
|---|---|
| پرسش و پاسخ ساده | سرعت و هزینه پایین |
| تحلیل چند سند | Context Window مناسب |
| مستندات فارسی | درک و نگارش قوی فارسی |
| استخراج اطلاعات | دقت در نامها، اعداد و ساختار |
| پاسخ پشتیبانی | ثبات و پیروی از دستور |
| گزارش تحلیلی | توان استدلال و ترکیب منابع |
| استفاده پرترافیک | زمان پاسخ و هزینه قابلکنترل |
همیشه قویترین یا گرانترین مدل بهترین انتخاب نیست. یک مدل اقتصادی ممکن است برای پاسخگویی به سؤالات ساده محصولات کاملاً کافی باشد.
مدیریت هزینه API در AnythingLLM
پاسخها را کوتاه نگه دارید
در پرامپت Workspace مشخص کنید پاسخها مختصر باشند:
پاسخ را حداکثر در سه پاراگراف ارائه کن.
تعداد اسناد بازیابیشده را کنترل کنید
ارسال تعداد زیادی قطعه متن به مدل، طول ورودی و هزینه را افزایش میدهد. تعداد نتایج بازیابی را بر اساس آزمایش واقعی تنظیم کنید.
از مدل متناسب با وظیفه استفاده کنید
برای پرسشهای ساده از مدل سریعتر و اقتصادیتر استفاده کنید. مدلهای قویتر را برای تحلیلهای دشوار نگه دارید.
اسناد تکراری را حذف کنید
وجود چند نسخه از یک سند ممکن است باعث بازیابی قطعههای تکراری و افزایش اندازه ورودی شود.
پرسشهای واقعی را ارزیابی کنید
بهجای آزمایش با چند پرسش ساختگی، مجموعهای از سؤالات واقعی کاربران را جمعآوری کنید. این مجموعه برای انتخاب مدل و تنظیم RAG ارزش بیشتری دارد.
خطاهای رایج اتصال AnythingLLM به درواره
خطای Unauthorized یا 401
دلایل احتمالی:
- کلید API اشتباه است.
- کلید ناقص کپی شده است.
- فاصله اضافی ابتدا یا انتهای کلید وجود دارد.
- اعتبار یا دسترسی حساب کافی نیست.
راهحل:
- کلید را دوباره از پنل دریافت کنید.
- بدون کوتیشن و فاصله اضافی وارد کنید.
- وضعیت حساب و مصرف را بررسی کنید.
خطای Not Found یا 404
دلایل احتمالی:
- Base URL اشتباه است.
- مسیر
/v1حذف شده است. - Endpoint کامل در فیلد Base URL وارد شده است.
- شناسه مدل صحیح نیست.
مقدار پیشنهادی Base URL:
https://api.darvareh.ir/v1
خطای Model Not Found
شناسه مدل را دقیقاً مطابق فهرست مدلهای درواره وارد کنید. نام عمومی مدل الزاماً همان شناسه API نیست.
پاسخ خالی یا نامفهوم
موارد زیر را بررسی کنید:
- مدل از Chat Completions پشتیبانی میکند.
- مقدار Max Tokens بیش از حد پایین نیست.
- پرامپت سیستمی با سؤال تعارض ندارد.
- Context Window درست تنظیم شده است.
مدل از اسناد استفاده نمیکند
این موارد را بررسی کنید:
- سند فقط Upload نشده باشد.
- سند به Workspace منتقل و Embed شده باشد.
- متن PDF بهدرستی استخراج شده باشد.
- سؤال بهاندازه کافی مشخص باشد.
- سند مرتبط در همان Workspace قرار داشته باشد.
- مدل Embedding بدون خطا کار کند.
خطای Embedding
اگر مدل چت را در بخش Embedding وارد کرده باشید، پردازش سند ممکن است شکست بخورد. برای شروع، ارائهدهنده پیشفرض Embedding در AnythingLLM را انتخاب کنید.
اطلاعات بعد از راهاندازی مجدد Docker حذف میشوند
این مشکل معمولاً زمانی رخ میدهد که مسیر Storage به یک Volume دائمی متصل نشده باشد. مسیر زیر باید روی میزبان Mount شود:
/app/server/storage
کانتینر اجرا نمیشود
گزارشها را بررسی کنید:
docker logs anythingllm
مستندات رسمی اشاره میکنند که برخی سیستمهای قدیمی یا ماشینهای مجازی فاقد AVX2 ممکن است هنگام اجرای پایگاه داده برداری پیشفرض با خطا مواجه شوند.
چکلیست راهاندازی
پیش از استفاده واقعی، موارد زیر را بررسی کنید:
- AnythingLLM نصب و بهروز شده است.
- گزینه
OpenAI (Generic)انتخاب شده است. - Base URL درواره صحیح است.
- کلید API معتبر وارد شده است.
- شناسه مدل دقیق است.
- مدل Embedding تنظیم شده است.
- سند به Workspace منتقل و Embed شده است.
- پرامپت سیستمی فارسی نوشته شده است.
- پاسخ نبود اطلاعات آزمایش شده است.
- چند مدل با پرسشهای ثابت مقایسه شدهاند.
- در نسخه Docker، فضای ذخیرهسازی دائمی تنظیم شده است.
- هزینه و سرعت پاسخ اندازهگیری شده است.
مقایسه AnythingLLM با رابط چت معمولی
| قابلیت | رابط چت ساده | AnythingLLM |
|---|---|---|
| گفتوگو با مدل | بله | بله |
| مدیریت چند Workspace | معمولاً محدود | بله |
| چت با اسناد | نیازمند توسعه | داخلی |
| پایگاه داده برداری | نیازمند توسعه | قابل تنظیم |
| پردازش و Embedding اسناد | نیازمند توسعه | داخلی |
| Agent | بسته به برنامه | پشتیبانی میشود |
| API توسعهدهندگان | متغیر | بله |
| ویجت سایت | متغیر | در نسخه Docker |
| استفاده چندکاربره | متغیر | در نسخه Docker |
AnythingLLM جایگزین کامل توسعه نرمافزار اختصاصی نیست، اما میتواند زمان ساخت نمونه اولیه و دستیار مبتنی بر اسناد را بهشدت کاهش دهد.
پرسشهای متداول
آیا AnythingLLM رایگان است؟
نسخههای متنباز Desktop و Self-hosted در دسترس هستند. برخی خدمات یا قابلیتهای تجاری میتوانند شرایط جداگانه داشته باشند.
آیا AnythingLLM روی ویندوز اجرا میشود؟
بله. نسخه Desktop برای ویندوز، macOS و لینوکس ارائه شده است. نسخه Docker نیز روی سیستمهایی که Docker اجرا میکنند قابل استفاده است.
آیا AnythingLLM از زبان فارسی پشتیبانی میکند؟
رابط یا قابلیت اصلی آن محدود به یک زبان نیست. کیفیت پردازش فارسی بیشتر به مدل زبانی، مدل Embedding و کیفیت متن استخراجشده از اسناد بستگی دارد.
آیا میتوان AnythingLLM را به API درواره متصل کرد؟
بله. AnythingLLM از ارائهدهنده OpenAI (Generic) پشتیبانی میکند و API درواره نیز ساختار سازگار با OpenAI دارد. آدرس پایه اتصال عبارت است از:
https://api.darvareh.ir/v1
آیا برای چت با PDF به مدل Embedding نیاز داریم؟
بله. برای جستوجوی معنایی و بازیابی بخشهای مرتبط سند، متن باید به بردار تبدیل شود. میتوانید برای شروع از Embedding داخلی AnythingLLM استفاده کنید.
تفاوت Upload و Embed چیست؟
Upload فایل را دریافت و متن آن را استخراج میکند. Embed متن را به بردار تبدیل کرده و آن را در دسترس Workspace قرار میدهد.
آیا میتوان AnythingLLM را داخل سایت قرار داد؟
نسخه Docker از ویجت چت قابلقرارگیری در سایت پشتیبانی میکند. همچنین میتوانید با API داخلی AnythingLLM رابط اختصاصی بسازید.
آیا میتوان برای هر Workspace مدل جداگانه انتخاب کرد؟
بسته به نسخه و تنظیمات، میتوان بخشی از رفتار و مدل مورد استفاده Workspace را تغییر داد. تنظیمات مدل و Overrideهای Workspace را در نسخه نصبشده بررسی کنید.
آیا AnythingLLM فقط برای RAG است؟
خیر. این برنامه علاوه بر گفتوگو با اسناد، از قابلیتهایی مانند Agent، API توسعهدهندگان، ابزارهای مختلف و گردش کارهای هوش مصنوعی نیز پشتیبانی میکند.
جمعبندی
AnythingLLM راهی سریع برای ساخت دستیار هوش مصنوعی، چت با PDF و Word و پیادهسازی RAG بدون توسعه تمام اجزای سیستم از ابتدا است.
برای اتصال AnythingLLM به درواره کافی است در بخش LLM Provider، گزینه OpenAI (Generic) را انتخاب کرده و اطلاعات زیر را وارد کنید:
Base URL: https://api.darvareh.ir/v1
API Key: کلید API درواره
Model ID: شناسه مدل انتخابشده
برای یک راهاندازی ساده و قابلآزمایش میتوانید:
- نسخه Desktop را نصب کنید.
- مدل زبانی را به API درواره متصل کنید.
- Embedding پیشفرض AnythingLLM را فعال نگه دارید.
- یک Workspace با موضوع مشخص بسازید.
- اسناد فارسی را وارد و Embed کنید.
- پرامپت سیستمی دقیق بنویسید.
- پاسخها را با مجموعهای از پرسشهای واقعی ارزیابی کنید.
اگر به رابط تحت وب، چند کاربر، API یا ویجت چت سایت نیاز دارید، نسخه Docker انتخاب مناسبتری است.
برای مشاهده مدلها، شناسههای فعلی و جزئیات اتصال میتوانید به مستندات API درواره مراجعه کنید.
منابع
- مستندات رسمی AnythingLLM
- مخزن AnythingLLM در GitHub
- راهنمای نسخه Desktop
- راهنمای نصب AnythingLLM با Docker
- تنظیم OpenAI Generic
- مستندات API داخلی AnythingLLM
- مستندات API درواره
این مقاله صرفاً با هدف آموزش و اطلاعرسانی تهیه شده است. پیش از استفاده عملی، مستندات رسمی سرویسها و صفحه سلب مسئولیت را مطالعه کنید.