Skip to content

Router

router

codex_ai.core.router

LLMRouter — registry for prompt builder functions.

Register builders via the @router.prompt(mode) decorator, then connect to LLMDispatcher via include_router().

Classes

LLMRouter

Router for grouping prompt builder functions by mode.

Example
router = LLMRouter()

@router.prompt("chat")
async def build_chat(text: str, history: list, **kw) -> PromptResult:
    return PromptResult(messages=[{"role": "user", "content": text}])

@router.prompt("summarize")
async def build_summarize(text: str, **kw) -> PromptResult:
    return PromptResult(
        messages=[{"role": "user", "content": f"Summarize: {text}"}],
        system="Be concise.",
    )
Source code in src/codex_ai/core/router.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
class LLMRouter:
    """
    Router for grouping prompt builder functions by mode.

    Example:
        ```python
        router = LLMRouter()

        @router.prompt("chat")
        async def build_chat(text: str, history: list, **kw) -> PromptResult:
            return PromptResult(messages=[{"role": "user", "content": text}])

        @router.prompt("summarize")
        async def build_summarize(text: str, **kw) -> PromptResult:
            return PromptResult(
                messages=[{"role": "user", "content": f"Summarize: {text}"}],
                system="Be concise.",
            )
        ```
    """

    def __init__(self) -> None:
        # {mode: builder_func}
        self._builders: dict[str, PromptBuilder] = {}

    def prompt(self, mode: str) -> Callable[[PromptBuilder], PromptBuilder]:
        """
        Decorator for registering a prompt builder for a given mode.

        Args:
            mode: Identifier string (e.g., ``"chat"``, ``"summarize"``).

        Returns:
            Decorator returning the original builder unchanged.
        """

        def decorator(fn: PromptBuilder) -> PromptBuilder:
            self._builders[mode] = fn
            return fn

        return decorator

    @property
    def builders(self) -> dict[str, PromptBuilder]:
        """Registered builders (read-only view)."""
        return self._builders
Attributes
builders property

Registered builders (read-only view).

Functions
prompt(mode)

Decorator for registering a prompt builder for a given mode.

Parameters:

Name Type Description Default
mode str

Identifier string (e.g., "chat", "summarize").

required

Returns:

Type Description
Callable[[PromptBuilder], PromptBuilder]

Decorator returning the original builder unchanged.

Source code in src/codex_ai/core/router.py
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
def prompt(self, mode: str) -> Callable[[PromptBuilder], PromptBuilder]:
    """
    Decorator for registering a prompt builder for a given mode.

    Args:
        mode: Identifier string (e.g., ``"chat"``, ``"summarize"``).

    Returns:
        Decorator returning the original builder unchanged.
    """

    def decorator(fn: PromptBuilder) -> PromptBuilder:
        self._builders[mode] = fn
        return fn

    return decorator