Tracia
LLM prompt management and tracing SDK for Python
What is Tracia?
Tracia is a modern LLM prompt management and tracing platform. This Python SDK provides:
- Unified LLM Access - Call OpenAI, Anthropic, Google, and 100+ providers through a single interface (powered by LiteLLM)
- Automatic Tracing - Every LLM call is automatically traced with latency, token usage, and cost
- Prompt Management - Store, version, and manage your prompts in the cloud
- Session Linking - Easily link related calls for multi-turn conversations
Installation
pip install tracia
You'll also need API keys for the LLM providers you want to use:
export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."
export GOOGLE_API_KEY="..."
Quick Start
from tracia import Tracia
# Initialize the client
client = Tracia(api_key="your_tracia_api_key")
# Run a local prompt
result = client.run_local(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}]
)
print(result.text)
print(f"Tokens: {result.usage.total_tokens}")
Streaming
# Stream the response
stream = client.run_local(
model="gpt-4o",
messages=[{"role": "user", "content": "Tell me a story"}],
stream=True
)
for chunk in stream:
print(chunk, end="", flush=True)
# Get the final result (stream.result is a Future[StreamResult])
final = stream.result.result()
print(f"\nTotal tokens: {final.usage.total_tokens}")
Multi-turn Conversations with Sessions
# Create a session for linked conversations
session = client.create_session()
# First message
r1 = session.run_local(
model="gpt-4o",
messages=[{"role": "user", "content": "My name is Alice"}]
)
# Follow-up - automatically linked to the same trace
r2 = session.run_local(
model="gpt-4o",
messages=[
{"role": "user", "content": "My name is Alice"},
{"role": "assistant", "content": r1.text},
{"role": "user", "content": "What's my name?"}
]
)
Function Calling
from tracia import ToolDefinition, ToolParameters, JsonSchemaProperty
# Define a tool
tools = [
ToolDefinition(
name="get_weather",
description="Get the current weather",
parameters=ToolParameters(
properties={
"location": JsonSchemaProperty(
type="string",
description="City name"
)
},
required=["location"]
)
)
]
result = client.run_local(
model="gpt-4o",
messages=[{"role": "user", "content": "What's the weather in Paris?"}],
tools=tools
)
if result.tool_calls:
for call in result.tool_calls:
print(f"Tool: {call.name}, Args: {call.arguments}")
Variable Interpolation
result = client.run_local(
model="gpt-4o",
messages=[
{"role": "system", "content": "You are a helpful assistant named {{name}}."},
{"role": "user", "content": "Hello!"}
],
variables={"name": "Claude"}
)
Prompts API
# List all prompts
prompts = client.prompts.list()
# Get a specific prompt
prompt = client.prompts.get("my-prompt")
# Run a prompt template
result = client.prompts.run(
"my-prompt",
variables={"name": "World"}
)
Spans API
from tracia import Eval, EvaluateOptions
# List spans
spans = client.spans.list()
# Evaluate a span
client.spans.evaluate(
"sp_xxx",
EvaluateOptions(
evaluator="quality",
value=Eval.POSITIVE, # or Eval.NEGATIVE
note="Great response!",
),
)
Async Support
All methods have async variants:
import asyncio
async def main():
async with Tracia(api_key="...") as client:
result = await client.arun_local(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}]
)
print(result.text)
asyncio.run(main())
Supported Providers
Via LiteLLM, Tracia supports 100+ providers including:
- OpenAI: gpt-4o, gpt-4, gpt-3.5-turbo, o1, o3
- Anthropic: claude-3-opus, claude-sonnet-4, claude-3-haiku
- Google: gemini-2.0-flash, gemini-2.5-pro
- And many more...
Error Handling
from tracia import TraciaError, TraciaErrorCode
try:
result = client.run_local(...)
except TraciaError as e:
if e.code == TraciaErrorCode.MISSING_PROVIDER_API_KEY:
print("Please set your API key")
elif e.code == TraciaErrorCode.PROVIDER_ERROR:
print(f"LLM error: {e.message}")
Configuration Options
client = Tracia(
api_key="...",
base_url="https://app.tracia.io", # Custom API URL
on_span_error=lambda e, span_id: print(f"Span error: {e}")
)
result = client.run_local(
model="gpt-4o",
messages=[...],
temperature=0.7,
max_output_tokens=1000,
timeout_ms=30000,
tags=["production"],
user_id="user_123",
session_id="session_456",
send_trace=True, # Set to False to disable tracing
)
Learn More
- Website: tracia.io
- Documentation: docs.tracia.io
- GitHub: github.com/tracia
License
MIT
Release files for tracia 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tracia-0.3.1.tar.gz | 33.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tracia-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 65.1 kB
Release files / tracia-0.3.1.tar.gz
| Download URL | tracia-0.3.1.tar.gz |
|---|---|
| Size | 33.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d00c2e167113d76c47e9700181e2dd2678e65b89fc4c3a216e02653b25aeb464
|
|
BLAKE2b-256 checksum How to use checksums |
0b72c07e08185a844f76814c9157b44cf049c134f6a0ec622cbe59dd59804209
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.13
|
Release files / tracia-0.3.1-py3-none-any.whl
| Download URL | tracia-0.3.1-py3-none-any.whl |
|---|---|
| Size | 31.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f97ec0f8999d330a1a439460f34ce2626a5af1e933642c7226c3ec3ece27ab2e
|
|
BLAKE2b-256 checksum How to use checksums |
9e5ef47a073ba94ab1cf9ca7492e334d35e87cd68977193db83c3e162e27e205
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.13
|