Skip to main content

Client library for Agent In The Loop confidence evaluation API

Project description

agent-in-the-loop

PyPI version Python License: MIT CI

A lightweight Python client for the Agent In The Loop (AITL) confidence evaluation API. Attach a callback to your LangChain / LangGraph run, then get a structured confidence score for the whole agent run — no manual context or trace-ID wiring required.


Installation

pip install "agent-in-the-loop[langchain]"

The langchain extra is required because agent runs are captured via a LangChain callback handler (get_agent_guard). Requires Python 3.9+.


Quick Start

from agent_in_the_loop import get_agent_guard, evaluate_confidence

# agent_name must be a stable, unique name for this agent graph — the
# backend uses it to track the graph's network profile across runs.
guard = get_agent_guard("research-agent")

# Attach the guard to your LangGraph / LangChain invocation
graph.invoke(inputs, config={"callbacks": [guard]})

# context, trace_id, and agent_name are all picked up automatically from
# the guard above — nothing else to pass in.
result = evaluate_confidence(api_key="your-api-key")

print(result.score)        # int, 1-10
print(result.explanation)  # str, human-readable reasoning

Environment Variables

The SDK always talks to the managed AITL backend at https://api.trellar.io — this is fixed and cannot be overridden via an environment variable or function argument.

Instead of passing api_key on every call, set it as an environment variable:

Variable Description Default
AGENT_IN_THE_LOOP_API_KEY Bearer token for authentication (required)
export AGENT_IN_THE_LOOP_API_KEY=your-api-key
from agent_in_the_loop import get_agent_guard, evaluate_confidence

guard = get_agent_guard("research-agent")
graph.invoke(inputs, config={"callbacks": [guard]})

result = evaluate_confidence()

How It Works

get_agent_guard(agent_name) returns a LangChain callback handler that:

  • Records every LLM, tool, and chain/graph lifecycle event fired during the run (on_llm_start, on_tool_end, on_chain_start, etc.), in order.
  • Captures the root run's run_id as the trace_id for the whole graph.
  • Registers itself in a ContextVar as the "active" guard for the current thread/async task, so evaluate_confidence() can find it automatically — no need to pass it around.

Once the graph run finishes, calling evaluate_confidence() sends the accumulated events, trace ID, and agent name to the AITL backend and returns a confidence score.

Different graphs in the same codebase must use different agent_name values.


API Reference

get_agent_guard

get_agent_guard(agent_name: str) -> BaseCallbackHandler
Parameter Type Description
agent_name str Stable, unique name identifying this agent graph (e.g. "research-agent")

Returns a LangChain callback handler bound to agent_name. Pass it to graph.invoke(..., config={"callbacks": [guard]}).

Raises:

  • ValueError — if agent_name is empty or blank

evaluate_confidence

evaluate_confidence(
    *,
    api_key: str | None = None,
    timeout: float = 30.0,
) -> AgentLoopResult
Parameter Type Description
api_key str | None Bearer token. Falls back to AGENT_IN_THE_LOOP_API_KEY
timeout float HTTP request timeout in seconds (default 30.0)

context, trace_id, and agent_name are all resolved automatically from the active guard created by get_agent_guard — there is no way to pass them manually. Requests are always sent to the fixed backend domain (https://api.trellar.io); there is no way for callers to redirect them elsewhere.

Raises:

  • ValueError — if no active guard is found, its trace_id cannot be resolved, or api_key is missing
  • requests.HTTPError — on non-2xx HTTP responses

AgentLoopResult

A frozen dataclass with two fields:

Field Type Description
score int Confidence score from 1 (low) to 10 (high)
explanation str Human-readable explanation of the score

Running Tests

pip install -e ".[test]"
pytest

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-feature)
  3. Commit your changes (git commit -m "Add my feature")
  4. Push to the branch (git push origin feature/my-feature)
  5. Open a Pull Request

License

MIT — see LICENSE for details.

Project details


Download files

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

Source Distribution

agent_in_the_loop-0.2.2.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

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

agent_in_the_loop-0.2.2-py3-none-any.whl (12.9 kB view details)

Uploaded Python 3

File details

Details for the file agent_in_the_loop-0.2.2.tar.gz.

File metadata

  • Download URL: agent_in_the_loop-0.2.2.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agent_in_the_loop-0.2.2.tar.gz
Algorithm Hash digest
SHA256 81995c025dddb28e89e9b78e6bd2eec2b5f360f3830d4f5e57d01aa5877cee93
MD5 c46ff1789f3e9b72ece32e4510a68ba7
BLAKE2b-256 788925caba99e7a2f64910f40e5e0bd3f7d3d1addffd6d5f25d61c71c3c560ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_in_the_loop-0.2.2.tar.gz:

Publisher: publish.yml on benarush/AITL

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

File details

Details for the file agent_in_the_loop-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for agent_in_the_loop-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 12fb15b50b4b6c0de60ebf8655284599f97a7dd05ad232bbccf92ae004ccbdb9
MD5 1d27dee72364449b759b149694281593
BLAKE2b-256 63209ddc8f3ab3db62ad05a85588ba60679e1347a05841cd6b4acb3e6d4d510f

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_in_the_loop-0.2.2-py3-none-any.whl:

Publisher: publish.yml on benarush/AITL

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