Tuned Tensor
DocsDashboard

Playground

Browse supported base models and your fine-tuned model artifacts. Interactive completions are disabled while hosted inference is not enabled.

Note: The tt CLI does not yet include playground commands. Use the dashboard Playground or the REST endpoints documented below.

Overview

The Playground is available at Dashboard → Playground and via two REST endpoints. It lists the fine-tunable base models configured in Tuned Tensor plus any fine-tuned model you have created through a run.

Key capabilities:

  • Single & compare mode — select one model or two side by side
  • System prompt — optionally prepend a system message
  • Temperature & max tokens — adjustable per request (0–2 temperature, 64–4 096 tokens)
  • Model inventory — base models and fine-tuned artifacts are listed from the same account-scoped API

Available Base Models

These models are available for hosted fine-tuning.

ModelContext Length
Qwen/Qwen3.5-2B131,072
Qwen/Qwen3.5-4B262,144
google/gemma-4-E2B-it128,000
google/gemma-4-E4B-it128,000
meta-llama/Llama-3.2-3B-Instruct128,000
microsoft/Phi-4-mini-instruct128,000
ibm-granite/granite-3.3-2b-instruct128,000
bigcode/starcoder2-3b16,384

Fine-tuned models you create through runs also appear in the model selector with their provider_model_id.

List Playground Models

GET /api/v1/playground/models

curl https://tunedtensor.com/api/v1/playground/models \
  -H "Authorization: Bearer tt_your_api_key"

Response:

{
  "data": {
    "base_models": [
      {
        "id": "Qwen/Qwen3.5-2B",
        "name": "Qwen3.5-2B",
        "type": "base"
      }
    ],
    "fine_tuned_models": [
      {
        "id": "user/Qwen3.5-2B-ft-abc123",
        "name": "Qwen3.5-2B-ft-abc123",
        "type": "fine-tuned",
        "base_model": "Qwen/Qwen3.5-2B"
      }
    ]
  }
}
FieldDescription
base_modelsSupported base models
fine_tuned_modelsYour fine-tuned models (includes base_model for reference)

Run a Completion

POST /api/v1/playground/completions returns 501 playground_unavailable when hosted inference is not enabled.

curl -X POST https://tunedtensor.com/api/v1/playground/completions \
  -H "Authorization: Bearer tt_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen/Qwen3.5-2B",
    "messages": [
      { "role": "system", "content": "You are a helpful assistant." },
      { "role": "user", "content": "Explain LoRA fine-tuning in one paragraph." }
    ],
    "temperature": 0.7,
    "max_tokens": 1024
  }'

Request Body

ParameterTypeDefaultDescription
modelstringModel ID (base or fine-tuned). Required.
messages{role, content}[]Chat messages. At least one required. Roles: system, user, assistant.
temperaturenumber0.7Sampling temperature (0–2).
max_tokensinteger1024Maximum tokens to generate (1–4 096).

Current Response

{
  "error": {
    "code": "playground_unavailable",
    "message": "Playground inference is unavailable for hosted fine-tuned models."
  }
}

Inference Response Fields

When interactive inference is enabled, successful responses use this shape:

FieldDescription
contentGenerated text from the model when inference is enabled
latency_msWall-clock inference time in milliseconds
usage.prompt_tokensTokens consumed by the input prompt
usage.completion_tokensTokens generated in the response

Error Codes

StatusCodeMeaning
400validation_errorInvalid request body (missing model, empty messages, etc.)
501playground_unavailableInteractive inference is not enabled for hosted fine-tuned models

Comparing Base vs Fine-Tuned

When interactive inference is enabled, a common workflow is to compare a base model against your fine-tuned version to verify that fine-tuning improved behaviour:

  1. Open the Playground and enable Compare mode
  2. Select the base model (e.g. Qwen/Qwen3.5-2B) in Model A
  3. Select your fine-tuned model in Model B
  4. Enter a system prompt and user message from your behaviour spec
  5. Click Run — if inference is enabled, both models run in parallel and responses appear side by side with latency and token metrics

Via the API, when inference is enabled, make two separate POST /api/v1/playground/completions calls with the same messages but different model values.