Workflow Examples
Managing Requests & Sessions
Workflows for organizing interactions into requests and sessions, querying by time range, and cleaning up data.
Managing Requests & Sessions
Workflows for organizing interactions into requests and sessions, querying by time range, and cleaning up data. For method-level details, see the Requests API Reference.
Setup
from reflexio import ReflexioClient
client = ReflexioClient() # uses REFLEXIO_API_KEY env var
# Self-hosted: client = ReflexioClient(url_endpoint="http://localhost:8081")Basic Request Publishing
Publishing a Request
# Publish a request (generates profiles and playbook entries)
response = client.publish_interaction(
user_id="user_123",
interactions=[
{"role": "User", "content": "What's the weather like?"},
{"role": "Agent", "content": "I'll check the weather for you."}
],
source="web_app",
agent_version="v1.0.0",
wait_for_response=True
)
print(f"Success: {response.success}")Publishing with Session
# Group related requests together
client.publish_interaction(
user_id="user_123",
interactions=[...],
session_id="onboarding_session_001",
source="mobile_app",
agent_version="v1.0.0"
)Retrieving Requests
Get All Requests in a Session
# Retrieve all requests for a user
response = client.get_requests(user_id="user_456")
# Iterate through sessions
for session in response.sessions:
print(f"\nSession: {session.session_id}")
# Each session contains multiple requests
for request_data in session.requests:
request = request_data.request
interactions = request_data.interactions
print(f" Request ID: {request.request_id}")
print(f" Agent Version: {request.agent_version}")
print(f" Source: {request.source}")
print(f" Interaction Count: {len(interactions)}")
# Access individual interactions
for interaction in interactions:
print(f" - {interaction.role}: {interaction.content[:50]}...")Filter Requests by User
# Get all requests for a specific user with limit
response = client.get_requests(
user_id="user_123",
top_k=50
)
# Count requests per session
for session in response.sessions:
print(f"Session: {session.session_id}")
print(f" Requests: {len(session.requests)}")
# Filter by time range
from datetime import datetime, timedelta
response = client.get_requests(
user_id="user_123",
start_time=datetime.now() - timedelta(days=7),
end_time=datetime.now()
)Deleting Requests
Delete a Single Request
# Delete a specific request and all its interactions
response = client.delete_request(
request_id="req_12345",
wait_for_response=True
)
if response.success:
print(f"Deleted: {response.message}")Delete an Entire Session
# Delete all requests in a session (useful for cleanup)
response = client.delete_session(
session_id="session_001",
wait_for_response=True
)
if response.success:
print(f"Deleted {response.deleted_requests_count} requests")
print(f"Message: {response.message}")Fire-and-Forget Deletion
# Non-blocking deletion (doesn't wait for response)
client.delete_session(
session_id="old_session",
wait_for_response=False
)
# Continues immediately without waitingAdvanced Patterns
Session-Based Organization
import uuid
# Create a unique session ID
session_id = str(uuid.uuid4())
# Track all requests in a session (using dict format)
interactions_in_session = [
[{"role": "User", "content": "First question"}],
[{"role": "User", "content": "Follow-up question"}],
[{"role": "User", "content": "Final question"}]
]
for interaction_batch in interactions_in_session:
client.publish_interaction(
user_id="user_123",
interactions=interaction_batch,
session_id=f"session_{session_id}",
source="chat_interface"
)
# Later: retrieve entire session
session_data = client.get_requests(user_id="user_123")Cleaning Up Old Sessions
# List of completed sessions to clean up
completed_sessions = [
"session_2024_01",
"session_2024_02",
"test_run_abc"
]
# Delete all at once
for session_id in completed_sessions:
response = client.delete_session(
session_id=session_id,
wait_for_response=True
)
if response.success:
print(f"Cleaned up {session_id}: {response.deleted_count} requests deleted")Common Patterns
Pattern 1: Session with Cleanup
session_id = "temp_session_123"
try:
# Run session
client.publish_interaction(
user_id="user_test",
interactions=[...],
session_id=session_id
)
# Retrieve results
results = client.get_requests(user_id="user_test")
# Process results...
finally:
# Always clean up
client.delete_session(
session_id=session_id,
wait_for_response=True
)Pattern 2: Versioned Sessions
from datetime import datetime
# Create versioned session name
session_version = f"session_{datetime.now().strftime('%Y%m%d')}"
# Publish with version tracking
client.publish_interaction(
user_id="user_123",
interactions=[...],
session_id=session_version,
agent_version="v1.0"
)