ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Go Micro 模型提供方一致性测试矩阵(Provider Conformance Matrix)完全指南

Go Micro 模型提供方一致性测试矩阵(Provider Conformance Matrix)完全指南 后端微服务AI AgentRPC框架【免费下载链接】go-microA Go agent harness and service framework项目地址https://gitcode.com/gh_mirrors/go/go-micro点击查看免费下载Go Micro 将模型提供方model provider视为同一套 Agent 工具链中可互换的组件服务暴露工具tools、Agent 在其上推理、工作流workflows把各部分编排在一起。provider-conformance一致性测试工具保证这一承诺是真实的——它对每个已配置的提供方运行同一套确定性的服务 → Agent → 工作流场景任何已配置提供方破坏共享契约都会导致命令失败。读完本文你将掌握如何在本仓库中运行一致性测试、如何用mock提供方做无密钥冒烟验证、如何按提供方/场景聚焦检查、如何在 CI 中要求密钥必须存在以及如何导出机器可读的 JSON / Markdown 一致性报告。什么是一致性测试为什么需要它位于internal/harness/provider-conformance的实时一致性测试工具live harness是这套机制的落点。它的设计约束非常明确确定性每个场景都是固定脚本可重复执行默认跳过无密钥提供方缺少 API key 的提供方按 skip 处理因此在本机开发、fork 或定时 CI 中运行都是安全的失败即报错一旦某个已配置的提供方破坏了共享契约services → agents → workflows 生命周期命令以非零状态退出。运行全部已配置密钥的提供方go run ./internal/harness/provider-conformance运行同一套线路的无密钥冒烟测试使用 mock 提供方go run ./internal/harness/provider-conformance -providers mock从源码看main.go会先校验-providers与-harnesses的合法性validateSelection会拒绝未知提供方名与含路径分隔符的危险 harness 名对应的单元测试见 main_test.go随后按提供方 × harness 两两展开执行。状态图例Status legend文档与工具输出使用统一的状态符号StatusMeaning✅ Verified已由 provider-conformance 工具对已配置的实时提供方configured live providers覆盖验证。⚠️ Unverified已在公开 API 中实现但尚未被 provider conformance 实际运行覆盖。— Unsupported该提供方集成当前未暴露此能力。需要说明的是这里的 Verified 只代表配置了密钥的运行通过全部所选 harness它不衡量模型输出质量只衡量契约是否成立。Harness 覆盖能力矩阵以下行描述一致性测试当前实际验证的内容当已配置密钥的运行通过所有选定 harness 时该提供方即被视为 conformant。CapabilityHarness coverageNotesSimple generation✅ Verified每个 harness 都通过ai.Model要求提供方产出一条 Agent 回复。Service tool calls✅ Verifiedharness 中的服务被 Agent 当作模型选中的工具发现并调用。Multi-step tool use✅ Verifieduniverse与plan-delegate两个 harness 要求多于一次服务/工具动作。plan✅ Verifiedplan-delegate验证 conductor Agent 将计划持久化到作用域状态scoped state。delegate✅ Verifiedplan-delegate验证经真实 RPC 的 Agent 间委派agent-to-agent delegation。Guardrail/stop behavior✅ Verifieduniverse在启用 guardrails 的情况下运行并断言受防护路径能完成。Streaming⚠️ Unverifiedai.Model.Stream已存在于接口但端到端流式一致性测试是路线图项。Structured errors⚠️ Unverified错误处理由常规测试套件覆盖但 provider conformance 尚未对比结构化的提供方错误。底层 harness 到底在跑什么默认的 harness 列表定义在main.goconst defaultHarnesses agent,universe,agent-flow,plan-delegate,a2a-streaming,a2a-stream-fallback每个 harness 都对应internal/harness/下的一个独立场景目录且每个 harness 会标注它正在证明的生命周期阶段phaseHarnessPhase 标签源码定义场景要点agentmodel call tool call通过go test ./agent -run TestAgentProvider(ConformanceMatrix|StreamConformanceMatrix)运行 Agent 提供方工具调用一致性测试并传递 run metadatamock 时映射为fake提供方见runAgentConformance。universeservice discovery tool call在单进程中启动一个小型真实 go-micro 世界4 个真实服务inventory、payment、orders、notify 持久化流程 checkout 崩溃/恢复 带 guardrails 的 concierge Agent 作用域状态 A2A 网关探针见universe/main.go。agent-flowworkflow event tool call事件即提示词events.user.created事件经 broker 到达 FlowFlow 渲染为提示词交给 onboarder AgentAgent 调用 workspace/notify 服务完成用户 onboarding见agent-flow/main.go。plan-delegateplan persistence delegation tool call真实 task/notify 服务 conductor/comms 两个真实 Agentconductor 必须先调用内置plan工具持久化计划再创建 Design/Build/Ship 任务再经真实 RPC 委派 comms Agent 发送通知见plan-delegate/main.go。a2a-streamingA2A streaming tool callA2A 流式链路与工具调用。a2a-stream-fallbackstreaming fallback tool callA2Amessage/stream经 gateway 走通包括当提供方不支持流式时回退到工具调用的Ask路径并保留 run metadata。每个 harness 只 mock LLM用确定性 mock provider 模拟模型决策其余全部是真实组件——注册中心registry、RPC、broker、store、flow 引擎、agent loop 都是真的因此它同时充当端到端测试断言失败即以非零码退出。值得一提的是plan-delegate的 mock 还内置了多种真实故障注入伪造未知委派工具名模拟模型幻觉、重复 notify、重复 delegate、任务完成后中断、嵌套工具调用标记注入验证 guardrail 拒绝见plan-delegate/main.go。执行引擎与超时保障runHarness的实现值得一提它不用go run而是先把 harness 构建成临时二进制再执行因为go run启动的编译产物是其子进程、在 context 取消时不会被杀死而 harness 会启动本地服务可能比超时活得更久。直接运行二进制让超时诚实——取消 context 会杀死真正干活的那个进程。每个提供方/harness 运行默认超时为 10 分钟-timeout运行环境还会清除 HTTP(S)_PROXY 并设置NO_PROXY*见localRPCEnv避免代理干扰本地 RPC 链路。提供方能力矩阵下表综合了已注册的提供方接口与上面的覆盖情况。chat/text 列即 harness 路径当提供方配置了密钥时conformance 命令会执行上一节中 Verified 的行。ProviderChat/text agent harnessImageVideoStreamingStructured errorsanthropic✅ Verified when configured— Unsupported— Unsupported✅ Verified when configured⚠️ Unverifiedopenai✅ Verified when configured✅ Registered— Unsupported⚠️ Unverified⚠️ Unverifiedgemini✅ Verified when configured— Unsupported— Unsupported✅ Verified when configured⚠️ Unverifiedgroq✅ Verified when configured— Unsupported— Unsupported⚠️ Unverified⚠️ Unverifiedmistral✅ Verified when configured— Unsupported— Unsupported⚠️ Unverified⚠️ Unverifiedtogether✅ Verified when configured— Unsupported— Unsupported⚠️ Unverified⚠️ Unverifiedatlascloud✅ Verified when configured✅ Registered✅ Registered⚠️ Unverified⚠️ Unverified补充说明minimax也已注册为实时提供方见下文密钥表其能力按单元测试断言为 model streaming无 image/video见 main_test.go。能力矩阵的数据来源注册表而非营销宣传-capabilities打印的能力矩阵直接来自ai/capabilities.go的CapabilityRows()。Capabilities结构体明确声明其依据是包注册而不是外部提供方宣传口径因此反映的是这个构建实际能用到什么Modelai.New能否构造 chat/text 模型提供方Imageai.NewImage能否构造图像模型提供方Videoai.NewVideo能否构造视频模型提供方Stream提供方是否注册了可用的端到端 token 流式仅实现Model接口但Stream返回ErrStreamingUnsupported的提供方保持 falseToolStream提供方是否支持携带工具 schema 的 Agent 流式请求支持纯 token 流式但流式 API 不接受工具的提供方会保持 false。能力快照通过RegisterStream/RegisterToolStream在提供方init中登记CapabilityRows()返回按提供方名排序的确定性行供 CLI、文档生成器与一致性报告使用。聚焦检查按提供方与场景挑选使用-providers选择提供方、-harnesses收窄场景go run ./internal/harness/provider-conformance \ -providers openai,anthropic \ -harnesses agent-flow,plan-delegate-providers接受逗号分隔的提供方名mock表示确定性的本地检查-harnesses接受逗号分隔的 harness 目录名其中agent直接运行 Agent 提供方工具调用一致性测试。执行前工具会先校验选择未知提供方、危险 harness 名都会报错退出随后逐提供方逐 harness 打印 provider / harness (phase)行。缺失密钥默认按跳过处理默认情况下缺失实时提供方密钥会报告为 skip而不是失败。若某个已选提供方必须存在例如验证 CI 密钥真的接好了在 CI 中追加-require-configuredgo run ./internal/harness/provider-conformance \ -providers openai \ -require-configured源码中-require-configured为 false 时输出- provider: skipped (set MICRO_AI_API_KEY or PROVIDER_API_KEY)并记录 skip 结果为 true 时输出FAIL provider: missing API key并计入失败见 main.go。密钥读取规则密钥优先读MICRO_AI_API_KEY其次读提供方专属环境变量映射定义在 main.go 的providerEnvProviderSecret / environment variableAnthropicANTHROPIC_API_KEYOpenAIOPENAI_API_KEYGeminiGEMINI_API_KEYGroqGROQ_API_KEYMiniMaxMINIMAX_API_KEYMistralMISTRAL_API_KEYTogetherTOGETHER_API_KEYAtlasCloudATLASCLOUD_API_KEY运行前工具还会打印已注册的 model / image / video 提供方能力矩阵控制台表格字段provider、model、image、video、stream、tool-stream。若只想要 pass/fail 输出用-capabilitiesfalse关闭go run ./internal/harness/provider-conformance -providers mock -capabilitiesfalse输出报告JSON 与 Markdown为了自动化-summary-json会把所选提供方、harnesses、已注册能力行以及 pass/skip/fail 结果写入稳定的机器可读文件-summary-markdown生成人类可读的汇总-capabilities-markdown生成可直接发布的能力支持表适合发布说明、文档或 issue 更新go run ./internal/harness/provider-conformance \ -providers mock \ -summary-json provider-conformance-summary.json \ -capabilities-markdown provider-capabilities.mdJSON 汇总的结构定义在conformanceSummary包含providers、harnesses、capabilitiesai.CapabilityRow列表与逐条resultsprovider、harness、phase、status、error以及 passed / skipped / failed 计数。Markdown 汇总则由writeSummaryMarkdown生成包含通过/跳过/失败总数、## Capability matrix与## Harness results表错误文本中的|会被转义、换行会转为br。这些输出函数的单元测试见 main_test.go。运行结束时控制台打印总览provider conformance: N passed, M skipped providers, K failed只要有任何失败即以退出码 1 结束main.go这正是它可被 CI 直接使用的关键。定时 CI 行为与新增提供方调度 CI 如何运行Harness (E2E)工作流在 push 与 PR 上以确定性 mock LLM 运行包括provider-conformance -providers mock在每小时调度与手动触发时额外运行实时提供方一致性任务。手动触发可以收窄providers或harnesses并可设置require_configuredtrue在预期仓库密钥缺失时快速失败定时运行保持安全默认缺失密钥记 skip。实时任务执行步骤运行同一套agent、universe、agent-flow、plan-delegate、a2a-stream-fallbackharness 列表 → 从仓库 secrets 读取密钥 → 跳过密钥缺失的提供方 → 任一已配置提供方失败即整体失败 → 上传 JSON 与 Markdown 覆盖产物。此外Markdown 汇总与能力矩阵会追加到 GitHub Actions 步骤摘要step summary无需下载产物即可看到 configured / skipped / failed 的提供方覆盖情况。把新提供方纳入调度一致性测试依据 provider-conformance/README.md 的步骤注册其ai提供方实现与能力元数据调用ai.Register若支持流式再调用ai.RegisterStream/ai.RegisterToolStream见 ai/capabilities.go在 main.go 的providerEnv中加入提供方名与密钥环境变量在main.go中 import 该提供方包当前已 import anthropic、atlascloud、gemini、groq、minimax、mistral、openai、together见 main.go在.github/workflows/harness.yml中把对应仓库 secret 传进去提交前用实时密钥运行go run ./internal/harness/provider-conformance -providers name -require-configured验证。总结Provider Conformance Matrix 是 Go Micro 提供方可互换承诺的守门人同一套 services → agents → workflows 场景在每一个已配置提供方上原样重跑mock提供方让无密钥的确定性验证随时可得-require-configured让 CI 对密钥缺失快速失败JSON/Markdown 产物让覆盖情况可以直接沉淀为发布说明。无论你是要在本地快速验证、把某个提供方接入定时 CI还是把一个新的 AI 提供方纳入共享契约这套 harness 都是唯一的入口与事实来源。相关文档The Agent HarnessAgents and WorkflowsAI Provider GuideRoadmap赞分享后端微服务AI AgentRPC框架【免费下载链接】go-microA Go agent harness and service framework项目地址https://gitcode.com/gh_mirrors/go/go-micro点击查看免费下载相关推荐go-micro Provider Conformance 实践指南跨 AI 提供方的一致性验证测试框架go micro Provider Conformance 实践指南跨 AI 提供方的一致性验证测试框架 导读 go micro 仓库的 internal/h后端微服务AI AgentRPC框架go-micro Agent 提供商一致性矩阵让每个模型 Provider 都通过同一个工具调用契约go micro Agent 提供商一致性矩阵让每个模型 Provider 都通过同一个工具调用契约 go micro 把 Agent 视为与 service后端微服务AI AgentRPC框架Kubernetes 一致性测试Conformance Testing完全指南从 e2e 测试晋升到 Conformance 套件的实践路径Kubernetes 一致性测试Conformance Testing完全指南从 e2e 测试晋升到 Conformance 套件的实践路径 Kubern开源治理文档研发协作上一篇Lingui项目中的ICU MessageFormat国际化消息格式指南下一篇Bootstrap Switch 组件方法详解掌握开关控制的进阶技巧创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表