استقرار ایجنتهای هوش مصنوعی بر روی سرورهای شخصی (Self-Hosting) همواره یکی از جذابترین و در عین حال چالشبرانگیزترین حوزهها برای توسعهدهندگان است. در این مقاله به بررسی معماری گیتوی هوشمند ۹روتر (9Router) و نحوه اتصال آن به هسته هرمس میپردازیم.
چرا به یک گیتوی لایه استنتاج نیاز داریم؟
هنگامی که ایجنتها تسکهای سنگین مانند برنامهنویسی یا تحلیل لاگ را پیش میبرند، مصرف توکن به سرعت افزایش مییابد و احتمال مواجهه با خطای Rate-Limit (محدودیت نرخ درخواست ۴۲۹) یا افت کیفیت پاسخها وجود دارد. گیتوی ۹روتر به عنوان یک لایه توزیع بار هوشمند عمل میکند:
- توزیع هوشمند درخواستها بین چندین حساب و مدل موازی
- فالبک خودکار در صورت قطعی هر یک از کلیدها به مدل آماده بعدی
- کشینگ لایهای پرامپتها جهت کاهش بیش از ۶۰ درصدی هزینهها
- ایجاد اندپوینت استاندارد سازگار با OpenAI API
نمونه کانفیگ استاندارد هرمس برای اتصال به ۹روتر
برای اتصال کلاینت هرمس به سرور محلی ۹روتر کافیست فایل تنظیمات را به شکل زیر پیکربندی نمایید:
model:
default: MrHermes
provider: custom:9router
custom_providers:
- name: 9router
base_url: http://127.0.0.1:20128/v1
api_key: sk-9router-admin
discover_models: false
models:
- id: MrHermes
label: MrHermes
terminal:
backend: local
timeout: 180
با پیادهسازی این الگو، بدون نگرانی از قطعیهای ناگهانی یا ابطال توکنها، میتوانید از بالاترین پایداری در محیط توسعه خود لذت ببرید.
سلام، در رابطه با موضوع «نصب ایجنت هرمس روی سرور لینوکس»، بهترین روش پیادهسازی و تنظیم آن در مستر هرمس به چه صورت است؟
درود بر شما 🤍 برای موضوع «نصب ایجنت هرمس روی سرور لینوکس»، تمامی تنظیمات به صورت پیشفرض در هسته هرمس ایزوله شده است. شما میتوانید از طریق پنل کاربری یا دستورات خط فرمان ایجنت، این بخش را پیکربندی و اجرا نمایید.
سلام و خسته نباشید. هنگام ارسال درخواستهای همزمان از ایجنتهای خودمختار به سرویس سلفهاست، مرتباً با خطای Too Many Requests مواجه میشوم. روش اصولی برای رفع ارور 429 در 9router به چه صورت است و چطور میتوانم سقف محدودیت نرخ درخواست و همزمانی را بهینهسازی کنم؟
درود بر شما همراه گرامی مستر هرمس؛
بروز ارور 429 (Too Many Requests) در ۹روتر (9router) معمولاً به سه دلیل عمده رخ میدهد: اعمال محدودیت نرخ درخواست پیشفرض در خود روتر، پر شدن ظرفیت همزمانی بکاند پردازشی محلی (نظیر Ollama یا vLLM)، یا بازتاب خطای سرویسدهنده بالادستی (Upstream Provider). برای رفع ارور 429 در 9router مراحل زیر را گامبهگام پیادهسازی فرمایید:
۱. بررسی منشأ خطا از طریق لاگها:
ابتدا با دستور docker logs -f 9router لاگهای زنده کانتینر را بررسی کنید. اگر خطا همراه با متنی نظیر «rate limit exceeded by internal router policy» ثبت شده باشد، محدودیت از سمت خود ۹روتر است. اما اگر پاسخ دریافتی عیناً از مدلهای خارجی یا سرویس متصل پاس داده شده باشد، باید محدودیت سرویس مقصد را بررسی کنید.
۲. افزایش سقف نرخ درخواست در فایل تنظیمات (config.yaml):
چنانچه ماژول Rate Limiter داخلی فعال است، پارامترهای تعداد مجاز درخواست در دقیقه و همزمانی را افزایش دهید. به عنوان مثال:
rate_limit:
enabled: true
max_requests_per_minute: 120
max_concurrent_requests: 15
اگر درخواستها در یک شبکه محلی امن ردوبدل میشوند، میتوانید پارامتر enabled را روی false قرار دهید تا گلوگاه داخلی کاملاً برداشته شود.
۳. بهینهسازی پردازش موازی در بکاند محلی:
اگر 9router درخواستها را به مدلی روی سیستم خودتان هدایت میکند، ممکن است ارور 429 ناشی از ریجکت شدن درخواستها به خاطر کمبود VRAM باشد. در صورت استفاده از Ollama، متغیر محیطی OLLAMA_NUM_PARALLEL=4 و OLLAMA_MAX_QUEUE=512 را تنظیم کنید تا صف پردازش درخواستهای همزمان گسترش یابد.
۴. استفاده از استراتژی بار متوازن و کلیدهای چرخشی (Fallback & Key Rotation):
در فایل کانفیگ ۹روتر، برای هر مسیر یا مدل چندین منبع جایگزین (Upstream) تعریف کنید تا در صورت برخورد با لیمیت یکی از مدلها یا ارائهدهندگان، درخواست بلافاصله و بدون خطا به سرور یا کلید API بعدی هدایت شود.
۵. پیادهسازی Exponential Backoff در سمت کلاینت ایجنتها:
ایجنتهای محلی ممکن است در چرخههای فیدبک، درخواستها را بدون وقفه ارسال کنند. در کد ایجنت حتماً مکانیزم تلاش مجدد با وقفه تصاعدی (Exponential Backoff with Jitter) را فعال کنید تا ارسال درخواست در صورت بروز شلوغی با تاخیر کنترلشده انجام گیرد.
در صورتی که با اعمال این تنظیمات کماکان مشکل پابرجاست، ساختار فایل کانفیگ و لاگ خطای دریافتی را در بخش دیدگاههای مقاله مطرح فرمایید تا تیم فنی شما را راهنمایی کند.
سلام، ما در سازمان به دلیل الزامات حفظ حریم خصوصی دادهها قصد داریم پردازشها را روی سرورهای داخلی بیاوریم. مراحل اصولی و نیازمندیهای راه اندازی سلف هاستینگ ایجنت هوش مصنوعی چیست و چطور میتوانیم با کمک ابزارهایی مثل ۹روتر ترافیک ورودی را بین مدلهای محلی مدیریت کنیم؟
درود بر شما همراه گرامی مستر هرمس. تیم پشتیبانی فنی مستر هرمس در کنار شماست تا ساختار و نیازمندیهای این پیادهسازی را بررسی کنیم.
برای استقرار و میزبانی محلی (سلفهاستینگ) ایجنتهای هوش مصنوعی، نیاز به یک معماری سهلایه دارید: موتور استنتاج مدل (Inference Engine)، لایه مدیریت و توزیع بار (Routing Layer) و فریمورک اجرایی ایجنت (Agent Framework).
مراحل پیادهسازی گامبهگام:
۱. استقرار موتور اجرای مدلهای محلی:
ابتدا باید ابزارهایی نظیر vLLM (برای سرویسدهی پرسرعت و پربازده سازمانی) یا Ollama (برای پیادهسازی سریعتر) را مستقر کنید. برای نمونه، اجرای Ollama از طریق داکر به شکل زیر انجام میشود:
docker run -d –gpus=all -v ollama:/root/.ollama -p 11434:11434 –name ollama ollama/ollama
سپس مدلهای پایه مانند Llama 3 یا Mistral را دریافت کنید:
docker exec -it ollama ollama run llama3:8b
۲. راهاندازی لایه ۹روتر (مسیریابی هوشمند):
استفاده از ۹روتر به عنوان یک واسط هوشمند میان ایجنت و موتورهای پردازشی عمل میکند. این روتر با استاندارد API سازگار با OpenAI فعالیت میکند و مزایای زیر را در اختیار شما میگذارد:
– مسیریابی تطبیقی: ارسال تسکهای سبک به مدلهای کوچکتر (مانند مدلهای ۷B) و ارجاع درخواستهای پیچیده به مدلهای سنگینتر.
– کش معنایی (Semantic Caching): کاهش بار سختافزار سرور با ذخیره پاسخ درخواستهای تکراری.
– مدیریت خطای خودکار (Fallback): در صورتی که یک مدل محلی با کمبود رم یا خطا مواجه شود، درخواست به مدل آمادهبهخدمت بعدی هدایت میشود.
۳. اتصال چارچوب ایجنت:
در کدهای برنامهنویسی ایجنت (مثلاً با استفاده از CrewAI، AutoGen یا LangGraph)، تنها کافی است آدرس Base URL را به پورت خروجی ۹روتر متصل کنید:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(base_url=”http://localhost:8000/v1″, api_key=”local-key”)
۴. بهینهسازی حافظه و مانیتورینگ:
حتماً از ابزارهای نظارتی نظیر Prometheus و Grafana برای پایش مصرف حافظه VRAM کارت گرافیک و زمان تاخیر (Latency) استفاده کنید. همچنین برای کنترل دسترسیهای داخلی، پورتها را پشت یک ریورس پروکسی نظیر Nginx به همراه احراز هویت داخلی قرار دهید.
در صورت نیاز به نمونه کانفیگ اختصاصی یا رفع اشکال در اتصال اندپوینتها، کارشناسان مستر هرمس آماده پاسخگویی به شما هستند.
سلام، من در حال راهاندازی ربات اختصاصی برای ایجنتهای محلی روی سرور داخلی هستم اما به دلیل فیلترینگ و محدودیتهای شبکه، ارسال و دریافت پیامها با خطا مواجه میشود. روش دقیق اتصال کلودفلر ورکر به عنوان رله تلگرام به چه صورت است و چطور میتوانم درخواستهای API را از طریق آن هدایت کنم؟
درود بر شما کاربر گرامی،
استفاده از سرویس Cloudflare Workers یکی از بهینهترین، سریعترین و امنترین راهکارها برای ایجاد ریورس پروکسی (Reverse Proxy) جهت برقراری ارتباط با API تلگرام است. این روش بهویژه در محیطهای سلفهاستینگ و استقرار ایجنتهای محلی (مانند سازوکار ۹روتر) مانع از قطعی ارتباط سرور با سرورهای اصلی تلگرام میشود.
برای راهاندازی این رله، مراحل زیر را دنبال کنید:
۱. ساخت ورکر در کلودفلر:
وارد پنل کلودفلر خود شوید و به بخش Workers & Pages بروید. روی Create Application و سپس Create Worker کلیک کنید. نامی دلخواه انتخاب کرده و دکمه Deploy را بزنید.
۲. درج کد رله (Reverse Proxy):
روی Edit code کلیک کرده و کد پیشفرض را با قطعه کد سبک زیر جایگزین کنید:
export default {
async fetch(request) {
const url = new URL(request.url);
url.host = ‘api.telegram.org’;
const newRequest = new Request(url, {
method: request.method,
headers: request.headers,
body: request.body
});
return fetch(newRequest);
}
};
پس از جایگذاری، روی Deploy کلیک کنید تا ورکر فعال شود.
۳. اتصال به ربات یا ایجنت محلی:/sendMessage
اکنون آدرس دامنه اختصاص داده شده به ورکر (مثلاً your-worker.your-subdomain.workers.dev) دقیقاً به عنوان آینه api.telegram.org عمل میکند:
– برای ارسال درخواستهای معمول به جای آدرس api.telegram.org از دامنه ورکر خود استفاده کنید:
https://your-worker.workers.dev/bot
– در صورتی که از Webhook استفاده میکنید، کافی است در زمان ثبت هوک آدرس مقصد سرور محلی خود را تنظیم کنید یا برای ایجنتها، متغیر محیطی مربوط به Base URL تلگرام را به نشانی این ورکر تغییر دهید.
نکته امنیتی: پیشنهاد میشود در صورت عمومی بودن ورکر، یک توکن احراز هویت سفارشی در هدرها بررسی کنید تا ترافیک ورودی به ورکر تنها از سمت سرورهای مجاز شما پذیرفته شود.
اگر در فرایند اتصال ورکر به ۹روتر یا پیکربندی ایجنتها با ابهامی روبرو شدید، در ادامه همین بخش پاسخگوی شما هستیم.
با احترام،
تیم پشتیبانی فنی مستر هرمس
سلام و درود، من هرمس ایجنت را طبق آموزشهای سلفهاستینگ روی سرور محلی با استفاده از ۹روتر مستقر کردهام. در حال حاضر نیاز دارم قابلیتهای شخصیسازیشدهای مثل اتصال به دیتابیس داخلی را اضافه کنم؛ نحوه تعریف مهارت های جدید skill در هرمس ایجنت به چه شکل است و فایلهای پیکربندی و کدهای اجرایی آن چگونه باید تنظیم شوند؟
درود و احترام همراه گرامی مستر هرمس. برای توسعه و افزودن مهارتهای جدید (Custom Skills) به هرمس ایجنت در محیط سلفهاستینگ و با هدایت روتر ۹روتر، فرایند به صورت ماژولار و بر پایه قابلیت استاندارد فراخوانی ابزار (Function Calling) صورت میپذیرد. مراحل پیادهسازی به شرح زیر است:
۱. ایجاد تابع منطق مهارت (Python Function):
در دایرکتوری اصلی پروژه وارد پوشه `skills/` شوید و یک فایل پایتونی جدید برای ابزار خود ایجاد کنید. منطق اجرایی باید به عنوان یک تابع مشخص تعریف شود:
“`python
def execute_db_query(query: str) -> dict:
# منطق برقراری ارتباط با پایگاه داده و واکشی اطلاعات
result = {“status”: “success”, “rows”: [“داده آزمایشی ۱”, “داده آزمایشی ۲”]}
return result
“`
۲. تعریف مشخصات ساختار مهارت (JSON Schema):
برای اینکه روتر ۹روتر و مدل زبانی متوجه کارکرد و ورودیهای مهارت شوند، باید شمای ابزار را در همان ماژول یا در قالب فایل کانفیگ توصیف کنید:
“`json
{
“name”: “execute_db_query”,
“description”: “اجرای کوئریهای متنی روی پایگاه داده داخلی جهت بازیابی گزارشها”,
“parameters”: {
“type”: “object”,
“properties”: {
“query”: {
“type”: “string”,
“description”: “عبارت یا کوئری مورد نظر برای جستجو در پایگاه داده”
}
},
“required”: [“query”]
}
}
“`
۳. ثبت مهارت در تنظیمات ۹روتر (Registration):
فایل پیکربندی ایجنت (`config.yaml`) را باز کنید و مهارت تعریفشده را به فهرست ابزارهای فعال بیفزایید:
“`yaml
tools:
custom_skills:
– name: execute_db_query
entrypoint: skills.db_handler:execute_db_query
enabled: true
“`
۴. بارگذاری مجدد و بررسی عملکرد:
پس از ذخیره تغییرات، سرویس ایجنت را ریاستارت کنید تا روتر متادیتای جدید را ثبت کند:
`docker compose restart hermes-agent` یا `systemctl restart hermes-agent`
سپس یک پیام تستی در زمینه پرسش از دیتابیس بفرستید تا لاگهای ۹روتر را مشاهده کرده و از اجرای خودکار این مهارت اطمینان حاصل کنید. در صورت مواجهه با هرگونه ابهام در قالببندی پارامترها، تیم پشتیبانی مستر هرمس همراه شما خواهد بود.