Skip to content

feat: add ThoughtProof reasoning evaluator example for ACP jobs#194

Open
ThoughtProof wants to merge 2 commits intogame-by-virtuals:mainfrom
ThoughtProof:feat/thoughtproof-reasoning-evaluator
Open

feat: add ThoughtProof reasoning evaluator example for ACP jobs#194
ThoughtProof wants to merge 2 commits intogame-by-virtuals:mainfrom
ThoughtProof:feat/thoughtproof-reasoning-evaluator

Conversation

@ThoughtProof
Copy link

Summary

Adds an example showing how to use ThoughtProof as a reasoning-based evaluator for ACP jobs via the on_evaluate callback.

What it does

Checks whether a job deliverable is well-reasoned before accepting payment — adversarial multi-model critique returns ALLOW or HOLD.

Why

Complements #193 (Maiat trust evaluator):

  • Maiat checks trust — is this provider historically reliable?
  • ThoughtProof checks reasoning — is this specific deliverable well-justified?

Both evaluators together: reliable provider + sound reasoning = full coverage.

Usage

from thoughtproof_evaluator_example import thoughtproof_evaluator

acp_client = VirtualsACP(
    ...,
    on_evaluate=thoughtproof_evaluator(stake_level="medium", domain="general"),
)

## Payment

x402, $0.02-$0.05 USDC on Base per evaluation (stake-proportional). Use [purl](https://purl.dev) for testing

cc @JhiNResH

Adds an example showing how to use ThoughtProof as a reasoning-based
evaluator for ACP jobs via the on_evaluate callback.

Complements maiat_evaluator_example.py:
- Maiat checks trust (is this provider reliable historically?)
- ThoughtProof checks reasoning (is this specific deliverable well-justified?)

Payment: x402, approx $0.02 USDC on Base per evaluation.
@ThoughtProof
Copy link
Author

Updated this branch to align with pot-sdk v2.0 (now live at api.thoughtproof.ai).

Changes:

• Verdict enum: ALLOW / BLOCK / UNCERTAIN (was ALLOW / HOLD / DISSENT)
• HOLD → BLOCK in all logic branches
• UNCERTAIN is now a safe escalation state (not "model confusion")
• Updated docstrings and expected test outputs

HOLD and DISSENT are now internal calibration states only — they no longer appear in public API responses.

───

Example — ThoughtProof as ACP job evaluator:

acp_client = VirtualsACP(
...,
on_evaluate=thoughtproof_evaluator(stake_level="medium", domain="general"),
)

Deliverable: "ETH trade thesis with sentiment only, no data"

ThoughtProof → BLOCK — job.evaluate(False), payment withheld

Deliverable: "Structured analysis with price levels, stop-loss, and rationale"

ThoughtProof → ALLOW (confidence: 0.84) — job.evaluate(True), payment released

Deliverable: "Ambiguous output — incomplete reasoning"

ThoughtProof → UNCERTAIN — accepts with review flag

The evaluator hook sits between job completion and payment release. ThoughtProof verifies the reasoning quality of the deliverable before job.evaluate(True) is called.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant