Spaces:
Sleeping
Sleeping
Download src/elbench/basic_education_runtime/router.py from adelevett/ELBench-live: direct link, hf CLI and curl.
- Browser
- Download file 1.93 kB
-
https://huggingface.co/spaces/adelevett/ELBench-live/resolve/main/src/elbench/basic_education_runtime/router.py
- Command line
-
hf download hf://spaces/adelevett/ELBench-live/src/elbench/basic_education_runtime/router.py
-
curl -L -o router.py https://huggingface.co/spaces/adelevett/ELBench-live/resolve/main/src/elbench/basic_education_runtime/router.py
1.93 kB
| from langgraph.prebuilt.chat_agent_executor import AgentState | |
| from langchain_core.messages import BaseMessage | |
| from typing import Union, Sequence, Callable, Tuple, Dict | |
| from elbench.basic_education_runtime.utils import content_to_text, remove_think | |
| def any_keyword_route( | |
| keywords: Sequence[str], exists_to: str, else_to: str, think_as_message: bool = False | |
| ) -> Tuple[Callable[..., bool], Dict[bool, str]]: | |
| """Route based on keywords.""" | |
| path_map = { | |
| True: exists_to, | |
| False: else_to, | |
| } | |
| def route(state: Union[AgentState, Sequence[BaseMessage]]) -> bool: | |
| """Route based on keywords.""" | |
| if isinstance(state, Sequence): | |
| message = state[-1] | |
| elif messages := state.get("messages", []): | |
| message = messages[-1] | |
| else: | |
| raise ValueError("No messages found, error while routing") | |
| content = message.content | |
| if not think_as_message: | |
| content = remove_think(content) # Remove think tags | |
| text = content_to_text(content, include_reasoning=think_as_message).lower() | |
| return any(keyword in text for keyword in keywords) | |
| return (route, path_map) | |
| def all_keyword_route( | |
| keywords: Sequence[str], exists_to: str, else_to: str | |
| ) -> Tuple[Callable[..., bool], Dict[bool, str]]: | |
| """Route based on keywords.""" | |
| path_map = { | |
| True: exists_to, | |
| False: else_to, | |
| } | |
| def route(state: Union[AgentState, Sequence[BaseMessage]]) -> bool: | |
| """Route based on keywords.""" | |
| if isinstance(state, Sequence): | |
| message = state[-1] | |
| elif messages := state.get("messages", []): | |
| message = messages[-1] | |
| else: | |
| raise ValueError("No messages found, error while routing") | |
| text = content_to_text(message.content).lower() | |
| return all(keyword in text for keyword in keywords) | |
| return (route, path_map) | |