Skip to main content

Active-ARC

A Python SDK for building agents that solve Active-ARC tasks.

Installation

pip install active-arc

Or with uv:

uv add active-arc

Quick Start

from active_arc import Agent, Swarm, SessionState, Grid

class MyAgent(Agent):
    MAX_QUERIES = 50

    def query(self, session: SessionState) -> Grid | None:
        """Choose an input grid to query the oracle. Return None to stop querying."""
        # Your logic here
        return [[1, 2], [3, 4]]

    def submit(self, session: SessionState) -> Grid:
        """Predict the output grid for session.test_input."""
        # Your logic here
        return session.test_input

# Run on tasks
swarm = Swarm(
    tasks=["007bbfb7"],
    agent_class=MyAgent,
)
swarm.run()

Configuration

Set your API key as an environment variable:

export ACTIVE_ARC_API_KEY="your_api_key_here"

Or create a .env file:

ACTIVE_ARC_API_KEY=your_api_key_here

Agent API

Agents must implement two methods:

Method Purpose
query(session) -> Grid | None Choose an input grid to query the oracle. Return None to stop querying and proceed to test phase.
submit(session) -> Grid Predict the output grid for session.test_input.

Session State

The SessionState object provides:

  • session.task_id - Current task ID
  • session.query_count - Number of queries made
  • session.queries - List of QueryRecord objects (input/output pairs)
  • session.test_input - The test input grid (available in test phase)
  • session.phase - Current phase (learning, test, or completed)

Optional Methods

Override these for custom reasoning metadata:

def get_query_reasoning(self, session: SessionState, query_input: Grid) -> Any:
    """Return metadata to store with this query."""
    return {"model": "gpt-4o", "tokens": 150}

def get_submit_reasoning(self, session: SessionState, answer: Grid) -> Any:
    """Return metadata to store with the submission."""
    return {"confidence": 0.85}

Swarm API

The Swarm class runs agents on multiple tasks:

from active_arc import Swarm, Random

# Using a built-in agent
swarm = Swarm(tasks=["007bbfb7", "00d62c1b"], agent="random")

# Using a custom agent class
swarm = Swarm(tasks=["007bbfb7"], agent_class=MyAgent)

# With explicit configuration
swarm = Swarm(
    tasks=["007bbfb7"],
    root_url="https://api.active-arc.com",
    agent_class=MyAgent,
    tags=["experiment-1", "v1.0"],
)

scorecard = swarm.run()
print(f"Solved: {scorecard.solved}/{scorecard.attempted}")

Built-in Agents

Random Agent

Makes random queries and returns the test input as the answer:

from active_arc import Swarm

swarm = Swarm(tasks=["007bbfb7"], agent="random")
swarm.run()

LLM Agent

Uses OpenAI's API to make intelligent queries:

from active_arc import Swarm

# Requires OPENAI_API_KEY environment variable
swarm = Swarm(tasks=["007bbfb7"], agent="llm")
swarm.run()

CLI Usage

Run agents from the command line:

# Run random agent on a specific task
python main.py -a random -t 007bbfb7

# Run with custom tags
python main.py -a random -t 007bbfb7 --tags "experiment,v1.0"

Data Types

from active_arc import (
    Grid,          # list[list[int]] - 2D grid of integers 0-9
    SessionState,  # Current session state
    SessionPhase,  # Enum: LEARNING, TEST, COMPLETED
    Scorecard,     # Results for all tasks
    TaskCard,      # Results for a single task
    QueryRecord,   # Input/output pair from a query
)

License

MIT License

Metadata

Release files for active-arc 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for active-arc 0.1.1
File Size Uploaded
active_arc-0.1.1.tar.gz 19.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for active-arc 0.1.1
File Interpreter ABI Platform
active_arc-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 35.9 kB

Release files / active_arc-0.1.1.tar.gz

Download URL active_arc-0.1.1.tar.gz
Size 19.5 kB
Tags Source
SHA-256 checksum
How to use checksums
28a7e4f3150a435297a66772ce75abb0e4327ac3865a635ec10ff5a3e8039d6f
BLAKE2b-256 checksum
How to use checksums
7cbbc5aaf0eac1075b2928db7bc87c0ef63b8fb42c4dd6c142d4cb126d2cdc01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.0

Release files / active_arc-0.1.1-py3-none-any.whl

Download URL active_arc-0.1.1-py3-none-any.whl
Size 16.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bddad24b77cdc0bb30cd5acafca0162bbef2dd562e8745af491d196f0022dd7a
BLAKE2b-256 checksum
How to use checksums
8ee24a05bdcc063c793c5376d585278300193e5ec1d1dab232031e4e4b875b8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.0

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page