wiki-speedrun / src /agents /__init__.py
jwlutz's picture
Initial commit: Wikipedia Speedrun benchmark with Flask dashboard
0e61be5
Raw
History Blame Contribute Delete
2.25 kB
"""
Agents module.
Provides various agents for playing the Wikipedia game:
- HumanAgent: Human player via stdin
- RandomAgent: Random baseline
- PrecomputedEmbeddingAgent: Uses pre-computed title embeddings
- LiveEmbeddingAgent: Computes embeddings on-the-fly
- HybridEmbeddingAgent: Pre-computed filter + live re-rank
- OracleAgent: BFS optimal path (uses pre-computed graph)
- LiveOracleAgent: BFS optimal path (live Wikipedia scraping)
- LLMAgent: LLM-based agent using OpenRouter
"""
from src.agents.base import Agent, AgentContext
from src.agents.embedding import (
HybridEmbeddingAgent,
LiveEmbeddingAgent,
PrecomputedEmbeddingAgent,
)
from src.agents.human import HumanAgent
from src.agents.live_oracle import LiveOracleAgent
from src.agents.llm import LLMAgent, get_available_models
from src.agents.oracle import OracleAgent
from src.agents.random_agent import RandomAgent
__all__ = [
"Agent",
"AgentContext",
"HumanAgent",
"RandomAgent",
"PrecomputedEmbeddingAgent",
"LiveEmbeddingAgent",
"HybridEmbeddingAgent",
"OracleAgent",
"LiveOracleAgent",
"LLMAgent",
"get_available_models",
]
def get_agent(name: str, **kwargs) -> Agent:
"""
Get an agent by name.
Args:
name: Agent identifier (human, random, precomputed, live, hybrid, oracle, live-oracle, llm)
**kwargs: Additional arguments passed to agent constructor (e.g., model, prefilter)
Returns:
Instantiated agent
Raises:
ValueError: If agent name is unknown
"""
agents = {
"human": HumanAgent,
"random": RandomAgent,
"precomputed": PrecomputedEmbeddingAgent,
"live": LiveEmbeddingAgent,
"hybrid": HybridEmbeddingAgent,
"oracle": OracleAgent,
"live-oracle": LiveOracleAgent,
"llm": LLMAgent,
}
if name not in agents:
available = ", ".join(agents.keys())
raise ValueError(f"Unknown agent '{name}'. Available: {available}")
# These agents accept kwargs
if name == "llm":
return LLMAgent(**kwargs)
if name == "live-oracle":
return LiveOracleAgent(**kwargs)
if name == "live":
return LiveEmbeddingAgent(**kwargs)
return agents[name]()