ahmeedatm/infer-router

GitHub: ahmeedatm/infer-router

一个面向网络意图的自适应LLM路由编排系统,通过复杂度估计和本地质量评估在多模型池中实现质量、延迟与成本的平衡调度。

Stars: 0 | Forks: 0

# InferRouter-LLM 将自然语言网络 intent 动态路由至专门的 LLM 池, 通过语义复杂度估计和自动质量评估来实现。 系统会分析网络 intent(例如“为网联汽车创建一个低延迟的 URLLC slice”), 然后在兼顾质量、延迟和成本等约束条件下,将其导向最适合的语言模型。 回复的质量由本地运行的 LLM-Juge 进行评估。 ## 原理 ``` Intent réseau (langage naturel) │ ▼ Estimateur de complexité ──► (n entités, profondeur, domaines croisés) │ ▼ Routeur tri-critère ──► admissibilité (latence, coût) + argmax qualité │ ┌───────────┼────────────┐ ▼ ▼ ▼ LLM générique LLM spécialisés par domaine (fallback) (RAN, cœur, sécurité, slice) │ ▼ LLM-Juge local (RocketEval, Ollama) ──► qualité estimée ``` 三大组件: 1. **复杂度估计器**:一个轻量级分类器,根据从语句中计算出的属性(实体数量、推理深度、跨领域情况)来预测 intent 的复杂程度(simple、medium 或 complex)。每个 intent 耗时不到 15 毫秒。 2. **三重准则路由器**:在预期质量相同的情况下,依次根据成本和延迟进行决断,从而选择出预期质量最高且符合条件的模型。 3. **本地 LLM-Juge**:通过 RocketEval 方法评估回复的质量(针对每个 intent 生成 checklist,并通过 Ollama 由小型本地模型进行评分),在 runtime 无需依赖任何付费的外部服务。 ## 仓库结构 ``` app/llm/ schema.py modèles de données (Intent, ModelResponse, JudgeScore...) intents.py chargement et validation du jeu d'intents features.py extraction d'attributs de complexité openrouter_client.py appel des LLM cibles (OpenRouter) judge.py LLM-Juge (RocketEval, scores et notation par paires) checklist.py génération de checklist d'évaluation par intent pool.py pool de modèles (génériques et spécialisés) policy.py qualité attendue par candidat inferrouter.py orchestrateur de routage router.py logique de sélection (admissibilité, argmax, départage) data/ intents_dataset.yaml jeu d'intents annoté (domaine, complexité, criticité) experiments/ campagnes d'évaluation (calibration, benchmark, juge) scripts/ génération du dataset, utilitaires tests/ tests unitaires et d'intégration docs/ InferRouter-LLM.pdf rapport de mémoire (Master CNAM) ``` ## 安装 ``` python -m venv .venv .venv/bin/pip install -r requirements.txt ``` 通过环境变量进行配置(参见 `.env.example`): - `OPENROUTER_API_KEY`:用于调用目标 LLM 的 API 密钥。 - `MODEL_LIGHT`、`MODEL_HEAVY`:模型池中的模型。 - `OLLAMA_HOST`、`JUDGE_MODEL`:本地 juge(Ollama)。 本地 juge 需要使用 [Ollama](https://ollama.com/) 以及一个模型,例如: ``` ollama pull gemma2:9b ``` ## 使用方法 ``` from app.llm.schema import Intent from app.llm.inferrouter import route intent = Intent( id="ex1", text="Create a low-latency URLLC slice for connected vehicles.", domain="slice", expected_complexity="complex", criticality="high", ) decision = route(intent, l_max=5000, c_max=1.0) print(decision.model_id, decision.rationale) ``` ## 测试 ``` .venv/bin/pytest tests/unit -q # tests unitaires (sans réseau ni service) .venv/bin/ruff check . # lint ``` 集成测试(`tests/integration/`)需要 Ollama,且默认不执行。 ## 评估 `experiments/` 文件夹包含了各项测量活动:juge 的可靠性、复杂度的可分性、各模型的质量校准,以及路由策略的比较。这些脚本会调用付费的 API;在进行任何规模化运行之前,它们会先在小样本上进行验证,并重复使用已生成的产物。
标签:AI风险缓解, 搜索引擎查询, 逆向工具