name: AgentX Evaluation Gate
on:
pull_request:
branches: [main]
jobs:
eval:
name: Evaluate agent
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: pip install agentx-python
- name: Run AgentX evaluation gate
env:
AGENTX_API_KEY: ${{ secrets.AGENTX_API_KEY }}
run: |
python -c "
import os, sys
from agentx import AgentX, CIGateFailure
# Import your agent
from your_package import my_agent
client = AgentX.from_env()
try:
result = client.tracer.run_eval(
dataset_id=os.environ['AGENTX_DATASET_ID'],
agent_fn=my_agent,
agent_name='my-agent',
# Keys must be camelCase. The API's gitContext schema is strict
# and silently drops unrecognized (e.g. snake_case) keys.
git_context={
'branch': os.environ.get('GITHUB_HEAD_REF', ''),
'commitSha': os.environ.get('GITHUB_SHA', ''),
'prNumber': os.environ.get('GITHUB_REF', '').split('/')[-2],
'repoUrl': 'https://github.com/' + os.environ.get('GITHUB_REPOSITORY', ''),
'triggeredBy': 'github-actions',
},
fail_on_gate=True,
)
print(f'Gate PASSED, {result.pass_rate:.0%} passed')
except CIGateFailure as e:
print(f'Gate FAILED, {e.result.pass_rate:.0%} passed ({e.result.passed_questions}/{e.result.total_questions})')
sys.exit(1)
"
env:
AGENTX_DATASET_ID: ${{ secrets.AGENTX_DATASET_ID }}