Skip to content

epic: switchyard_route — Mixture-of-Models routing POC around NeMo Switchyard #2

Description

@usize

Originating discussion: https://github.com/orgs/praxis-proxy/discussions/976
(maintainer +1: https://github.com/orgs/praxis-proxy/discussions/976#discussioncomment-18019663)
Parent epic: praxis-proxy/ai#758 (Track A; MVP success criterion 7)
Depends on: #1 (scaffold)

Summary

Build a POC switchyard_route HTTP filter in this repo around NVIDIA NeMo
Switchyard's switchyard-libsy (pre-alpha; pinned to v0.2.0. The filter buffers the request body

No classifier model needs to be shipped (the judge is an ordinary endpoint callout). We should think through failure modes carefully,
for example, what happens if we can no longer reach the classifier model? We should try to avoid turn by turn thrashing by e.g., having a fallback to a sensible model in place.

Acceptance criteria

  • The composed experimental server routes /v1/chat/completions traffic across two
    models per the configured algorithm, with the judge served by callout —
    demonstrable with the repo's kind tooling or a documented local recipe.
  • make all (build, fmt, lint, test, audit) passes.
  • Decision observable via switchyard_route.cluster / .tier / .algorithm
    filter metadata.

Out of scope

  • Async judge-based quality sampling (@yossiovadia's complementary proposal —
    awaiting its own discussion).
  • model_rewrite and the classify→validate→select→rewrite pipeline (praxis#838, ai#643).
  • Durable/cross-replica session state (upstream Switchyard has no storage hook in v0.2.0).
  • Building or shipping our own classifier model (epic ai#74 / ai#715 territory).
  • Streaming judge responses, hedged multi-candidate answer calls, StageRouter
    and Custom classifier modes (documented as follow-ups if the POC graduates).

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions