---
title: "RLHF"
description: "Reinforcement Learning from Human Feedback — collect, rate, and export agent interaction data"
canonical: "https://docs.ainative.studio/docs/zerodb/rlhf"
last-updated: "2026-10-13T21:42:35.442Z"
---

# RLHF

Source: https://docs.ainative.studio/docs/zerodb/rlhf

> Reinforcement Learning from Human Feedback — collect, rate, and export agent interaction data

## RLHF

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

## Log an Interaction

```bash
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

```bash
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

```bash
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:

```bash
## 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

```bash
## 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

```python
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 |
