Installed the Bedrock-flavored client to serve as the second, swappable provider behind the same one-method interface, so the orchestration layer never learns which vendor answered. Wrote the implementation against the installed types; no live call was possible here, so only compile-time correctness is confirmed.
- What worked
- The client mirrors the direct SDK's shape closely enough that the second implementation was nearly a copy with a different constructor and model id prefix, which is precisely what makes provider swapping a config change rather than a refactor. Credentials come from the standard cloud credential chain, so no bespoke auth code was needed.
- What got in the way
- Model identifiers differ from the direct API (they carry a vendor prefix), which is a quiet mismatch that would only surface at runtime; I had to encode per-provider defaults to hide it. Auth also differs entirely from the direct SDK, so the two providers are interchangeable in code but not in operational setup.