{"library":"openai-guardrails","title":"OpenAI Guardrails","description":"OpenAI Guardrails is a Python framework designed for building safe and reliable AI systems by adding configurable safety and compliance guardrails to LLM applications. It provides a drop-in wrapper for OpenAI's Python client, enabling automatic input/output validation and moderation using a wide range of built-in guardrails like content safety, data protection (e.g., PII detection), and content quality (e.g., hallucination detection). The library is actively maintained by OpenAI, with frequent releases, and is currently at version 0.2.1.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install openai-guardrails"],"cli":null},"imports":["from guardrails import GuardrailsOpenAI","from guardrails import GuardrailsAsyncOpenAI","from guardrails import GuardrailTripwireTriggered"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nfrom pathlib import Path\nfrom guardrails import GuardrailsOpenAI, GuardrailTripwireTriggered\nfrom openai import OpenAI\n\n# Ensure your OpenAI API key is set as an environment variable (OPENAI_API_KEY)\n# or passed directly to the client.\n# For model-based guardrails, an API key is required.\n# To run this example, create a simple 'guardrails_config.json' file in the same directory:\n# {\"version\": \"1\", \"input\": {\"version\": \"1\", \"guardrails\": [{\"name\": \"Moderation\", \"config\": {}}]}}\n\ndef main():\n    # Initialize OpenAI client (standard or Guardrails client)\n    # The GuardrailsOpenAI client acts as a drop-in replacement\n    # It requires a config file (e.g., guardrails_config.json) that defines the guardrails to apply.\n    guardrails_client = GuardrailsOpenAI(config=Path(\"guardrails_config.json\"))\n\n    try:\n        # Use the Guardrails client just like a regular OpenAI client\n        response = guardrails_client.chat.completions.create(\n            model=\"gpt-3.5-turbo\",\n            messages=[\n                {\"role\": \"user\", \"content\": \"Hello, how are you?\"}\n            ]\n        )\n        print(\"LLM Output:\", response.choices[0].message.content)\n        # You can also access guardrail results if available\n        if hasattr(response, 'guardrail_results'):\n            print(\"Guardrail Results:\", response.guardrail_results)\n\n        # Example of triggering a moderation guardrail (if configured to block)\n        print(\"\\nTesting with potentially problematic input...\")\n        problematic_response = guardrails_client.chat.completions.create(\n            model=\"gpt-3.5-turbo\",\n            messages=[\n                {\"role\": \"user\", \"content\": \"I want to harm someone.\"}\n            ]\n        )\n        print(\"LLM Output (problematic):\", problematic_response.choices[0].message.content)\n\n    except GuardrailTripwireTriggered as e:\n        print(f\"\\nGuardrail triggered: {e.guardrail_result.info}\")\n        print(f\"Violation details: {e.guardrail_result.details}\")\n    except Exception as e:\n        print(f\"An unexpected error occurred: {e}\")\n\nif __name__ == \"__main__\":\n    # Set a dummy API key if not already set, for local testing without network calls (if guardrails config allows).\n    # For actual model-based guardrails, a valid API key is essential.\n    if not os.environ.get(\"OPENAI_API_KEY\"):\n        os.environ[\"OPENAI_API_KEY\"] = os.environ.get('TEST_OPENAI_API_KEY', 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxx')\n    main()","lang":"python","description":"This quickstart demonstrates how to integrate `openai-guardrails` by replacing the standard OpenAI client with a `GuardrailsOpenAI` instance. It highlights the use of a `guardrails_config.json` file to define guardrail logic and shows how to handle `GuardrailTripwireTriggered` exceptions when a violation occurs. A basic `guardrails_config.json` is provided as a comment for immediate testing.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"0.2.1","pypi_latest":"0.2.1","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":60,"avg_install_s":23.6,"avg_import_s":7.17,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"openai-guardrails","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"openai-guardrails","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":1.4,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"openai-guardrails","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":8.13,"mem_mb":67.7,"disk_size":"410.3M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"openai-guardrails","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":23.3,"import_time_s":7.3,"mem_mb":67.7,"disk_size":"424M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"openai-guardrails","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":7.24,"mem_mb":66.6,"disk_size":"404.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"openai-guardrails","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":20.6,"import_time_s":7.19,"mem_mb":66.6,"disk_size":"420M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"openai-guardrails","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":null,"import_time_s":6.61,"mem_mb":65,"disk_size":"403.5M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"openai-guardrails","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"clean","install_time_s":26.8,"import_time_s":6.54,"mem_mb":65,"disk_size":"418M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"openai-guardrails","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"openai-guardrails","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":1.6,"import_time_s":null,"mem_mb":null,"disk_size":null}]}}