Skip to main content

Agnost Conversation SDK

PyPI version Python

Python SDK for tracking AI conversations and events. Monitor your AI agent interactions, track user conversations, and gain insights into how your AI applications are performing.

Installation

pip install agnost

Basic Usage

import agnost

# Initialize with your organization ID
agnost.init("your-org-id")

# Track an AI interaction
agnost.track(
    user_id="user_123",
    input="What is the weather?",
    output="The weather is sunny.",
    agent_name="weather-agent"
)

API Reference

init(write_key, **config)

Initialize the SDK with your organization ID.

agnost.init("your-org-id")

# With custom configuration
agnost.init(
    "your-org-id",
    endpoint="https://api.agnost.ai",
    debug=True
)

track(user_id, ...)

Record an AI interaction event.

event_id = agnost.track(
    user_id="user_123",         # Optional: User identifier
    input="What is the weather?",
    output="The weather is sunny.",
    agent_name="weather-agent",  # Defaults to "default" if not provided
    conversation_id="conv_abc",  # Group related events
    properties={"temperature": "0.7"},
    latency=1500                 # Execution time in ms
)
Parameter Type Required Description
user_id str No User identifier (default: "")
input str No Input text/prompt
output str No Output/response text. When success=False, this is the error message
agent_name str No Agent name (default: "default")
conversation_id str No Conversation ID for grouping
properties dict No Additional event properties
timestamp datetime No Event timestamp (defaults to now)
success bool No Whether successful (default: True). Set to False for errors
latency int No Execution time in milliseconds

Important: When tracking errors (success=False), put the error message in the output parameter.

identify(user_id, traits)

Associate user characteristics with a user ID.

agnost.identify("user_123", {
    "name": "John Doe",
    "email": "john@example.com",
    "age": 30,
    "plan": "paid"
})

begin(user_id, ...)

Begin a partial interaction for deferred completion. Use this when the output is not immediately available.

✨ NEW: Automatic latency tracking - Latency is now automatically calculated from begin() to end()!

# Pass input directly (recommended)
interaction = agnost.begin(
    user_id="user_123",
    agent_name="weather-agent",
    input="What is the weather?"
)

interaction.set_property("temperature", "0.7")

# ... do async work ...

interaction.end(output="The weather is sunny.")
# ✅ Latency automatically calculated! (~duration from begin to end)

Alternative: Set input later:

interaction = agnost.begin(
    user_id="user_123",
    agent_name="weather-agent"
)
interaction.set_input("What is the weather?")
interaction.end(output="The weather is sunny.")

Manual latency override (optional):

interaction.end(
    output="The weather is sunny.",
    latency=1500  # Override auto-calculation if needed
)

Interaction Methods:

Method Description
set_input(text) Set the input text (optional if passed to begin())
set_properties(dict) Set multiple properties
set_property(key, value) Set a single property
end(output, success, latency) Complete the interaction. When success=False, output is the error message. Latency is auto-calculated if not provided

flush()

Manually flush all queued events.

agnost.flush()

shutdown()

Shutdown the SDK and flush remaining events.

agnost.shutdown()

set_debug_logs(enabled)

Enable or disable debug logging.

agnost.set_debug_logs(True)  # See queued events

Configuration

You can customize the SDK behavior using the configuration object:

import agnost_conversation as agnost
from agnost_conversation import ConversationConfig

# Create a custom configuration
config = ConversationConfig(
    endpoint="https://api.agnost.ai",
    debug=False
)

# Apply the configuration
agnost.init("your-org-id", config=config)

Configuration Options

Option Type Default Description
endpoint str "https://api.agnost.ai" API endpoint URL
debug bool False Enable debug logging

Advanced Usage

Conversation Tracking

Group related events using conversation_id:

conversation_id = "conv_" + str(uuid.uuid4())

# First message
agnost.track(
    user_id="user_123",
    input="Hello!",
    output="Hi there! How can I help?",
    agent_name="support-bot",
    conversation_id=conversation_id
)

# Follow-up message
agnost.track(
    user_id="user_123",
    input="What's the weather?",
    output="The weather is sunny.",
    agent_name="support-bot",
    conversation_id=conversation_id
)

Direct Client Instantiation

For multiple clients or advanced use cases:

from agnost_conversation import ConversationClient

client = ConversationClient()
client.init("your-org-id")

client.track(
    user_id="user_123",
    output="Hello!",
    agent_name="greeting-bot"
)

client.shutdown()

Error Handling

When tracking errors, set success=False and pass the error message as the output:

# Track failed interactions
agnost.track(
    user_id="user_123",
    input="Generate an image",
    output="Rate limit exceeded",  # Error message as output
    success=False,
    agent_name="image-agent"
)

# With begin() and end()
interaction = agnost.begin(
    user_id="user_123",
    agent_name="image-agent",
    input="Generate an image"
)

try:
    result = generate_image()
    interaction.end(output=result)
except Exception as e:
    # Error message goes in output when success=False
    interaction.end(output=str(e), success=False)

Contact

For support or questions, contact the founders: founders@agnost.ai

Metadata

Release files for agnost 0.1.13

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

Source distribution (sdist)

Source distribution for agnost 0.1.13
File Size Uploaded Provenance
agnost-0.1.13.tar.gz 14.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for agnost 0.1.13
File Interpreter ABI Platform
agnost-0.1.13-py3-none-any.whl Python 3 none any Details

Total release size: 29.6 kB

Release files / agnost-0.1.13.tar.gz

Download URL agnost-0.1.13.tar.gz
Size 14.0 kB
Tags Source
SHA-256 checksum
How to use checksums
dac877e06f3ce897786d62cde781d7e14a6ec3f879d514a19b1165e4b286235c
BLAKE2b-256 checksum
How to use checksums
e62a1ad9782e7120806c8321d3c409fd9f90a852fcb39fcb24799eaa35774400
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.9

Release files / agnost-0.1.13-py3-none-any.whl

Download URL agnost-0.1.13-py3-none-any.whl
Size 15.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4c93045b8273da7d4533b112c0cd67670accbe28d375899c3a7f8e1ebb83a08b
BLAKE2b-256 checksum
How to use checksums
f7376b22a5089f2c658ad936bf81c33c71c2e5ac8a05f6e657ea5a9623a7d587
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.9

Security for agnost 0.1.13

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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