LLM Observer Proxy: ثبت کامل ترافیک مدلها
خلاصهٔ کاملتر
تو معرفی این پروژه اومده که LLM Observer Proxy برای یه مشکل مشخص ساخته شده: وقتی یه ایجنت یا یه اجرای ارزیابی داره با مدلها حرف میزنه، معمولاً ثبت دقیقی از اینکه چی رفته و چی برگشته نداریم. این ابزار برای هر اجرا یه دیتاپلین Bifrost تعبیهشده بالا میآره و ترافیک قابلمشاهده رو زیر یه run_id ثابت روی دیسک نگه میداره.
معماریش دو لایهٔ HTTP داره. کنترلپلین بهصورت پیشفرض روی پورت 8790 گوش میده و ارکستریتور با اون پروکسی هر اجرا رو میسازه، وضعیتش رو میبینه و متوقفش میکنه. هر دیتاپلین هم روی یه پورت جدا که خودکار انتخاب میشه بالا میآد و ایجنت آدرسش رو مثل یه اندپوینت سازگار با OpenAI یا Anthropic استفاده میکنه. یه پروسهٔ کنترلپلین میتونه چند دیتاپلین رو همزمان با goroutine بچرخونه.
چیزی که ثبت میشه تو فایل events.jsonl میشینه: بدنهٔ خام درخواست و پاسخ، بدنهٔ استریم، مصرف توکن، فراخوانی ابزارها، محتوای استدلال قابلمشاهده و خطاها. کنار اون conversation_snapshot.json آخرین گفتوگوی بازسازیشده رو داره. متوقف کردن یه دیتاپلین تاریخچهٔ اون رو پاک نمیکنه و تاریخچه بعد از ریاستارت کنترلپلین هم خوندنیه.
دو محدودیت رو خود پروژه صریح میگه. اول اینکه ناظر فقط چیزی رو میتونه ثبت کنه که API بالادستی برگردونه؛ زنجیرهٔ فکری پنهانی که ارائهدهنده نشون نمیده در دسترس نیست. دوم اینکه نسخهٔ 0.1.x هیچ احراز هویتی نداره و API کنترل یه رابط مدیریتیه که میتونه لیسنر باز کنه، پس باید به loopback یا یه شبکهٔ خصوصی مطمئن بایند بشه.
هدرهای Authorization و x-api-key تو آرتیفکتها حذف میشن، ولی بدنهٔ درخواست و پاسخ عمداً نگه داشته میشه و میتونه داده حساس داشته باشه؛ نویسندهها توصیه میکنن برای پوشهٔ آرتیفکتها دسترسی و سیاست نگهداری مناسب بذارید. اجراش هم Go نسخهٔ 1.26.4 یا جدیدتر میخواد و لایسنسش Apache-2.0 هست.
نکات کلیدی:
- برای هر اجرا یه دیتاپلین Bifrost تعبیهشده، بدون پایتون، LiteLLM، داکر یا پروسهٔ جدا
- کنترلپلین روی 8790 و هر دیتاپلین روی یه پورت خودکار، سازگار با OpenAI و Anthropic
- ثبت درخواست، پاسخ، استریم، توکن، هزینه، فراخوانی ابزار و خطا زیر یه run_id ثابت
- تاریخچه بعد از توقف دیتاپلین و ریاستارت کنترلپلین باقی میمونه
- نسخهٔ 0.1.x احراز هویت نداره؛ فقط روی loopback یا شبکهٔ خصوصی بایند بشه




