正在统计访客…
浏览全部文档
开始 · 9找到适合你的 Runifold 学习路径45 分钟掌握 Runifold理解完整的 Runifold 平台第一次可信运行选择正确的执行 API选择 Crate 与 Cargo Feature构建常见 Runifold 应用Runifold 常见问题排查 Runifold 应用故障
执行内核 · 7理解 RunContext安全协调外部副作用使用预算与取消限制工作安全地处理错误与重试事件、Journal 与执行证据设计 Capability 安全执行从 Checkpoint 安全恢复
模型与服务商 · 7在避免重复输出的前提下路由模型选择并配置模型服务商使用服务商中立的模型协议基于 Provider Runtime 契约构建使用 OpenAI 控制面与 Realtime API测试与 Benchmark Provider Adapter配置 OpenAI、Anthropic、Gemini 与 Ollama
Agent · 7构建并配置 Agent为 Agent 添加类型化工具加入会话与语义记忆安全地委派给子 Agent返回结构化 Rust 值在不丢失语义的前提下流式输出使用检索为 Agent 提供事实依据
持久工作流 · 7组合确定性工作流让工作流持久化运行持久工作流 Worker协调 Timer、Signal 与持久等待运行多租户工作流基础设施运行并行 Branch 与安全 Race对持久 Workflow 进行版本管理
集成 · 7通过 MCP 连接外部能力选择存储与持久化边界通过 MCP Tasks 暴露持久工作构建并评估检索流水线使用 MCP Resources、Prompts 与 Sampling在不跨越权限的前提下缓存 MCP 响应在 Rust Web Service 中部署 Runifold
质量与运维 · 10在没有网络的情况下测试评估质量并阻止回归观测完整运行树在浏览器与边缘环境安全运行准确理解可靠性声明在 CI 中运行可复现评测使用 SLO 运维 Runifold治理 Task 保留与删除把审计证据归档到 S3-Compatible WORM 存储管理兼容性与可信发布
文档/模型与服务商
第一次使用?通过 45 分钟核心课程建立完整心智模型
模型与服务商

在避免重复输出的前提下路由模型

围绕一个逻辑模型身份组合 Fallback、重试、熔断与路由健康策略。

实践指南·10 min

逻辑模型与物理模型

Router 向 Agent 暴露一个逻辑 ModelRef,并在多个命名物理 Route 中选择。服务商拓扑 变化时,Prompt、Tool、RunContext 与下游可观测性仍保持稳定。

路由不代表模型在行为上可以互换。同一逻辑池中的每条 Route 都必须单独验证输出质量与 能力支持。

构建 Router

use std::{sync::Arc, time::Duration};
use runifold::{
    Agent, CircuitBreakerConfig, ModelFallbackPolicy, ModelRef,
    ModelRouter,
};
 
let logical = ModelRef::new("router", "assistant");
let router = ModelRouter::builder(logical.clone())
    .route(
        "primary",
        primary_model,
        ModelRef::new("openai", "gpt-5"),
    )
    .route(
        "backup",
        backup_model,
        ModelRef::new("anthropic", "claude-sonnet"),
    )
    .fallback_policy(ModelFallbackPolicy::safe_only())
    .circuit_breaker(CircuitBreakerConfig::new(
        3,
        Duration::from_secs(30),
    )?)
    .build()?;
 
let agent = Agent::builder("assistant", Arc::new(router), logical)
    .build()?;

Route 名称应稳定,用于指标与运营。不要包含凭证、租户 ID 或临时主机名。

重试与 Fallback 安全

Retry 会重复同一物理 Route;Fallback 会选择另一 Route。如果服务商可能已经接受第一 个请求,两者都可能产生重复成本。

默认 Fallback Policy 只接受明确标记为 Retry-safe 的错误。允许安全性 Unknown 的错误 类型,等于显式接受再次计费风险。同时遵守服务商 Retry-After、调用 Deadline 和共享 Run Budget。

取消永远不会触发 Retry 或 Fallback。

流式锁定

第一个规范化流事件可见后,Runifold 会锁定所选 Route。输出一部分后切换服务商,可能 重复文本、工具调用或推理,Consumer 无法可靠合并。

因此流中途失败会如实返回失败,不会被另一模型的新答案掩盖。界面应保留部分进度, 同时明确展示最终状态。

运行 Router

熔断器按物理 Route 独立计数。达到阈值后,该 Route 会跳过一个 Cooldown,随后恰好 一个 Half-open 请求探测恢复。

route_health() 导出到 Readiness 诊断与运营面板。按 Route 监控选择次数、失败 分类、Retry 次数、熔断状态、延迟、Token 与质量。

路由检查清单:

  • 同一逻辑池只放满足同一产品契约的模型;
  • 显式设置 Retry 与 Fallback Policy;
  • 测试限流、发送前断网、响应丢失与流中断;
  • 非幂等 Tool 使用 Effect,Router 无法让写操作变安全;
  • 增加或提升 Backup Model 前运行质量评估门禁。