Custom Fields
Add extra fields to model_data_logs for custom tracking and monitoring needs.
Overview
The custom_fields parameter allows you to include additional fields in the encrypted model_data_logs sent to the RAIT API. These fields are merged with standard fields like prompt_id, ethical_dimensions, and telemetry data.
Single Evaluation
Use custom_fields to pass a dictionary of additional values:
from rait_connector import RAITClient
client = RAITClient()
result = client.evaluate(
prompt_id="123",
prompt_url="https://example.com/123",
timestamp="2025-12-11T10:00:00Z",
model_name="gpt-4",
model_version="1.0",
query="What is AI?",
response="AI is artificial intelligence...",
environment="production",
purpose="monitoring",
custom_fields={
"user_id": "user_123",
"session_id": "session_abc",
"custom_metric": 0.95,
"api_version": "v2.1",
"region": "us-east-1"
}
)
Batch Evaluation
For batch evaluation, custom_fields is specified per prompt:
from rait_connector import RAITClient
client = RAITClient()
prompts = [
{
"prompt_id": "batch-001",
"prompt_url": "https://example.com/prompt/001",
"timestamp": "2025-12-11T10:00:00Z",
"model_name": "gpt-4",
"model_version": "1.0",
"query": "What is AI?",
"response": "AI is...",
"environment": "production",
"purpose": "monitoring",
"custom_fields": {
"user_id": "user_123",
"session_id": "session_abc",
},
},
{
"prompt_id": "batch-002",
"prompt_url": "https://example.com/prompt/002",
"timestamp": "2025-12-11T10:01:00Z",
"model_name": "gpt-4",
"model_version": "1.0",
"query": "What is ML?",
"response": "ML is...",
"environment": "production",
"purpose": "monitoring",
"custom_fields": {
"user_id": "user_456",
"session_id": "session_def",
},
},
]
summary = client.evaluate_batch(prompts=prompts)
Use Cases
User Context Tracking
custom_fields = {
"user_id": current_user.id,
"organization_id": current_user.org_id,
"subscription_tier": current_user.subscription
}
Performance Monitoring
custom_fields = {
"response_time_ms": response_timer.elapsed(),
"tokens_used": token_counter.count,
"cache_hit": cache.was_hit()
}
A/B Testing
custom_fields = {
"experiment_id": "exp_123",
"variant": "variant_b",
"feature_flags": ["new_ui", "enhanced_search"]
}
Custom Business Metrics
custom_fields = {
"customer_segment": "enterprise",
"request_priority": "high",
"sla_tier": "gold",
"cost_center": "engineering"
}
Data Flow
- Base
model_data_logsis constructed with standard fields custom_fieldsdict is merged (if provided)- Complete
model_data_logsis encrypted - Encrypted data is sent to RAIT API
Best Practices
- Keep it simple: Only add fields you actually need
- Avoid PII: Don't include sensitive personal information
- Use meaningful names: Make field names descriptive and consistent
- Document custom fields: Keep track of what each field means