feat(sense): T-G1 Embedder(int8 量化/降级 fail-closed + /v1/embeddings 透传)
- embedder.py:embed() 调 llama-server /v1/embeddings -> 对称 per-vector int8 量化(scale=127/max|v|,1024 维余弦扰动 ~1e-4 << 1e-2 验收); 超时/连接/非200/空形状 -> EmbedderDown(D-G4 fail-closed); quantize_int8/cosine_int8 辅助(int8 直接点积,scale 正标量不改方向) - routes.py 拆双路由组:/sense 前缀组 + /v1 无前缀组(/v1/embeddings OpenAI 兼容透传,embedder 不可用 503);build_sense_routers 返回列表, api.py 逐个 include;build_sense_router 保留向后兼容 - 测试 +6:量化余弦误差 200 组 <1e-2/范围/零向量/int8 余弦/ 正常量化/三种 fail-closed/透传端点(503+形状+400),全量 381 passed - 待真机项:llama-server embedder 端点冒烟(需用户配置 embedder.base_url)
This commit is contained in:
@@ -1,17 +1,23 @@
|
||||
"""语义分析器与三级任务分级(T-G0…T-G8):/v1/route + /sense/admin/*。
|
||||
"""语义分析器与三级任务分级(T-G0…T-G8):/v1/route + /v1/embeddings + /sense/admin/*。
|
||||
|
||||
组装唯一入口:build_sense_router(cfg) -> APIRouter;
|
||||
由 gateway.api 在 sense.enabled 时 include(D-G7 关闭时不注册任何路由)。
|
||||
灰度:mode=collect(只记不决策)-> shadow(决策只比对)-> live(真分流);
|
||||
collect 攒满 min_labels 前不得开 live(晋升门 §6)。
|
||||
组装唯一入口:build_sense_routers(cfg) -> [APIRouter, APIRouter]
|
||||
(/sense 前缀组 + /v1 无前缀组);由 gateway.api 在 sense.enabled 时逐个 include
|
||||
(D-G7 关闭时不注册任何路由)。
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import List
|
||||
|
||||
from fastapi import APIRouter
|
||||
|
||||
from gateway.sense.config import SenseConfig, build_sense_config # noqa: F401
|
||||
|
||||
|
||||
def build_sense_router(cfg: SenseConfig) -> APIRouter:
|
||||
from gateway.sense.routes import build_sense_router as _build
|
||||
def build_sense_routers(cfg: SenseConfig) -> List[APIRouter]:
|
||||
from gateway.sense.routes import build_sense_routers as _build
|
||||
return _build(cfg)
|
||||
|
||||
|
||||
def build_sense_router(cfg: SenseConfig) -> APIRouter:
|
||||
"""向后兼容:仅 /sense 前缀组(/v1 组见 build_sense_routers)。"""
|
||||
return build_sense_routers(cfg)[0]
|
||||
|
||||
Reference in New Issue
Block a user