freesolo
freesolo is the published Python SDK for Freesolo's recording OpenAI
drop-in client and the environment and dataset contracts used by generated
repositories.
The public SDK surface includes:
freesolo.OpenAIandfreesolo.AsyncOpenAIfreesolo.environmentsfreesolo.datasets
Install
pip install freesolo
From source:
cd freesolo-sdk
export PYTHONPATH="$PWD/pypi"
OpenAI Drop-in Client
Use OpenAI or AsyncOpenAI anywhere you would use the official Python
client. A Freesolo API key is required through FREESOLO_API_KEY or the client
options. Requests go through the Freesolo recording proxy and chat completions
are recorded by default.
from freesolo import AsyncOpenAI, OpenAI
client = OpenAI()
async_client = AsyncOpenAI()
completion = client.chat.completions.create(
model="openai/gpt-5.2",
messages=[{"role": "user", "content": "hello"}],
extra_body={"metadata": {"dataset": "support"}},
)
Set model to a deployed Freesolo model id to call that fine-tuned model with
the same API. Recording controls use the official extra_body escape hatch, so
the native OpenAI method signatures and return types remain unchanged.
completion = client.chat.completions.create(
model="adapter-123",
messages=[{"role": "user", "content": "hello"}],
extra_body={"store": False},
)
Dataset Contract
Dataset records use input and optional output.
{ "id": "example-1", "input": "Say yes.", "output": "yes" }
The SDK does not accept aliases such as prompt, query, task,
ground_truth, expected_output, or completion.
Environment Contract
Environments are Python modules that expose load_environment() and return an
EnvironmentSingleTurn or EnvironmentMultiTurn instance. Environment code
uses TaskExample.input and TaskExample.output when building prompts and
scoring responses.
Single-turn environments build their initial episode through start_episode().
The SDK prepends the supplied contract text as a system message when the
environment did not already provide one, so SFT rows and environment scoring see
the same policy prompt. Multi-turn environments own their start_episode()
implementation and should include any task-specific initial system message
there.
The SDK does not handle remote artifact publishing or resolution.
Example
from freesolo.datasets import load_dataset
from freesolo.environments import load_environment
dataset = load_dataset("support.jsonl")
environment = load_environment("freesolo/environment.py:load_environment")
print(len(dataset.examples))
print(type(environment).__name__)
API Guidance
Use freesolo.datasets for task examples and freesolo.environments for environment
loading/scoring interfaces.
- No command-line help surface is published as part of the SDK contract.
- Hidden modules remain available in source history for internal tooling only.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file freesolo-0.3.0.tar.gz.
File metadata
- Download URL: freesolo-0.3.0.tar.gz
- Upload date:
- Size: 324.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3c0295f5611368f870f49abac4fe9a6a15313bdd3a7257335c9d197326023fd0
|
|
| MD5 |
d871665d2376cfc1cec238d884bd3e6b
|
|
| BLAKE2b-256 |
be8f9bfe646664444a4b338451a0d85df890398e27bc8d54184ebee3bc982f4e
|
File details
Details for the file freesolo-0.3.0-py3-none-any.whl.
File metadata
- Download URL: freesolo-0.3.0-py3-none-any.whl
- Upload date:
- Size: 43.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e8412b61de52229eb824bbc400cccb0d4d060ba913a45446d9b1f61dff93b1b
|
|
| MD5 |
dc599889784f7f35b38e563ac3366b16
|
|
| BLAKE2b-256 |
66e621f11c36a30622fca81e63c5224661b9d177a239d77b5ee8dd137b10d2f8
|