Schema

April 18, 2026 · View on GitHub

The canonical source of truth is arabic_agent_eval/dataset.py (Python dataclasses). The JSONL files under data/ are derived artifacts; regenerate with aae export or python scripts/export_jsonl.py.

EvalItem

Every evaluation row in data/*.jsonl conforms to this shape:

FieldTypeDescription
idstrUnique identifier, prefixed by category (e.g. simple_001, dialect_007).
categorystrOne of: simple_function_calling, parameter_extraction, multi_step, dialect_handling, tool_selection, error_recovery.
instructionstrNatural-language user instruction in Arabic.
dialectstrOne of: msa, gulf, egyptian, levantine, maghrebi.
available_functionslist[str]Function names exposed to the agent for this item. Must all be declared in data/functions.json.
expected_callslist[ExpectedCall]Ordered list of tool calls the agent should produce.
difficultystrOne of: easy, medium, hard.
error_responsedict | nullPresent only for error_recovery items; the simulated tool error the agent must surface.

ExpectedCall

FieldTypeDescription
functionstrTarget function name. The literal * acts as wildcard for multi-step items where the intermediate call's arguments depend on runtime state.
argumentsdict[str, Any]Expected argument key/value pairs. Argument values may be * (wildcard) to accept any concrete value. Arabic string values are compared after normalization (see grading.md).

Function registry

data/functions.json contains the 22 tool definitions exposed to agents. Each follows the OpenAI function-calling schema with Arabic metadata:

{
  "name": "book_hotel",
  "name_ar": "حجز فندق",
  "description": "Book a hotel room",
  "description_ar": "حجز غرفة في فندق",
  "parameters": {
    "type": "object",
    "properties": {
      "city": {"type": "string", "description": "City name"},
      "check_in": {"type": "string", "description": "Check-in date"},
      "check_out": {"type": "string", "description": "Check-out date"},
      "guests": {"type": "integer", "description": "Number of guests"}
    },
    "required": ["city", "check_in", "check_out"]
  }
}

The name and description fields are English for cross-model interoperability; name_ar and description_ar are the human-readable Arabic counterparts the evaluator surfaces to the agent (via to_openai_tools). Arabic descriptions are the primary signal to the model during evaluation.

Category → weight mapping

Overall score is a weighted average across categories:

CategoryWeight
simple_function_calling0.20
parameter_extraction0.20
multi_step0.20
dialect_handling0.15
tool_selection0.15
error_recovery0.10

Weights sum to 1.0. Change via CATEGORIES in arabic_agent_eval/dataset.py.

Versioning

The dataset ships as v0.1.0 — reference set. Expansion is tracked in GitHub issues; the Python literal source is the canonical versioning surface.