路由¶
每种 Provider 类型都有独立的 路由。Router 不通过 ID 选择;先取得 LLM、Embedding 或 Parser 的 ModelProviderHandle,再由该 Handle 访问对应 Router。
llm_router = workspace.llm_provider().router()
embedding_router = workspace.embedding_provider().router()
parser_router = workspace.parser_provider().router()
llmRouter := workspace.LLMProvider().Router()
embeddingRouter := workspace.EmbeddingProvider().Router()
parserRouter := workspace.ParserProvider().Router()
修改 LLM Router 不会修改 Embedding 或 Parser Router。
读取当前配置¶
info() / Info() 返回 ProviderRouterConfig:
字段 |
类型 |
说明 |
|---|---|---|
|
string |
当前路由策略 |
|
integer |
健康检查间隔;单位和有效范围以服务端契约为准 |
|
integer |
最大重试配置 |
|
boolean |
是否启用会话亲和 |
current = llm_router.info()
print(
current.strategy,
current.health_check_interval,
current.max_retries,
current.session_affinity,
)
current, err := llmRouter.Info(ctx)
if err != nil {
return err
}
fmt.Println(
current.GetStrategy(),
current.GetHealthCheckInterval(),
current.GetMaxRetries(),
current.GetSessionAffinity(),
)
公开类型给出了字段,但没有定义 strategy 的枚举、健康检查间隔的单位或各数值的合法范围。应先读取环境现有配置,并从当前产品界面或服务端 API 契约取得允许值。
更新 Router¶
更新采用可选参数;只传明确要修改的字段:
updated = llm_router.update(
sdk.with_router_strategy(router_strategy),
sdk.with_router_max_retries(max_retries),
)
updated, err := llmRouter.Update(
ctx,
sdk.WithRouterStrategy(routerStrategy),
sdk.WithRouterMaxRetries(maxRetries),
)
if err != nil {
return err
}
其他公开选项为:
updated = llm_router.update(
sdk.with_router_health_check_interval(health_check_interval),
sdk.with_router_session_affinity(session_affinity),
)
updated, err := llmRouter.Update(
ctx,
sdk.WithRouterHealthCheckInterval(healthCheckInterval),
sdk.WithRouterSessionAffinity(sessionAffinity),
)
返回值是服务端保存后的完整 ProviderRouterConfig。为了避免并发更新覆盖彼此,修改前读取最新配置,同一 Provider 类型的 Router 更新应串行执行;修改后再调用 info() / Info() 验证。
配置时的边界¶
Router 是 Provider 类型级配置,不是单个 Backend 或 Endpoint 的属性。
SDK 不提供“创建 Router”或“删除 Router”的方法,只提供读取和更新。
max_retries可能放大外部调用次数、延迟和费用。不要在不了解服务端重试语义时提高它。健康检查会访问已配置的模型服务。检查间隔应使用部署方认可的值,避免产生不必要的外部流量。
会话亲和的具体键、持续时间和故障转移行为没有在公开 SDK 类型中定义,不能据字段名推导。
更新 Router 前,应先确保对应 Provider 下已有可用 Backend 和 Endpoint;SDK 不会在客户端验证整个拓扑。