Skip to main content

Playground

Test and experiment with AI models directly in your browser.

Interface Overview

The Playground provides an interactive chat interface with configuration options:

┌─────────────────────────────────────────────────────┐
│ Model Selection │ Parameters │
├───────────────────────────┼────────────────────────┤
│ │ Temperature: [slider] │
│ Chat Interface │ Max Tokens: [input] │
│ │ Top P: [slider] │
│ [System prompt input] │ Stream: [toggle] │
│ │ │
│ User: Hello! │ ───────────────── │
│ Assistant: Hi there! │ [New Chat] button │
│ │ [Docs] button │
│ [Message input box] │ [Code] button │
└───────────────────────────┴────────────────────────┘

Model Selection

Choose from your available models using the dropdown at the top of the interface. Only models that are currently running (actively deployed) are shown in the selection list.

Chat Interface

System Prompt

Set the assistant's behavior:

You are a helpful coding assistant specializing in Python.

Open the System Message modal to view or edit the system prompt. Changes apply to new conversations.

Conversation

  • Type messages in the input box
  • Press Enter or click Send
  • View assistant responses in real-time (with streaming)
  • Conversation context is maintained

Message Actions

Hover over any message to reveal inline actions:

  • Copy — copy message content to the clipboard
  • Regenerate (assistant messages) — discard the current response and generate a new one for the previous user prompt
  • Edit (user messages) — open the prompt inline for editing; sending replaces the original message and regenerates everything that came after it

Regenerate and Edit are available in chat mode only. Image generation keeps a one-shot flow (no edit/regenerate). These actions affect the live session only — they do not modify any saved conversation history.

Cancelling a Response

Click Stop while a streaming response is in flight to cancel it. The partial response that has already arrived stays visible with a Cancelled badge so you can read what was generated before the cancel. Switching tabs or navigating away during a stream also cancels the request, sending a real client-disconnect upstream.

Cancelled responses are billed for the tokens that were already produced (see Cancelling a Stream).

Parameters

Temperature (0.0 - 2.0)

Controls randomness:

  • 0.0: Deterministic, focused
  • 0.7: Balanced (default)
  • 1.5+: Creative, varied

Max Tokens

