Skip to main content

Agent Behavior Specification (ABS)

A vendor-neutral, human-readable format for describing the observable behavior of AI agents — what users say, what agents do, and how it should be evaluated. Like OpenAPI for HTTP APIs, ABS gives agent behavior a shared, tool-independent contract.

📖 Full documentation · 📦 GitHub

Install

pip install abslang

Commands

abslang init

Scaffold a new ABS project with an example session and dataset.

abslang init

Creates abs.config.yaml, sessions/order-status.abs.yaml, and sessions/order-status.jsonl (3 rows).

abslang run

Execute ABS sessions against an agent.

# Single session
abslang run sessions/order-status.abs.yaml --agent http://localhost:8080/chat

# With a dataset (parametrized testing — one run per row)
abslang run sessions/order-status.abs.yaml --agent $URL --dataset sessions/order-status.jsonl

# With a single variable override
abslang run sessions/order-status.abs.yaml --agent $URL --var orderId=12345

# All sessions in a directory
abslang run sessions/ --agent $URL --dataset datasets/

# CI mode with JUnit output
abslang run sessions/ --agent $STAGING --dataset datasets/ --format junit --ci > report.xml
Option Description
--agent <url> Agent endpoint URL (or set ABS_AGENT_URL)
--dataset <path> JSON/JSONL dataset file
--var key=value Single variable binding (repeatable)
--filter key:value Filter dataset rows
--agent-format openai (default), claude, or gemini
--agent-auth none, api_key, bearer, or oauth2
--agent-token Auth token or API key
--adapter llm_judge=aievaluator Route LLM judge through AI Evaluator
--format table (default), json, or junit
--ci CI mode (no colors)
--timeout <n> Timeout per session in seconds (default: 300)
--output <path> Write report to file
--parallel <n> Run N dataset rows in parallel

abslang report

View results from a previous abslang run --output.

abslang report report.json                  # Table view
abslang report report.json --format json    # Machine-readable
abslang report report.json --format junit   # CI integration
abslang report report.json --failed         # Only failed cases
abslang report report.json --detail 3       # Full trace for row #3

abslang chat

Generate ABS YAML by describing the behavior in plain language.

# Works with OpenAI, Anthropic, or DeepSeek — auto-detects from env
abslang chat

# Or specify a provider
abslang chat --provider openai
abslang chat --provider anthropic
abslang chat --provider deepseek

# You: A customer asks for a refund. The agent should verify the order, process it, and confirm.
# → generates .abs.yaml with evaluations, datasets, and chain checks

Commands inside chat: /save <path>, /force <path>, /quit.

abslang generate-ci

Generate a CI/CD workflow file.

abslang generate-ci --platform github   # GitHub Actions
abslang generate-ci --platform gitlab   # GitLab CI

Test with the mock agent

# Terminal 1: start mock agent
python tools/mock_agent.py --scenario happy

# Terminal 2: run the example
abslang run examples/order-status.yaml --agent http://localhost:8080/chat

Library usage

from abslang import parse, run
from abslang.runner import AgentConfig
import asyncio

session = parse('session.abs.yaml')
result = asyncio.run(run(session, AgentConfig(
    url='http://localhost:8080/chat',
    format='openai',
)))
print(result.passed)  # True | False

Links

License

Apache 2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

abslang-0.1.2.tar.gz (30.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

abslang-0.1.2-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

File details

Details for the file abslang-0.1.2.tar.gz.

File metadata

  • Download URL: abslang-0.1.2.tar.gz
  • Upload date:
  • Size: 30.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for abslang-0.1.2.tar.gz
Algorithm Hash digest
SHA256 b07031902d70a1bcd581cd0d91ae8b1c1619996ee1b561e9b8580050e38f96cd
MD5 59b073f751956547ac0d3cd4cc43b8d9
BLAKE2b-256 c650129c9332f8046667d8ace216369269ef2fc4fdb5cc0b126962367e29f889

See more details on using hashes here.

Provenance

The following attestation bundles were made for abslang-0.1.2.tar.gz:

Publisher: publish-pypi.yml on fvinciarelli/abslang

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file abslang-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: abslang-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 34.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for abslang-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 133cc47f679d680e6753ae6f826e6814b72e82f805a21b69e6ea33eb563574c9
MD5 0aef20c4d1e43da7d8913cc827b06369
BLAKE2b-256 1afc752cc4ac73d165a4f9205c07c029451e8d0ff542f02ca5a853035b118963

See more details on using hashes here.

Provenance

The following attestation bundles were made for abslang-0.1.2-py3-none-any.whl:

Publisher: publish-pypi.yml on fvinciarelli/abslang

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page