| name | llm-gateway |
| description | Mastra Model Router、多 provider、成本控制(3 道闸门)、Vertical Skill(垂类模型经 MCP 发现 + 独立推理端点)、Embedding。编写 LLM/模型调用代码时使用。见 ADR-0008。 |
LLM Gateway & 模型调用
Model Router(通用 LLM)
import { resolveModel } from "../llm/index";
const agent = new Agent({ model: resolveModel() });
const agent = new Agent({ model: resolveModel("doubao/doubao-...") });
- Provider:Native(openai/anthropic/google/groq/cerebras)+ OpenAI 兼容(doubao/qwen/grok)。扩展编辑
CUSTOM_PROVIDERS。
- 绝不直接 import OpenAI/Anthropic SDK——全部经 Model Router。
- 优先从 env/Pack manifest 取模型串,避免在代码里硬编码模型字面量(审计 M-4)。
Vertical Skill:垂类模型调用(ADR-0008)
垂类模型(异常检测、预测、视觉…)不是 LLM、不走 Model Router、不走 MCP 热路径:
agent ──MCP 描述符(发现/契约)──▶ 决定调用 ──▶ 独立推理端点(BentoML/KServe/Triton, gRPC/REST)
└─ 按服务端租户上下文解析「逐租户模型变体」(防串号)
- MCP 只做发现(有哪些模型、契约如何);推理走独立 Model Serving(同步 gRPC/REST 或批量队列)。
- Model Registry 管版本 + 逐租户变体;变体解析只认服务端
tenant/account 上下文(ADR-0014)。
成本控制(3 道闸门,= 计量基质 ADR-0015)
Gate 1: Redis 缓存 key: platform:classify:cache:{tenantId}:{accountId}:{deviceId}:{eventType}
命中 → 复用,跳过 LLM
Gate 2: 日额度 key: platform:classify:quota:{tenantId}:{accountId}:{YYYY-MM-DD}
INCR + EXPIRE 86400;超额 → 不调用
Gate 3: 模型降级 简单 → 轻量(doubao-lite/haiku);复杂 → 强模型(sonnet/gpt-4o)
这 3 道闸门的计数同时作为 Lago usage-based 计量的采集点(ADR-0015)。
Embedding
import { resolveEmbeddingModel } from "../llm/embedding";
const embedder = resolveEmbeddingModel();
const result = await embedder.doEmbed({ values: ["query text"] });
默认 Doubao multimodal embedding endpoint,1536 维(记忆向量维度单一真相源)。
可观测 / Eval
LLM/agent 调用经 Mastra OTel 导出到 Langfuse(trace/eval/dataset,ADR-0011)。不自建可观测后端。