Create a provider for the given model string.
(model: str)
| 95 | |
| 96 | |
| 97 | def make_provider(model: str) -> LLMProvider: |
| 98 | """Create a provider for the given model string.""" |
| 99 | base, effort = _parse_model(model) |
| 100 | if base.startswith("codex"): |
| 101 | from explainshell.extraction.llm.providers.codex import CodexProvider |
| 102 | |
| 103 | return CodexProvider(base, reasoning_effort=effort) |
| 104 | if base.startswith("gemini/"): |
| 105 | from explainshell.extraction.llm.providers.gemini import GeminiProvider |
| 106 | |
| 107 | return GeminiProvider(base, reasoning_effort=effort) |
| 108 | if base.startswith(("openai/", "azure/")): |
| 109 | from explainshell.extraction.llm.providers.openai import OpenAIProvider |
| 110 | |
| 111 | return OpenAIProvider(base, reasoning_effort=effort) |
| 112 | |
| 113 | raise ValueError(f"Unsupported model: {model}") |
| 114 | |
| 115 | |
| 116 | def make_batch_provider(model: str) -> BatchProvider: |