Maximum tokens to generate:

  • Range: 1 - model's context limit
  • Default: 4096 (automatically capped to the model's context window)

Top P (0.0 - 1.0)

Nucleus sampling parameter:

  • 0.95: Consider top 95% probability mass (default)
  • 1.0: Consider all tokens
  • Lower values = more focused output

Frequency Penalty / Presence Penalty

Control repetition in generated text:

  • Frequency Penalty: Reduces likelihood of repeating tokens proportional to how often they appear
  • Presence Penalty: Reduces likelihood of repeating any token that has appeared at all

Seed

Set a specific seed value for reproducible outputs (when supported by the model).

Stop Sequences

Define custom strings where the model should stop generating. Useful for controlling output boundaries.

Stream / Background Toggles

  • Stream: See the response as it generates token-by-token
  • Background: Submit the request as a background job and retrieve the result later from Jobs
note

Stream and Background modes are mutually exclusive -- enabling one automatically disables the other.

Thinking Mode

For models that support extended reasoning (models with a reasoning parser), a Thinking Mode toggle is available in the parameters panel.

  • The toggle only appears for compatible models. For models where the provider sets thinking at serve time, the toggle is not shown.
  • When enabled, the model may include a reasoning trace in its response. vLLM reasoning models return this as a separate reasoning field; classic <think> tag wrapping is also handled transparently.
  • In the Playground, this reasoning trace is displayed as a collapsible violet "Thinking Process" panel above the response content, allowing you to inspect the model's chain-of-thought. The panel appears live during streaming — you see the model's reasoning build up token-by-token in its own block rather than mixed into the final answer.
  • Some reasoning models return their complete answer in the reasoning channel (with no content value). The Playground renders the answer in both streaming and non-streaming modes regardless of which channel the model used — you don't need to adjust anything.

Reasoning Effort

Some reasoning models accept a reasoning_effort parameter that controls how much computation they invest per request. When the selected model supports it, a Low / Medium / High segmented control appears in the request-options section, below the Thinking Mode toggle.

EffortTypical useTrade-off
LowSimple classification, formatting, short answersFast, minimal reasoning tokens
Medium (default)General chat, most everyday promptsBalanced
HighComplex math, code, multi-step analysisSlower, larger reasoning trace

The selector is only shown for reasoning-capable models that expose the reasoning_effort parameter. Other reasoning models ignore the parameter at the engine level, so hiding the selector prevents a confusing no-op.

When you send a request via the API directly, forward the same values:

{
"model": "gpt-oss-120b",
"messages": [{"role": "user", "content": "Explain the Monty Hall problem."}],
"reasoning_effort": "high"
}

Invalid values are rejected with a 400 (Input should be 'none', 'low', 'medium' or 'high'). Note: none is accepted by the schema but some reasoning models reject it at request time — stick to the three levels surfaced in the UI.

Code View

Click Code in the header to see the equivalent API call. The generated snippets use the model's public slug (e.g. gpt-oss-120b) in the model= parameter — the same identifier returned by /v1/models. Copy-paste produces a request that matches what the SDK and the platform agree on.

Python

from openai import OpenAI

client = OpenAI(
api_key="sk-proj-your-api-key",
base_url="https://api.bulutistan.ai/v1"
)

response = client.chat.completions.create(
model="meta-llama/Llama-3.1-8B-Instruct",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
temperature=0.7,
max_tokens=1024
)

cURL

curl https://api.bulutistan.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-proj-your-api-key" \
-d '{
"model": "meta-llama/Llama-3.1-8B-Instruct",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello!"}
],
"temperature": 0.7,
"max_tokens": 1024
}'

Tips

Testing Prompts

  1. Start with simple prompts
  2. Iterate on system prompt
  3. Test edge cases
  4. Copy the Code view snippet for successful configurations

Comparing Models

  1. Open multiple browser tabs
  2. Use same prompt across models
  3. Compare response quality and speed

Debugging

If responses seem wrong:

  1. Check system prompt
  2. Try temperature 0 for consistency
  3. Reduce max_tokens to see truncation issues
  4. Review conversation history for context issues

Image Generation Mode

The Playground supports image generation alongside chat completions. When an image-capable model is selected, the interface switches to image generation mode.

Parameters

ParameterDescription
PromptText description of the image to generate
SizeOutput image dimensions (e.g., 1024x1024)
Inference StepsNumber of diffusion steps (higher = more detail, slower)
Guidance ScaleHow closely to follow the prompt (higher = more literal)
SeedFor reproducible generation
Negative PromptDescribe what to avoid in the generated image
Image CountNumber of images to generate per request (1-10)

Usage

  • Generated images are displayed directly in the playground
  • Download individual images to your local machine

File Attachments

When using a model with vision capabilities, you can attach files to your messages.

Supported Files

Supported file types depend on the model provider:

ProviderSupported Types
vLLM modelsPDF documents only
External OpenAI-compatible modelsImages (PNG, JPEG, GIF, WebP) and documents (PDF)

Limits

LimitValue
Max files per message10
Max size per file50 MB
Max total size per message100 MB

How to Use

  1. Click the attachment icon in the message input area
  2. Select one or more files from your device
  3. Files appear as thumbnails below the input
  4. Type your message and send -- the model will analyze both the text and attached files
note

File attachments are only available for models with vision capabilities. The attachment button will appear automatically when a compatible model is selected.

To use image generation:

  1. Select an image-capable model from the model dropdown
  2. Enter a descriptive prompt
  3. Adjust size and count parameters as needed
  4. Click Generate
  5. View and download the resulting images