1.4 KiB
External Guardrails and Judges SPI
agent_framework_oci supports agent-owned guardrails and judges without importing domain code into the core.
output:
- code: ACME_POLICY
type: external
class: app.extensions.guardrails:AcmePolicyRail
judges:
- name: acme_quality
type: external
class: app.extensions.judges:AcmeQualityJudge
threshold: 0.7
Native entries remain unchanged. External synchronous evaluate() methods execute in worker threads via asyncio.to_thread; asynchronous methods execute concurrently on the framework event loop. Judges run concurrently with asyncio.gather, preserving YAML result order. Agent plugins should reuse the LLM supplied by the framework rather than instantiate a separate provider.
The core must not reference a concrete agent package, company, product, telecom identifier or domain-specific policy. Domain-specific variants belong to the agent and should receive distinct public codes/names.
Compatibility rule
Domain policies must not be replaced by cosmetically generic text inside the core while losing the original policy. The generic core implementation and the agent-specific implementation may coexist; the embedding agent explicitly selects its own code/name in YAML.
Legacy business validators should migrate to the agent domain. A temporary compatibility shim is acceptable for old imports, but new application code must import the agent-owned implementation.