aimock: موک کامل APIهای هوش مصنوعی برای تست
خلاصهٔ کاملتر
وقتی داری یه اپ مبتنی بر هوش مصنوعی مینویسی، تست کردنش معمولاً دردسرساز میشه — یا باید API key واقعی داشته باشی، یا هزینه بدی، یا به اینترنت وصل باشی. aimock این مشکل رو حل میکنه: یه پکیج Node.js که تمام APIهای رایج AI رو شبیهسازی میکنه تا بتونی تستهات رو سریع، ارزون و قابل تکرار اجرا کنی.
aimock طیف گستردهای از سرویسها رو پوشش میده: از مدلهای چت و تولید تصویر و متنبهگفتار گرفته تا vector database ها (مثل Pinecone و ChromaDB)، پروتکلهای agent مثل MCP و A2A، و حتی AG-UI که برای تست فرانتاند با جریانهای رویداد agent استفاده میشه. همه اینا روی یه پورت و با صفر dependency خارجی اجرا میشن.
شروع کار خیلی سادهست. یه نمونه LLMock میسازی، جوابهای دلخواهت رو تعریف میکنی، و قبل از ساخت SDK کلاینت، متغیرهای محیطی رو ست میکنی:
import { LLMock } from "@copilotkit/aimock";
const mock = new LLMock({ port: 0 });
mock.onMessage("hello", { content: "Hi there!" });
await mock.start();
process.env.OPENAI_BASE_URL = `${mock.url}/v1`;
process.env.OPENAI_API_KEY = "mock";نکته مهم اینه که باید متغیرهای محیطی رو قبل از ساخت OpenAI client ست کنی، چون خیلی از SDKها base URL رو در همون لحظه ساخت cache میکنن — وگرنه درخواستها به API واقعی میرن.
یکی از قابلیتهای جالب، Record & Replay هست: میتونی یه بار به API واقعی وصل بشی، جوابها رو به صورت fixture ذخیره کنی، و بعد برای همیشه بدون اینترنت پخششون کنی. حتی timing درخواستها هم ضبط میشه و میتونی سرعت پخش رو با --replay-speed تنظیم کنی. برای تستهای پیچیدهتر هم chaos testing داره — خطاهای ۵۰۰، JSON ناقص، و قطع اتصال وسط stream.
پلاگینهای Vitest و Jest هم هستن که با useAimock() بدون هیچ تنظیمات اضافهای lifecycle رو مدیریت میکنن. برای CI/CD هم میشه از GitHub Action رسمیش یا image داکر استفاده کرد.
نکات کلیدی:
- موک ۱۴ پروتکل و provider مختلف AI از OpenAI تا Gemini، Claude، Bedrock و Ollama
- قابلیت ضبط و پخش مجدد fixture با حفظ timing اصلی
- پشتیبانی از MCP، A2A، AG-UI و vector database
- پلاگین Vitest/Jest با useAimock() و GitHub Action آماده
- بدون dependency خارجی، یه پورت برای همه سرویسها
- تست chaos: شبیهسازی خطا، قطع stream، و rate limiting




