Skip to content

jarvis_agent

jarvis_agent

Jarvis Agent backend — agent-level inference with tool calling.

Classes

JarvisAgentBackend

JarvisAgentBackend(engine_key: Optional[str] = None, agent_name: str = 'orchestrator', tools: Optional[List[str]] = None, telemetry: bool = False, gpu_metrics: bool = False, model: Optional[str] = None, max_turns: Optional[int] = None, skills_enabled: bool = True, overlay_dir: Optional[Path] = None, base_url: Optional[str] = None, api_key: Optional[str] = None)

Bases: InferenceBackend

Agent-level inference via SystemBuilder + JarvisSystem.ask().

Supports tool calling via the agent harness. Works for both local and cloud models.

Source code in src/openjarvis/evals/backends/jarvis_agent.py
def __init__(
    self,
    engine_key: Optional[str] = None,
    agent_name: str = "orchestrator",
    tools: Optional[List[str]] = None,
    telemetry: bool = False,
    gpu_metrics: bool = False,
    model: Optional[str] = None,
    max_turns: Optional[int] = None,
    skills_enabled: bool = True,
    overlay_dir: Optional[Path] = None,
    base_url: Optional[str] = None,
    api_key: Optional[str] = None,
) -> None:
    from openjarvis.system import SystemBuilder

    self._agent_name = agent_name
    self._tools = tools or []
    self._telemetry = telemetry
    self._gpu_metrics = gpu_metrics

    builder = SystemBuilder()
    if base_url:
        # Explicit endpoint targeting (--base-url): pin the eval to
        # exactly this OpenAI-compatible endpoint. Fails fast if it is
        # unreachable; never falls back to a discovered engine.
        from openjarvis.evals.backends._endpoint_util import (
            build_endpoint_engine,
        )

        engine = build_endpoint_engine(base_url, api_key, engine_key)
        builder.engine_instance(engine, key=engine_key or "openai-compat")
    elif engine_key:
        builder.engine(engine_key)
    if model:
        builder.model(model)
    builder.agent(agent_name)
    if tools:
        builder.tools(tools)
    # Propagate gpu_metrics to the runtime config so SystemBuilder
    # creates a GpuMonitor when building the InstrumentedEngine.
    if gpu_metrics:
        builder._config.telemetry.gpu_metrics = True
    # Override the agent's per-run turn budget. JarvisConfig.agent.max_turns
    # defaults to 10, which is too low for thinking/reasoning models on
    # multi-step agentic benchmarks (Trinity-Large hit the cap on 25/50
    # GAIA tasks before this was configurable per-eval).
    if max_turns is not None:
        builder._config.agent.max_turns = max_turns
    # Plan 2B: per-condition skill switches.  Mutate the builder's
    # config directly so SystemBuilder picks them up at build time.
    builder._config.skills.enabled = skills_enabled
    if overlay_dir is not None:
        builder._config.learning.skills.overlay_dir = str(overlay_dir)
    self._system = builder.telemetry(telemetry).traces(telemetry).build()
Attributes
framework_commit_value property
framework_commit_value: str

OpenJarvis repo HEAD commit (for telemetry tagging).

Functions
set_task_metadata
set_task_metadata(metadata: dict) -> None

Forward task environment metadata to the underlying agent.

Source code in src/openjarvis/evals/backends/jarvis_agent.py
def set_task_metadata(self, metadata: dict) -> None:
    """Forward task environment metadata to the underlying agent."""
    agent = getattr(self._system, "_agent", None)
    if agent and hasattr(agent, "set_task_metadata"):
        agent.set_task_metadata(metadata)

Functions