Skip to main content

The fastest way to collect human preference data for LLMs

Project description

feedloop

The fastest way to collect human preference data for LLMs.

feedloop is a free developer tool that lets you collect human feedback on LLM outputs — directly from your Python code, with zero configuration. Submit pairs of model responses, review them in a local browser UI, and export a fine-tuning dataset in minutes.


Features

  • Zero setuppip install feedloop and you're running
  • Local-first — everything runs on your machine, no cloud account needed
  • Non-blocking SDKfeedloop.compare() returns immediately, your script keeps running
  • Built-in review UI — side-by-side browser interface with keyboard shortcuts
  • DPO-ready export — outputs standard {"prompt", "chosen", "rejected"} JSONL
  • Uncertainty filtering — skip low-uncertainty comparisons automatically, focus human attention where it matters
  • Training script included — generates a ready-to-run TRL DPO fine-tuning script from your data
  • Session scoping — each run is isolated; data persists across sessions in SQLite
  • Model agnostic — works with OpenAI, Anthropic, Hugging Face, Ollama, or any LLM

Use Cases

  • Model comparison — compare GPT-4o vs Claude, or two versions of your own model
  • Fine-tuning data collection — build a DPO preference dataset without a labelling platform
  • Evaluation loops — quickly understand where your model falls short by seeing what humans prefer
  • Active learning — use uncertainty scores to only review the comparisons that matter most
  • Iterative improvement — collect feedback → fine-tune → re-run → repeat

Installation

pip install feedloop

Requires Python 3.10+. No other dependencies or accounts needed.


Quick Start

import feedloop

# Start the server (opens browser automatically)
feedloop.start()

# Submit pairs of outputs for review
feedloop.compare(
    prompt="Explain recursion to a 10-year-old.",
    outputs=[
        "Recursion is when a function calls itself...",
        "Imagine you're looking for a book in a library...",
    ],
    metadata={"model_a": "gpt-4o-mini", "model_b": "gpt-4o"},
)

# Rate in the browser, then export
feedloop.export("preferences.jsonl")

A browser tab opens at http://localhost:7856. Pick the better response with a click or keyboard shortcut (1, 2, or S to skip). When you're done, export to a DPO-ready JSONL file.


Uncertainty-Based Filtering

Only review comparisons where your model is unsure — skip the easy ones automatically:

feedloop.start(uncertainty_threshold=0.6)

feedloop.compare(
    prompt="...",
    outputs=[response_a, response_b],
    uncertainty=0.85,  # above threshold → sent to human
)

feedloop.compare(
    prompt="...",
    outputs=[response_a, response_b],
    uncertainty=0.3,   # below threshold → auto-skipped
)

Exported Data Format

{"prompt": "Explain recursion...", "chosen": "Imagine you're looking for a book...", "rejected": "Recursion is when a function calls itself..."}

Compatible with TRL DPOTrainer, OpenRLHF, and any custom pipeline that accepts preference pairs.


Documentation

Full guide, API reference, and examples: turingspark.com/tools/feedloop

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

feedloop-1.5.1.tar.gz (157.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

feedloop-1.5.1-py3-none-any.whl (116.3 kB view details)

Uploaded Python 3

File details

Details for the file feedloop-1.5.1.tar.gz.

File metadata

  • Download URL: feedloop-1.5.1.tar.gz
  • Upload date:
  • Size: 157.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for feedloop-1.5.1.tar.gz
Algorithm Hash digest
SHA256 88040b1e0998a44dc2c1a1b63d74c7a4e1799b45ed7a4684365474525be308ed
MD5 973c3bd89b5b443dd6b016e8a7d67600
BLAKE2b-256 4f0b5f166581868a5b74ab8663399e45cc4276a6ae77dd895a536a2455e79ec5

See more details on using hashes here.

Provenance

The following attestation bundles were made for feedloop-1.5.1.tar.gz:

Publisher: release.yml on turing-spark/feedloop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file feedloop-1.5.1-py3-none-any.whl.

File metadata

  • Download URL: feedloop-1.5.1-py3-none-any.whl
  • Upload date:
  • Size: 116.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for feedloop-1.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9cab21690f5854da0d24bce1bd19ca13ca31859cb016fffc3f2d6fab4088afb0
MD5 c605ad3e76c55f0a54c2ea021eff7c5f
BLAKE2b-256 fe78117b6b09ebe89aa1aa24041406949150ac5b152f642e56ff99538dbc6d26

See more details on using hashes here.

Provenance

The following attestation bundles were made for feedloop-1.5.1-py3-none-any.whl:

Publisher: release.yml on turing-spark/feedloop

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page