Split a model string into (base_model, reasoning_effort). Providers with a known single-segment prefix (openai/, azure/, gemini/, codex/) treat a third ``/``-segment as the effort value:: openai/gpt-5-mini/medium → ("openai/gpt-5-mini", "medium") codex/o3/high
(model: str)
| 74 | |
| 75 | |
| 76 | def _parse_model(model: str) -> tuple[str, str | None]: |
| 77 | """Split a model string into (base_model, reasoning_effort). |
| 78 | |
| 79 | Providers with a known single-segment prefix (openai/, azure/, gemini/, |
| 80 | codex/) treat a third ``/``-segment as the effort value:: |
| 81 | |
| 82 | openai/gpt-5-mini/medium → ("openai/gpt-5-mini", "medium") |
| 83 | codex/o3/high → ("codex/o3", "high") |
| 84 | """ |
| 85 | _KNOWN_PREFIXES = ("openai/", "azure/", "gemini/", "codex/") |
| 86 | for prefix in _KNOWN_PREFIXES: |
| 87 | if model.startswith(prefix): |
| 88 | rest = model[len(prefix) :] |
| 89 | parts = rest.split("/", 1) |
| 90 | if len(parts) == 2: |
| 91 | return prefix + parts[0], parts[1] |
| 92 | return model, None |
| 93 | |
| 94 | return model, None |
| 95 | |
| 96 | |
| 97 | def make_provider(model: str) -> LLMProvider: |
no outgoing calls
no test coverage detected