Custom applications

Python

Track any AI interaction with begin() / end()

Install

pip install voxmith

Integrate

import voxmith

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

Get your org ID from app.voxmith.com.

Track interactions

interaction = voxmith.begin(user_id="u-123", agent_name="my-agent", input="...")
# ... your AI call ...
interaction.end(output="...")

Latency is auto-calculated. For errors:

interaction.end(output="Error: timeout", success=False)

For simple fire-and-forget cases:

voxmith.track(user_id="u-123", input="...", output="...", agent_name="my-agent")

Group into conversations

import uuid

conversation_id = str(uuid.uuid4())

voxmith.track(user_id="u-123", input="Hello", output="Hi!", conversation_id=conversation_id)
voxmith.track(user_id="u-123", input="Follow-up", output="Sure!", conversation_id=conversation_id)

Identify users

voxmith.identify("u-123", {"plan": "pro", "role": "admin"})

Custom properties

interaction = voxmith.begin(user_id="u-123", agent_name="my-agent", input="...")

# Set one at a time
interaction.set_property("model", "gpt-4")

# Or set many at once
interaction.set_properties({"tokens": 150, "cost": 0.045})

interaction.end(output="...")

Configuration

voxmith.init("your-org-id", endpoint="https://api.voxmith.com", debug=True)
Parameter Type Default Description
org_id str — Your org ID
endpoint str https://api.voxmith.com API endpoint
debug bool False Enable debug logging

Cleanup

voxmith.shutdown()  # flushes and cleans up

What appears in Voxmith

  • Conversations grouped by conversation_id.
  • User-level analytics grouped by user_id.
  • Events for every tracked interaction.
  • Unsuccessful interactions remain visible in Events with success=False.

Verify

Run one begin() / end() interaction, then open app.voxmith.com. Check Events first, then Conversations.

Troubleshooting

  • Confirm voxmith.init("your-org-id") runs before tracking.
  • Call voxmith.flush() or voxmith.shutdown() before short-lived scripts exit.
  • Confirm the endpoint is https://api.voxmith.com unless you intentionally use another endpoint.

Next steps

  • Conversations: review how Python interactions are grouped.
  • Events: inspect the exact records the SDK sent.
  • Intents: organize production conversations by what users wanted.