> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agnost.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Configuration

> Configure the Agnost AI Python SDK for conversation tracking

The Agnost AI Python SDK can be configured during initialization to enable debug logging and customize behavior.

## Basic Configuration

Initialize the SDK with your organization ID (passed positionally as `write_key`):

```python theme={null}
import agnost

# Default configuration
agnost.init("your-org-id")

# With debug logging
agnost.init("your-org-id", debug=True)
```

## Configuration Options

### SDK Initialization (agnost.init)

| Parameter | Type   | Required     | Default | Description                                       |
| --------- | ------ | ------------ | ------- | ------------------------------------------------- |
| `org_id`  | `str`  | **Required** | -       | Your organization ID from the Agnost AI dashboard |
| `debug`   | `bool` | No           | `False` | Enable debug logging for troubleshooting          |

### Begin/End Tracking (agnost.begin)

**Start interaction with agnost.begin():**

| Parameter         | Type   | Required | Default     | Description                                                  |
| ----------------- | ------ | -------- | ----------- | ------------------------------------------------------------ |
| `user_id`         | `str`  | No       | `""`        | Identifier for the user                                      |
| `agent_name`      | `str`  | No       | `"default"` | Name of the AI agent or model                                |
| `input`           | `str`  | No       | `None`      | Input text or prompt (can also set later with `set_input()`) |
| `conversation_id` | `str`  | No       | `None`      | ID to group related messages in a conversation               |
| `properties`      | `dict` | No       | `None`      | Additional metadata as key-value pairs                       |

**Complete interaction with interaction.end():**

| Parameter | Type   | Required | Default         | Description                                                                      |
| --------- | ------ | -------- | --------------- | -------------------------------------------------------------------------------- |
| `output`  | `str`  | No       | `None`          | Output or response from the AI agent                                             |
| `success` | `bool` | No       | `True`          | Whether the interaction was successful                                           |
| `latency` | `int`  | No       | Auto-calculated | Execution time in milliseconds (auto-calculated from begin time if not provided) |

### User Identification (`agnost.identify`)

| Parameter | Type   | Required     | Default | Description                                                                                                                                                                                |
| --------- | ------ | ------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `user_id` | `str`  | **Required** | :       | Identifier for the user                                                                                                                                                                    |
| `traits`  | `dict` | **Required** | :       | User characteristics. Prefer non-sensitive traits such as `plan`, `role`, or `account_segment`; avoid raw names, emails, phone numbers, or other personal data unless explicitly approved. |

### Interaction methods

`agnost.begin()` returns an `Interaction` object with these methods:

| Method           | Signature                                            | Description                                                                           |
| ---------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------- |
| `set_input`      | `(text: str)`                                        | Set the input text after the interaction has begun.                                   |
| `set_property`   | `(key: str, value: Any)`                             | Set a single property. Returns the interaction for chaining.                          |
| `set_properties` | `(properties: dict)`                                 | Merge multiple properties at once. Returns the interaction for chaining.              |
| `end`            | `(output=None, success=True, latency=None, **extra)` | Complete the interaction and send the event. Latency auto-calculated if not supplied. |

### Lifecycle

| Function                         | Description                                                                         |
| -------------------------------- | ----------------------------------------------------------------------------------- |
| `agnost.flush()`                 | Manually flush all queued events (non-blocking).                                    |
| `agnost.shutdown()`              | Flush remaining events and release resources. Called automatically on process exit. |
| `agnost.set_debug_logs(enabled)` | Toggle debug logs after initialization.                                             |

## Debug Mode

Enable debug mode to see detailed logging of SDK operations:

```python theme={null}
import agnost

agnost.init("your-org-id", debug=True)

# Now all tracking operations log at DEBUG level
agnost.track(
    user_id="user_123",
    input="Hello",
    output="Hi there!",
)
```

Debug mode is useful for troubleshooting integration issues and verifying events are being sent correctly.

## Sensitive data

Agnost receives the input, output, user traits, and metadata you send. For production traffic, use pseudonymous user IDs, allowlist metadata keys, and redact sensitive data before calling the SDK. See [Data Governance](/data-governance) for recommended patterns.

## Next Steps

* Learn about [tracking AI interactions](/python-conversation)
* See the [Quickstart](/quickstart) for end-to-end setup
