Skip to main content

RLHF

ZeroDB's RLHF system captures agent interactions and human feedback for model fine-tuning and quality analysis.

Log an Interaction

curl -X POST https://api.ainative.studio/api/v1/projects/{project_id}/database/rlhf/interactions \
-H "x-api-key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Explain async/await in Python",
"response": "Async/await is a syntax for writing asynchronous code...",
"metadata": {
"model": "qwen-coder-32b",
"latency_ms": 840
}
}'

Submit Feedback on an Interaction

curl -X PUT https://api.ainative.studio/api/v1/projects/{project_id}/database/rlhf/interactions/{interaction_id}/feedback \
-H "x-api-key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"rating": 5,
"feedback": "Clear and accurate explanation",
"preferred": true
}'

Compare Two Interactions

curl -X POST https://api.ainative.studio/api/v1/projects/{project_id}/database/rlhf/interactions/compare \
-H "x-api-key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"interaction_a": "interaction-id-1",
"interaction_b": "interaction-id-2",
"preferred": "interaction-id-1",
"reason": "More concise and accurate"
}'

Sessions

Group related interactions into RLHF sessions for structured data collection:

# Create a session
curl -X POST https://api.ainative.studio/api/v1/projects/{project_id}/database/rlhf/sessions \
-H "x-api-key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Code review feedback — May 2026",
"description": "Human ratings on code explanation quality"
}'

# Start the session
curl -X POST https://api.ainative.studio/api/v1/projects/{project_id}/database/rlhf/sessions/{session_id}/start \
-H "x-api-key: $API_KEY"

# Stop the session
curl -X POST https://api.ainative.studio/api/v1/projects/{project_id}/database/rlhf/sessions/{session_id}/stop \
-H "x-api-key: $API_KEY"

Stats and Export

# Get RLHF statistics
curl https://api.ainative.studio/api/v1/projects/{project_id}/database/rlhf/stats \
-H "x-api-key: $API_KEY"

# Export all RLHF data
curl -X POST https://api.ainative.studio/api/v1/projects/{project_id}/database/rlhf/export \
-H "x-api-key: $API_KEY"

Python SDK

import requests

API_KEY = "your-api-key"
PROJECT_ID = "your-project-id"
BASE = f"https://api.ainative.studio/api/v1/projects/{PROJECT_ID}/database/rlhf"
headers = {"x-api-key": API_KEY, "Content-Type": "application/json"}

# Log an interaction
r = requests.post(f"{BASE}/interactions", headers=headers, json={
"prompt": "Write a Python function to sort a list",
"response": "def sort_list(lst): return sorted(lst)",
"metadata": {"model": "qwen-coder-32b"}
})
interaction_id = r.json()["interaction_id"]

# Submit human feedback
requests.put(f"{BASE}/interactions/{interaction_id}/feedback", headers=headers, json={
"rating": 4,
"feedback": "Correct but could include examples",
"preferred": True
})

# Get stats
stats = requests.get(f"{BASE}/stats", headers=headers).json()
print(f"Total interactions: {stats['total_interactions']}")
print(f"Average rating: {stats['avg_rating']}")

Endpoints

MethodPathDescription
POST/database/rlhf/interactionsLog an interaction
POST/database/rlhf/interactions/batchBatch log interactions
GET/database/rlhf/interactionsList interactions
GET/database/rlhf/interactions/{id}Get interaction
PUT/database/rlhf/interactions/{id}/feedbackSubmit feedback
DELETE/database/rlhf/interactions/{id}Delete interaction
POST/database/rlhf/interactions/compareCompare two interactions
POST/database/rlhf/sessionsCreate session
GET/database/rlhf/sessionsList sessions
GET/database/rlhf/sessions/{id}Get session
PUT/database/rlhf/sessions/{id}Update session
DELETE/database/rlhf/sessions/{id}Delete session
POST/database/rlhf/sessions/{id}/startStart session
POST/database/rlhf/sessions/{id}/stopStop session
GET/database/rlhf/statsRLHF statistics
POST/database/rlhf/exportExport RLHF data