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
| Method | Path | Description |
|---|---|---|
| POST | /database/rlhf/interactions | Log an interaction |
| POST | /database/rlhf/interactions/batch | Batch log interactions |
| GET | /database/rlhf/interactions | List interactions |
| GET | /database/rlhf/interactions/{id} | Get interaction |
| PUT | /database/rlhf/interactions/{id}/feedback | Submit feedback |
| DELETE | /database/rlhf/interactions/{id} | Delete interaction |
| POST | /database/rlhf/interactions/compare | Compare two interactions |
| POST | /database/rlhf/sessions | Create session |
| GET | /database/rlhf/sessions | List 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}/start | Start session |
| POST | /database/rlhf/sessions/{id}/stop | Stop session |
| GET | /database/rlhf/stats | RLHF statistics |
| POST | /database/rlhf/export | Export RLHF data |