Palantyra

Session & User Tracking

Track sessions and users across requests

Session & User Tracking

Session Correlation

Group related LLM calls into sessions for better analysis:

import palantyra
import uuid

# Generate session ID
session_id = str(uuid.uuid4())

# Method 1: Set at trace level
palantyra.set_trace_session_id(session_id)

# All subsequent calls in this trace belong to the session
response1 = client.chat.completions.create(...)
response2 = client.chat.completions.create(...)

# Method 2: Use with decorator
@palantyra.observe(session_id=session_id)
def chat_conversation():
    response1 = client.chat.completions.create(...)
    response2 = client.chat.completions.create(...)
    return [response1, response2]

User Tracking

import palantyra

# Track which user made the request
user_id = "user_abc123"
palantyra.set_trace_user_id(user_id)

# Now all traces include user information
response = client.chat.completions.create(...)

# Or use with context manager
with palantyra.start_as_current_span(
    name="User Chat",
    user_id=user_id,
    session_id=session_id
):
    response = client.chat.completions.create(...)

Multi-Turn Conversation Example

import palantyra
import uuid

def chat_session(user_id: str):
    session_id = str(uuid.uuid4())
    
    with palantyra.start_as_current_span(
        name="Chat Session",
        session_id=session_id,
        user_id=user_id,
        metadata={"conversation_type": "support"}
    ):
        messages = []
        
        # First message
        palantyra.set_span_attributes({"turn": 1})
        response1 = client.chat.completions.create(
            model="gpt-4",
            messages=[{"role": "user", "content": "Hello"}]
        )
        messages.append(response1.choices[0].message)
        
        # Second message
        palantyra.set_span_attributes({"turn": 2})
        response2 = client.chat.completions.create(
            model="gpt-4",
            messages=messages + [
                {"role": "user", "content": "How are you?"}
            ]
        )
        
        return response2

# Usage
result = chat_session("user_123")