guardrails_output.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. """Minimal output guardrail example."""
  2. import asyncio
  3. from agency_swarm import Agency, Agent, GuardrailFunctionOutput, RunContextWrapper, output_guardrail
  4. @output_guardrail(name="ForbidSensitiveEmail")
  5. async def forbid_sensitive_email(
  6. context: RunContextWrapper, agent: Agent, response_text: str
  7. ) -> GuardrailFunctionOutput:
  8. """Reject responses that include personal email addresses."""
  9. if "@" in response_text:
  10. print(f"Guardrail intercepted draft: {response_text}")
  11. return GuardrailFunctionOutput(
  12. output_info="Do not share email addresses. Offer to connect via the support portal instead.",
  13. tripwire_triggered=True,
  14. )
  15. return GuardrailFunctionOutput(output_info="", tripwire_triggered=False)
  16. support_agent = Agent(
  17. name="SupportPilot",
  18. instructions="You handle customer support. Official email: support@example.com.",
  19. model="gpt-5.4-mini",
  20. output_guardrails=[forbid_sensitive_email],
  21. validation_attempts=1, # 1 is the default, set to 0 for immediate fail-fast behavior
  22. )
  23. async def main() -> None:
  24. agency = Agency(support_agent)
  25. response = await agency.get_response("What is your support team's direct email address?")
  26. print("Final output:", response.final_output)
  27. if __name__ == "__main__":
  28. asyncio.run(main())