name: Eval Check
on:
pull_request:
paths:
- 'prompts/**'
- 'agents/**'
jobs:
eval-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Geval
run: npm install -g @geval-labs/cli
- name: Run Evals
run: |
# Your eval command here (promptfoo, langsmith, etc.)
npm run evals -- --output eval-results.json
- name: Validate Contract
run: geval validate contract.yaml
- name: Check Eval Results
run: |
geval check \
--contract contract.yaml \
--eval eval-results.json \
--json > decision.json
- name: Comment on PR
if: always()
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const decision = JSON.parse(fs.readFileSync('decision.json', 'utf8'));
const icon = decision.status === 'PASS' ? '✅' : '❌';
const body = `## ${icon} Geval: ${decision.status}\n\n${decision.summary}`;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: body
});