Skip to main content

parlant-alice

Alice integration for Parlant - A Python package that provides content moderation and compliance checking for Parlant applications using Alice's threat analysis & detection services.

Introduction

Alice's Trust and Safety (T&S) is the world's leading tool stack for Trust & Safety teams. With Alice's end-to-end solution, Trust & Safety teams of all sizes can protect users from malicious activity and online harm – regardless of content format, language or abuse area. Integrating with the T&S platform enables you to detect, collect and analyze harmful content that may put your users and brand at risk. By combining AI and a team of subject-matter experts, the Alice T&S platform enables you to be agile and proactive for maximum efficiency, scalability and impact.

Installation

You can install parlant-alice using pip:

pip install parlant-alice

Usage

Basic Usage

The parlant-alice package integrates with Parlant's framework to provide automatic content moderation and compliance checking. Here's how to use it:

from parlant.contrib.alice import Alice

# Configure Parlant server to use Alice moderation services
# Will use environment variables for configuration
async with p.Server(configure_container=Alice().configure_container) as server:

For the Alice integration to work, an API key and an application ID must be configured. The application ID is the ID (a UUID) of the application in Alice's Application Inventory; messages are evaluated against the policies assigned to that application. These and more can be supplied using environment variables. The following environment variables can be used to configure Alice integration:

Variable Description Default
ALICE_API_KEY Alice API key for authentication None (required)
ALICE_APP_ID ID (UUID) of the application in Alice's Application Inventory None (required)
ALICE_BLOCKED_MESSAGE Message to display when content is blocked "The generated message was blocked by guardrails."

Each evaluation is sent with the Parlant session ID as session_id and the session's customer ID as user_id, for both customer messages and agent replies. Sessions created without a customer belong to Parlant's shared guest customer, so they all report the same user; create a Parlant customer per end user to tell them apart. Both IDs must be 1–100 characters.

Create Alice inside your async main function, as in the examples below: the WonderFence client opens its HTTP session on the running event loop.

These values can also be passed directly when initializing the container:

from parlant.contrib.alice import Alice

async def main():
    moderation = Alice(api_key="<API_KEY>", app_id="<APP_ID>", blocked_message="This message was blocked")
    async with p.Server(configure_container=moderation.configure_container) as server:
        ...

Impact

Using Alice's moderation as shown will analyze messages sent by users to the AI agent, and the agent's response to them. This helps manage abusive messages, protect the application from malicious prompts and ensure the agent responses align to your policies.

User messages blocked by Alice will not reach the agent, but it will get a flagged message indication a censored user request. You can guide the agent to respond to such messages using the Parlant guidelines, like so:

await agent.create_guideline(
        condition="the customer's last message is censored",
        action="respond with a polite refusal to answer the question, mention that the message was censored based on guardrails analysis",
    )

Analysis of the agent responses works a bit different. If the Alice analysis marks the response as BLOCKED, the message itself will not be returned to the user, and instead a preconfigured block message will be returned. This message can be configured as described above. If a policy violation is detected but not flagged to be blocked, a warning is logged using Parlant's internal logger. This warning message will look like this: [warning ] [ReuwnpD7Gzn::process][MessageEventComposer][CannedResponseGenerator] Prevented sending a non-compliant message: 'However, I can't respond to your previous message because it was censored based on our guardrails analysis. If you have another question or need assistance, feel free to ask.'.

Example

Here is a complete example of setting up a Parlant server with Alice moderation:

import asyncio
import parlant.sdk as p
from parlant.contrib.alice import Alice

async def main():
    async with p.Server(configure_container=Alice(api_key="<API_KEY>", app_id="<APP_ID>").configure_container) as server:
        agent = await server.create_agent(
            name="Otto Carmen",
            description="You work at a computer parts store",
        )
        print(agent.id)

        blocked = await agent.create_guideline(
            condition="the customer's last message is censored",
            action="respond with a polite refusal to answer the question, mention that the message was censored based on guardrails analysis",
        )

asyncio.run(main())

And this is an example of a basic client that calls this server, and prints the messages returned by the agent to the console:

import asyncio
from parlant.client import ParlantClient

async def main():

    client = ParlantClient(base_url='http://localhost:8800')
    session = client.sessions.create(
        agent_id='<AGENT ID>',
        allow_greeting=False,
        title="test",
    )
    session_id = session.id
    client.sessions.create_event(
        session_id,
        kind="message",
        source="customer",
        message='Should I sue about this?',
        moderation="auto",
    )

    last_offset = 0
    while (True):
        try:
            events = client.sessions.list_events(session_id=session_id,
                min_offset=last_offset,
                wait_for_data=30,
                kinds="message",
            )
            for event in events:
                print(event)
                last_offset = max(last_offset, event.offset + 1)
        except Exception as e:
            print(e)

asyncio.run(main())

Enabled moderation="auto" will trigger the user prompt analysis, and if the Alice policy is configured for it, it will block the message for including legal advice, even if the LLM is not configured to respond to this.

Upgrading from 0.1.x

0.2.0 evaluates messages through the WonderFence v2 API (/v2/evaluate/message) instead of the deprecated v1 API, and requires wonderfence-sdk 3.x. To upgrade:

  • Set ALICE_APP_ID (or pass app_id) to the ID of the application in the Application Inventory. Alice raises a ValueError at construction when it is missing.
  • Remove ALICE_APP_NAME / app_name; it is no longer used.
  • If you call Alice.check_message directly, pass customer_id instead of agent_id.

See CHANGELOG.md for the full list of changes.

License

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

Metadata

Release files for parlant-alice 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for parlant-alice 0.2.0
File Size Uploaded Provenance
parlant_alice-0.2.0.tar.gz 10.1 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for parlant-alice 0.2.0
File Interpreter ABI Platform
parlant_alice-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 18.2 kB

Release files / parlant_alice-0.2.0.tar.gz

Download URL parlant_alice-0.2.0.tar.gz
Size 10.1 kB
Tags Source
SHA-256 checksum
How to use checksums
e5008e2dfc31f1e917baf79e80404fe64c67f9132a5e22c665ff717d31e521d8
BLAKE2b-256 checksum
How to use checksums
bc6f7c777c7055d64c1851c47b0d85f2a28a1951abb93c91c69a6309cf4814f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / parlant_alice-0.2.0-py3-none-any.whl

Download URL parlant_alice-0.2.0-py3-none-any.whl
Size 8.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2c816fe4925402d774c4415b3a607faf53a65184e7ee44b7b3a5999d897ce98e
BLAKE2b-256 checksum
How to use checksums
e3d954d595e8013bc3d624d13f98c1b322f6b81deaa521300dfdd16d1e7921bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Security for parlant-alice 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for parlant_alice-0.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page