我的 agent 要从 1000+ 个视频模型中做选择,以前总是自信满满地选错。以下是我的修复方法
摘要
# 一位 AI 视频代理后端工程师分享如何修复模型路由问题:通过规则过滤加评分,避免代理在 1000+ 视频模型中自信却错误地选择不兼容的模型 在 AI 视频生成领域,随着可用模型数量爆炸式增长——如今已超过 1000 个——一个看似简单的任务变得异常复杂:**如何为用户的请求选择正确的模型?** 一位在某 AI 视频代理平台工作的后端工程师最近分享了他们团队如何诊断并修复模型路由(Model Routing)问题的经历。问题的核心不是代理"不知道",而是代理**非常自信地选择了错误且不兼容的模型**。 ## 问题的起点:一个"自信"的错误 这个 AI 视频代理本质上是一个智能调度层。用户输入自然语言描述(例如"生成一个 4K 电影感的延时摄影视频"),代理需要从庞大的模型目录中挑选出最合适的模型来执行任务。 初期,团队采用了一种简单的方案:**让大型语言模型(LLM)直接阅读模型目录,然后自主选择。** 看似合理,但实际运行中暴露了严重问题: - 用户请求生成 **竖屏 9:16 格式** 的短视频,代理却路由到了只支持 **横屏 16:9** 的模型 - 用户明确要求 **超过 30 秒** 的视频长度,代理选择了一个 **最大输出 10 秒** 的模型 - 用户指定了 **特定的输入格式**(如图片到视频),代理却路由到了 **纯文本到视频** 的模型 最令人头疼的是——**代理从不表现出犹豫**。它总是给出一个明确的模型选择,并附带一段看起来非常有说服力的推理说明。工程师将这种现象称为**"自信的错误"(Confidently Wrong)**。 ## 根本原因分析 团队经过深入排查,发现了几个关键根因: ### 1. 模型目录信息过载 当目录中包含超过 1000 个模型时,将完整的模型元数据塞入 LLM 的上下文窗口,会导致以下问题: - **注意力稀释**:模型无法同时关注所有约束条件 - **相似性混淆**:大量名称相似的模型(例如 `video-gen-v2`、`video-gen-v2-pro`、`video-gen-v2-turbo`)容易被混淆 - **上下文窗口截断**:部分模型的详细参数在长上下文中被截断,LLM 根本看不到关键的兼容性信息 ### 2. 缺乏硬性约束过滤 原始方案中,**格式、时长、输入类型** 等约束条件被视为"软性偏好"而非"硬性门槛"。LLM 被期望理解这些约束,但在实践中它经常为了"整体相似度"而牺牲"局部兼容性"。 ### 3. 排序机制缺失 即便 LLM 选中了大方向正确的候选模型,也没有任何机制对其进行**细粒度的评分和排序**,导致最终输出可能是候选集中的次优选择。 ## 解决方案:规则过滤 + 评分排序的两层架构 团队最终设计了一个**两层混合路由架构**,将确定性工程规则与 AI 的语义理解能力结合起来。 ### 第一层:硬性规则过滤(Rule-Based Filtering) 在任何 LLM 参与之前,先用**确定性代码**执行硬性约束过滤: ```python def filter_compatible_models(request, model_catalog): candidates = [] for model in model_catalog: # 硬性约束:格式必须匹配 if request.aspect_ratio not in model.supported_ratios: continue # 硬性约束:时长必须在模型能力范围内 if not (model.min_duration <= request.duration <= model.max_duration): continue # 硬性约束:输入类型必须匹配 if request.input_type not in model.supported_input_types: continue # 硬性约束:分辨率必须在模型能力范围内 if request.resolution not in model.supported_resolutions: continue candidates.append(model) return candidates ``` **关键原则**:这一层**完全不使用 AI**。它是确定性的、可预测的、100% 可测试的。任何不满足硬性约束的模型都会被直接排除,无论它在其他维度上表现多么优秀。 这一步的效果立竿见影——在实际测试中,**超过 70% 的不兼容选择在这一层就被拦截了**。 ### 第二层:语义评分排序(Semantic Scoring & Ranking) 通过第一层过滤后,候选集通常会从 1000+ 缩小到 5-20 个。此时再将筛选后的候选集交给 LLM,让它专注于**语义匹配和偏好排序**: ```python def score_candidates(request, candidates): scores = [] for model in candidates: score = 0 # 语义匹配分:请求描述与模型擅长领域的匹配度 score += semantic_match_score(request.prompt, model.capabilities) * 0.4 # 质量分:模型的平均用户评分 score += model.quality_score * 0.25 # 速度分:模型的平均生成速度 score += model.speed_score * 0.15 # 成本分:模型的成本效益比 score += model.cost_efficiency * 0.10 # 新鲜度分:模型的版本新鲜度 score += model.freshness_score * 0.10 scores.append((model, score)) return sorted(scores, key=lambda x: x[1], reverse=True) ``` ### 关键设计决策 | 决策点 | 选择 | 理由 | |---|---|---| | 过滤在前还是排序在前 | **过滤在前** | 减少 LLM 面临的选项数量,降低注意力稀释 | | 硬约束由代码还是 LLM 执行 | **代码执行** | 确定性规则需要确定性执行,不能依赖概率性推理 | | LLM 的角色 | **语义排序** | LLM 擅长理解语义相似性,但不擅长精确数值比较 | | 权重是否固定 | **可配置** | 不同用户群体对质量、速度、成本的偏好不同 | ## 实施效果 上线后,团队追踪了以下关键指标的变化: ### 不兼容路由率 - **修复前**:约 12% 的请求被路由到不兼容的模型 - **修复后**:不兼容路由率降至 **0.3% 以下**(剩余的 0.3% 主要来自元数据不完整的新模型) ### 用户满意度 - 用户对视频生成结果的满意度评分提升了 **23%** - "重新生成"率(用户对结果不满意而重新请求)下降了 **35%** ### 平均路由延迟 - 尽管增加了两层处理,但因为候选集大幅缩小,LLM 的处理时间反而**降低了 40%** - 整体端到端延迟**基本持平** ## 经验总结 工程师总结了以下几条核心经验: 1. **不要让 AI 替你做确定性决策**。格式、时长、分辨率等硬性约束应该由代码处理,LLM 的价值在于理解语义和处理模糊性。 2. **"自信"不等于"正确"**。LLM 的输出总是带有确定性的语气,但这不代表它真的知道自己是对的。在生产系统中,必须建立独立于 AI 的验证机制。 3. **缩小选项空间比提升推理能力更有效**。与其寄希望于更强的模型来"想清楚",不如用工程手段先帮它排除明显错误的选项。 4. **评分权重应该是可配置的**。不同场景下用户对质量、速度、成本的权衡不同,僵化的权重设定会成为新的瓶颈。 5. **元数据质量决定路由质量**。垃圾进、垃圾出——如果模型的元数据(支持的格式、时长上限等)不准确或不完整,再好的路由算法也无法做出正确决策。团队后续专门建立了**模型元数据的自动化验证流水线**。 --- 这个案例生动地说明了一个在 AI 工程领域反复出现的主题:**最先进的 AI 系统,往往需要最基础的工程护栏来确保其可靠性。** 当代理面对 1000+ 个模型时,最聪明的做法不是让 AI 更努力地思考,而是先帮它把不可能的选项划掉。
相似文章
@kfk_ai: 穷鬼玩 Agent 的配置 主模型:deepseek-v4-flash(1M 上下文),用商汤的 free 额度,多注册几个 key,再用 9router 捏在一起防限流 视觉模型:Qwen3-VL-30B-A3B-Thinking,硅基…
一个用户分享了使用多个免费或低成本AI模型组合搭建Agent的配置方案,包括主模型、视觉模型、生图、视频和语音等模块。
为什么即使底层模型很强,AI Agent 依然会失败?
作者指出企业 AI 项目中 Agent 失败往往不是模型质量问题,而是上下文、工具描述、权限、状态管理和可观测性等周边环节的缺陷,并提出 Agent 架构应包含验证、执行、观测和人工兜底等完整流程。
@realfxw: 做 Agent 最头疼的往往不是模型逻辑,而是让它联网“拿数据”——反爬、登录鉴权、频率限制,折腾半天全卡在接口上。 推荐关注开源项目 Agent-Reach,相当于直接给 AI Agent 装上了一副全网“采集外骨骼”: 整合成熟生态:…
Agent-Reach 是一个开源项目,为 AI Agent 提供一键式网络数据采集能力,整合多种工具以解决反爬和认证等问题。
@jinchenma_ai: https://x.com/jinchenma_ai/status/2061835131107860582
文章基于AI Agent(Skill)的工程化方法,提出将确定性的任务固化为脚本,减少大模型运行时的新判断,从而提升稳定性和Token效率。以视频字幕处理为例,展示了四步工程化流程。
我的AI代理在不同会话间不断丢失自身状态,因此我选择重建工具链而非更换模型
作者发现AI代理的可靠性问题源于工具链而非模型,通过分离上下文跟踪、加载和输出检查来改进,同时致力于版本控制以管理跨项目的代码。