【要約】CodeRouter の内側 — Anthropic ⇄ OpenAI 双方向翻訳と mid-stream セーフなフォールバック設計 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
- ・プロトコル間の非対称性による変換エラー。特にcontent構造やtool_callsの扱いの違い。
- ・ストリーミング中の接続断により、異なるプロバイダの応答が混ざる「フランケン応答」の発生。
- ・SSEのチャンク境界で
<think>タグ等が分断され、正しく除去できない問題。 - ・小型モデルによる不完全なJSON出力や、誤ったツール呼び出しの混入。
// Approach
1.**プロトコルの直交化**: IngressとProvider kindを分離。2×2のマトリクスで全組み合わせに対応。
2.**Mid-stream フォールバックガード**: 最初のコンテンツバイト送信後は切り替えを禁止。エラー時は
event: errorを合成。3.**ステートフル SSE フィルタ**: ステートマシンを用い、チャンク境界を跨ぐ
<think>やstopマーカーを正確に除去。4.**Tool-call リペア**: Balanced brace scannerにより、不完全なJSONを分離・保留し、正当なツール呼び出しのみを採用。
5.**実地プローブ (doctor)**:
httpxによる実地検証を実施。Exit code 0/1/2で判定結果を制御。// Result
- ・453本のテストにより、変換、フィルタ、フォールバックの信頼性を担保。
- ・依存関係を5個(fastapi, uvicorn, httpx, pydantic, pyyaml)に限定し、サプライチェーンリスクを最小化。
- ・Python 3.12+とpure asyncioにより、高効率な非同期生成パイプラインを実現。
Senior Engineer Insight
> 極めて実戦的な設計である。特にSSEのチャンク境界を意識したステートマシン実装や、フォールバック時の「フランケン応答」防止策は、低レイテンシ・高可用性が求められる現場の痛みを正確に突いている。依存関係を5個に絞る規律も、運用コストとセキュリティの観点から高く評価できる。単なるプロキシではなく、プロトコルの差異を吸収する「翻訳層」としての責務が明確であり、LLMエージェントの基盤として極めて堅牢な構成だ。