如何做大模型A/B测试与动态切换:eino-examples AB Router实践指南
发布时间:2026/10/27 1:15:47 锦皓数字建站

【免费下载链接】eino-examplesExamples and demonstrations for using the Eino framework项目地址https://gitcode.com/gh_mirrors/ei/eino-examples点击查看免费下载eino-examples 是 Eino 框架的官方示例集。本文带你用它其中的AB RouterA/B 测试路由快速实现大模型 A/B 测试与动态切换同一份业务代码按请求实时路由到不同的 LLM如 OpenAI 与 Ollama并通过回调日志看清每次请求究竟由哪个模型处理。什么是 AB Router30秒理解大模型 A/B 测试当你想对比两个大模型的回答质量、延迟或成本时通常不想把选模型的逻辑散落在业务代码里。Eino 社区提供了 ABRouterChatModel 组件——一个会自己选模型的 ChatModel能力说明 按请求路由每次Generate/Stream调用前都会执行你提供的路由函数动态选定模型️ 兼容工具调用实现ToolCallingChatModel路由成功后自动为所选模型注入 Tools 支持流式输出Stream与Generate两条路径均受路由控制 可追踪路由返回的模型名会写入RunInfo回调Callback里可直接打印/落库它的核心是一个函数类型 ModelRouter接收上下文、输入消息和模型选项返回(模型名, 模型实例, error)。只要实现这个函数就能拥有任意路由策略。工作原理按请求动态选择模型整个路由过程由 pickModel 完成可以拆成 3 步调用路由函数把本次请求的消息列表交给你写的路由逻辑拿到(modelName, 模型实例)按需注入工具如果选中的模型支持工具调用且你配置过WithTools会自动注入不支持的模型则自动跳过不会报错写入追踪信息用路由返回的modelName构建RunInfo让后续回调、日志系统知道这次是 openai 还是 ollama 在干活。上图是 Eino 中 Graph 编排的拓扑结构示例来自 react_with_interrupt。AB Router 可以直接作为其中的 ChatModel 节点接入对上下游完全透明。快速上手OpenAI 与 Ollama 双模型对比官方示例位于 components/model/abtest/example演示了OpenAI Ollama 二选一路由。1️⃣ 准备环境变量变量作用OPENAI_API_KEYOpenAI API KeyOPENAI_BASE_URL/OPENAI_MODEL兼容端点地址与模型名可指向任意 OpenAI 兼容服务OPENAI_BY_AZUREAzure 部署时设为trueOLLAMA_BASE_URLOllama 服务地址OLLAMA_MODEL_NAMEOllama 模型名两个模型的初始化代码见 example/main.go#L50-L63。2️⃣ 创建路由模型示例的路由规则很简单最后一条用户消息内容长度为偶数走 OpenAI否则走 Ollama等价于一次流量分流演示见 example/main.go#L68-L77router : abtest.NewABRouterChatModel(func(ctx context.Context, in []*schema.Message, _ ...model.Option) (string, model.BaseChatModel, error) { m : in[len(in)-1] if m.Role schema.User len(m.Content)%2 0 { return openai, oai, nil } return ollama, olm, nil }) 返回值里的字符串openai/ollama就是追踪名它会出现在回调日志中。3️⃣ 像普通 ChatModel 一样调用sr, err : router.Stream(ctx, msgs) if err ! nil { log.Fatal(err) } defer sr.Close() for { msg, err : sr.Recv() if errors.Is(err, io.EOF) { break } fmt.Print(msg.Content) }在仓库根目录执行go run ./components/model/abtest/example即可运行。实时追踪用回调查看每次请求选中了哪个模型AB Router 会自动把模型名写入RunInfo你只需在回调里读取完整实现见 example/main.go#L40-L48handler : cbutils.NewHandlerHelper().ChatModel(cbutils.ModelCallbackHandler{ OnStart: func(ctx context.Context, info *callbacks.RunInfo, _ *model.CallbackInput) context.Context { log.Printf([abtest choice] %s, info.Name) // 输出如[abtest choice] openai return ctx }, }).Handler()这样一来每条请求都会留下由哪个模型处理的痕迹A/B 测试的数据就有了采集入口。如果再配合 components/model/httptransport 提供的 cURL 风格 HTTP 传输日志连请求体与响应细节都能完整记录。工程细节这些省心设计值得知道工具调用透明化WithTools 保存的ToolInfo会在路由成功后惰性注入到所选模型若某个模型不支持工具调用则自动跳过无需你写分支判断。流式与阻塞双支持Generate 与 Stream 共享同一套路由逻辑切换调用方式时路由行为一致。回调不重复触发组件通过IsCallbacksEnabled协调回调边界ab_router.go#L131避免外层包装 内层模型双重触发 OnStart/OnEnd。错误可观测路由失败或模型调用出错时都会触发OnError回调方便你监控 A/B 链路的健康度。进阶4 种常见路由策略设计由于路由函数每次请求都会被调用你可以轻松实现以下策略策略思路适用场景流量比例分流按随机数或用户 ID 哈希分配 95% / 5% 流量新模型灰度验证功能开关路由根据用户等级、实验分组返回不同模型精细化运营实验成本降级主模型超时/报错时在路由函数中回退到备用模型高可用保障内容感知路由分析输入复杂度简单问题走小模型、难题走大模型降本增效示例中按内容长度奇偶分流只是一个最小演示把哈希、Redis、配置中心接进来就能落地生产级的 A/B 实验平台。常见问题FAQQ1运行中更换模型需要重启服务吗不需要。路由函数在每次请求时执行你甚至可以根据外部配置中心实时改变分流比例实现热切换。Q2选中的模型不支持工具调用怎么办AB Router 会自动检测只有实现了ToolCallingChatModel的模型才会注入 Tools见 ab_router.go#L69-L75其余模型直接走普通对话。Q3如何确认线上流量确实按预期分流用回调打印RunInfo.Name并接入统计即可按分钟/小时聚合出各模型的实际请求量。小结通过 eino-examples 的 AB Router你只需三步就能完成大模型 A/B 测试与动态切换用NewABRouterChatModel传入路由函数定义什么请求走什么模型像普通 ChatModel 一样调用Generate/Stream通过回调中的RunInfo.Name追踪每次请求的模型选择。相关源码与资料建议按顺序阅读路由核心实现components/model/abtest/ab_router.go完整运行示例components/model/abtest/example/main.goHTTP 传输日志组件components/model/httptransport/仓库示例总览COOKBOOK.md赞分享【免费下载链接】eino-examplesExamples and demonstrations for using the Eino framework项目地址https://gitcode.com/gh_mirrors/ei/eino-examples点击查看免费下载相关推荐LangChain.js 快速上手三步搭出你的第一个 AI 智能代理LangChain.js 快速上手三步搭出你的第一个 AI 智能代理 想让大模型真正干活光会聊天还不够它得会查资料、会调工具、会记事。LangChain.人工智能AI 应用大模型RAGAI Agent如何在ollmcp中挑选与切换模型动态模型切换与Ollama Cloud大模型实战指南如何在ollmcp中挑选与切换模型动态模型切换与Ollama Cloud大模型实战指南 ollmcpMCP Client for Ollama是一个基于终LDDC歌词工具三分钟学会高效歌词匹配与格式转换的完整指南LDDC歌词工具三分钟学会高效歌词匹配与格式转换的完整指南 你是否曾经为了给心爱的歌曲找到完美匹配的歌词而烦恼或者需要将歌词转换成不同格式以适配各种播放器和桌面应用音频上一篇【亲测免费】 探索隐私保护的新高度Privacy Meter开源项目推荐下一篇IRISMAN终极指南PS3游戏管理神器完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。