Skip to main content

The official Python SDK for the Repello Argus API.

Project description

Repello Argus Python SDK

PyPI Version Python Versions License Build Status

The official Python SDK for the Repello Argus AI Guardrails API.

The Argus Python SDK provides a robust, high-performance interface for integrating Repello Argus into your Python applications. It allows developers to scan LLM prompts and responses in real-time to detect and mitigate a wide range of security, safety, and content risks.

This SDK is designed for both rapid prototyping with code-defined policies and enterprise-grade orchestration using the Argus Platform, enabling features like centralized policy management, detailed analytics, and conversation tracking.


Key Features

  • Comprehensive Security Policies: Scan for PII, prompt injection, toxicity, secrets, banned topics, unsafe content, and more.
  • Flexible Policy Management: Define policies directly in your code for rapid development, or leverage the Argus Platform to manage policies centrally in the UI without code changes.
  • Full Platform Observability: Use Assets and Sessions to organize and track your data, providing deep insights into application usage and conversation context in the Argus dashboard.
  • Developer-First Experience: Built with type-safe enums (Verdict, Action, etc.) and a clear exception hierarchy for robust and predictable integration.
  • Resilient & Performant: Powered by httpx for modern, asynchronous-ready HTTP requests and tenacity for automatic, resilient retries on network failures.

Installation

Install the package from PyPI using pip:

pip install repello-argus-client

The SDK requires Python 3.8 or higher.

Quickstart

This example shows how to get started in under a minute. It defines a simple policy in code to block toxic prompts.

First, set your API key as an environment variable:

export ARGUS_API_KEY="your_api_key_here"

Then, run the following Python code:

# quickstart.py
import os
from repello_argus_client import ArgusClient, PolicyName, Action, Verdict

# 1. Load your API Key from the environment
API_KEY = os.environ.get("ARGUS_API_KEY")
if not API_KEY:
    raise ValueError("ARGUS_API_KEY environment variable not set.")

# 2. Define a simple policy in your code
my_policy = {
    PolicyName.TOXICITY: {"action": Action.BLOCK}
}

# 3. Create a client and perform a scan
argus_guard = None
try:
    argus_guard = ArgusClient.create(api_key=API_KEY, policy=my_policy)
    result = argus_guard.check_prompt("You are a piece of garbage.")

    # 4. Handle the result using the Verdict enum
    print(f"Verdict: {result['verdict']}")

    if result['verdict'] == Verdict.BLOCKED:
        print("✅ The prompt was blocked. Application should halt this request.")
    else:
        print("The prompt was allowed to proceed.")

finally:
    if argus_guard:
        argus_guard.close()

Documentation

For a comprehensive guide covering all features, advanced usage patterns, and a full API reference, please see our official documentation:

docs.repello.ai/argus/sdk/python (Placeholder URL)

Usage Example: Platform Workflow

Platform users (with a Runtime Security Key) can leverage policies managed directly in the Argus UI. This simplifies the code significantly.

# platform_usage.py
import os
from repello_argus_client import ArgusClient, Verdict

# This workflow assumes you have:
# 1. A Runtime Security Key (rsk_...).
# 2. An Asset created in the Argus UI with its own policy.
API_KEY = os.environ.get("ARGUS_RUNTIME_API_KEY")
ASSET_ID = "your_asset_id_from_the_dashboard"

argus_guard = None
try:
    # Connect to your asset and enable saving results to the platform.
    # Notice no local `policy` object is needed.
    argus_guard = ArgusClient.create(
        api_key=API_KEY,
        asset_id=ASSET_ID,
        save=True
    )

    # This scan will be evaluated against the policy configured in the Argus UI.
    result = argus_guard.check_prompt("This prompt will be checked against the UI policy.")

    print(f"Verdict from platform policy: {result['verdict']}")

finally:
    if argus_guard:
        argus_guard.close()

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contributing

We welcome contributions! Please see our CONTRIBUTING.md for guidelines on how to submit pull requests, report issues, and suggest features.

Support

If you encounter any issues or have questions, please file an issue on our GitHub Issues page or contact our support team at support@repello.ai.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

repello_argus_client-0.1.0.tar.gz (25.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

repello_argus_client-0.1.0-py3-none-any.whl (20.9 kB view details)

Uploaded Python 3

File details

Details for the file repello_argus_client-0.1.0.tar.gz.

File metadata

  • Download URL: repello_argus_client-0.1.0.tar.gz
  • Upload date:
  • Size: 25.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for repello_argus_client-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a6d9c157965e90b1555a667935c22feb1cc5472d99f50542ed1fc0dc6d630c81
MD5 03501977382042d2b462b0963c05463d
BLAKE2b-256 04801e641eab1d98daa749edebabc1ff997695cb3fe381d065059726945f0279

See more details on using hashes here.

File details

Details for the file repello_argus_client-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for repello_argus_client-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6ed24581c8ea19e0ca388fc9aa7a0dca926ef363cd107d2fc10bc924a31c0ea6
MD5 154e3e41ee818fc1ef3bec5d4ea8a652
BLAKE2b-256 ce269c26907cf8442155e01e9a92528dccbfb787345a1c077028fcc0ee6ce47d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page