CopilotKit/aimock
Mock everything your AI app talks to — LLM APIs, MCP, A2A, AG-UI, vector DBs, search. One package, one port, zero dependencies.
aimock – 用于 AI 应用程序测试的模拟基础设施
它是什么
- 一个仅限 Node 的库(零外部依赖),在单个端口上运行本地 HTTP 服务器,并模拟您代码中可能调用的每个主要 LLM、图像/视频/音频、向量数据库和 AI 代理服务。
- 通过将您使用的 SDK(OpenAI、Anthropic、Gemini、Bedrock、Ollama 等)指向模拟器的基础 URL,您的应用程序将收到确定性的响应——无需网络调用、无需 API 密钥、不会产生意外费用。
为什么它很重要
- 使 AI 增强型应用程序的单元测试和集成测试变得可靠且快速。
- 支持 记录与重播:代理真实 API 一次,保存精确的 JSON 固定数据(包括 Token 使用量、时间、流式顺序),然后永久重播它们。
- 提供丰富的测试控制选项——混乱注入、模型错误行为模拟、严格模式匹配和按请求上下文路由——让您可以验证错误处理、速率限制重试和边缘情况行为。
核心组件
| 组件 | 模拟内容 |
|---|---|
| LLMock | 跨 11 个供应商(OpenAI、Claude、Gemini、Bedrock、Azure、Vertex、Ollama、Cohere、OpenRouter、BytePlus、ElevenLabs 等)的聊天、嵌入、实时、视频、图像、TTS、转录、审核 |
| MCPMock | Copilot‑Kit 的 MCP 工具执行协议 |
| A2AMock | 代理对代理流式协议 (SSE) |
| AGUIMock | 用于前端测试的代理对 UI 事件流 |
| VectorMock | Pinecone、Qdrant、ChromaDB 兼容的向量数据库端点 |
| Services | 搜索 (Tavily)、重新排序 (Cohere)、审核 (OpenAI) |
主要功能(如 README 所述)
- 记录与重播:具有时间感知播放功能,并可捕获 Token 使用量/成本。
- 多轮对话:可根据轮次索引、工具调用、系统消息或自定义谓词进行匹配的固定数据。
- 混乱测试:注入 500 错误、格式错误的 JSON、断开连接、速率限制响应或人为延迟。
- 模型错误行为:在多个供应商“线路”上强制执行无效参数、架构违规、拒绝、内容过滤器拦截等。
- 流式物理特性:配置首个 Token 时间 (TTFT)、每秒 Token 数、抖动和流式使用块。
- WebSocket 支持:适用于 OpenAI Realtime、Responses 和 Gemini Live。
- 指标:通过 Prometheus、用于 CI/CD 的 Docker/Helm 镜像,以及用于零配置测试生命周期的 Vitest/Jest 插件 (
useAimock())。 - 固定数据管理:基于上下文的路由、严格模式覆盖、请求日志、OpenAPI 目录和漂移检测 CI 检查。
典型用法
npm install @copilotkit/aimock
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"; // SDK 需要
// 运行您的测试套件 …
await mock.stop();
您也可以通过 CLI 运行完整套件:
npx @copilotkit/aimock --config aimock.json # 所有模拟在同一个端口上
或者使用 GitHub Action 在 CI 中启动服务器并将测试指向它。
谁应该使用它
- 开发 AI 驱动产品的开发人员,需要快速、可重复的测试且无需承担云成本。
- 希望验证错误处理、速率限制退避或自定义工具调用逻辑的团队。
- 任何需要捕获真实 API 交互一次并进行确定性重播以进行离线开发的人员。
以上所有详细信息均直接来自仓库的 README;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目